Mercurial > projects > qtd
comparison cmake/FindD.cmake @ 181:b426da0c9720
CMake: New option D_MODULES_PER_OBJECT.
Max number of modules per object file.
author | SokoL_SD |
---|---|
date | Fri, 03 Jul 2009 14:25:58 +0000 |
parents | 52da31f967f0 |
children | d3383b16f1d7 |
comparison
equal
deleted
inserted
replaced
180:39921f499a22 | 181:b426da0c9720 |
---|---|
62 set(opt_tmp "ON") | 62 set(opt_tmp "ON") |
63 else(D_IS_MARS) | 63 else(D_IS_MARS) |
64 set(opt_tmp "OFF") | 64 set(opt_tmp "OFF") |
65 endif(D_IS_MARS) | 65 endif(D_IS_MARS) |
66 option(SINGLE_D_OBJECT "Build all d sources to one object file" ${opt_tmp}) | 66 option(SINGLE_D_OBJECT "Build all d sources to one object file" ${opt_tmp}) |
67 if(SINGLE_D_OBJECT AND D_IS_LLVM) | 67 if(D_IS_LLVM) |
68 set(D_FLAGS ${D_FLAGS} -singleobj) | 68 set(D_FLAGS ${D_FLAGS} -singleobj) |
69 endif(SINGLE_D_OBJECT AND D_IS_LLVM) | 69 endif(D_IS_LLVM) |
70 set(D_MODULES_PER_OBJECT 10000 CACHE STRING "Max number of modules per object file") | |
70 endif(NOT ONE_BUILD_COMMAND) | 71 endif(NOT ONE_BUILD_COMMAND) |
71 | 72 |
72 ## Specifics flags for build configurations. | 73 ## Specifics flags for build configurations. |
73 ## TODO: Add another targets. | 74 ## TODO: Add another targets. |
74 set(D_RELEASE_FLAGS -O -release) | 75 set(D_RELEASE_FLAGS -O -release) |
207 DEPENDS ${d_source_p} ${depends_tmp} | 208 DEPENDS ${d_source_p} ${depends_tmp} |
208 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | 209 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
209 ) | 210 ) |
210 endforeach (d_source_p_tmp ${SOURCES_tmp}) | 211 endforeach (d_source_p_tmp ${SOURCES_tmp}) |
211 else(NOT SINGLE_D_OBJECT) | 212 else(NOT SINGLE_D_OBJECT) |
212 set(object_tmp ${tmp_dir_tmp}/${target}${D_OBJECT_SUFFIX}) | 213 set(count_objects_tmp 0) |
213 set(d_obj_out_tmp ${${objects_list}}) | 214 set(files${count_objects_tmp}_tmp ) |
214 obj_path(d_obj_out_tmp) | 215 set(counter_tmp 0) |
215 set(parameters_tmp ${FLAGS_tmp} -c ${SOURCES_tmp} -of${object_tmp}) | 216 set(files_tmp ) |
216 set(parameters_list_file_tmp ${tmp_dir_tmp}/parameters_obj) | 217 set(objects_tmp ) |
217 if(CMAKE_HOST_WIN32) | 218 foreach (d_source_p_tmp ${SOURCES_tmp}) |
218 file(REMOVE ${parameters_list_file_tmp}) | 219 math(EXPR counter_tmp "${counter_tmp} + 1") |
219 foreach(arg_tmp ${parameters_tmp}) | 220 set(files${count_objects_tmp}_tmp ${files${count_objects_tmp}_tmp} ${d_source_p_tmp}) |
220 file(APPEND ${parameters_list_file_tmp} "${arg_tmp}\n") | 221 if(counter_tmp GREATER D_MODULES_PER_OBJECT) |
221 endforeach(arg_tmp) | 222 math(EXPR count_objects_tmp "${count_objects_tmp} + 1") |
222 set(param_tmp @${parameters_list_file_tmp}) | 223 set(files${count_objects_tmp}_tmp ) |
223 elseif(CMAKE_HOST_UNIX) | 224 set(counter_tmp 0) |
224 set(param_tmp ${parameters_tmp}) | 225 endif(counter_tmp GREATER D_MODULES_PER_OBJECT) |
225 endif(CMAKE_HOST_WIN32) | 226 endforeach (d_source_p_tmp ${SOURCES_tmp}) |
226 #get_imported_files(depends_tmp ${ARGN}) | 227 |
227 add_custom_command(OUTPUT "${object_tmp}" | 228 if(files${count_objects_tmp}_tmp) |
228 COMMAND "${DC}" | 229 math(EXPR count_objects_tmp "${count_objects_tmp} + 1") |
229 ARGS ${param_tmp} | 230 endif(files${count_objects_tmp}_tmp) |
230 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | 231 |
231 DEPENDS ${SOURCES_tmp} ${depends_tmp} | 232 set(id_tmp 0) |
232 COMMENT "" | 233 while(id_tmp LESS ${count_objects_tmp}) |
233 ) | 234 set(object_tmp ${tmp_dir_tmp}/${target}${id_tmp}${D_OBJECT_SUFFIX}) |
234 set(${objects_list} ${object_tmp}) | 235 set(d_obj_out_tmp ${${object_tmp}}) |
236 obj_path(d_obj_out_tmp) | |
237 set(parameters_tmp ${FLAGS_tmp} -c ${files${id_tmp}_tmp} -of${object_tmp}) | |
238 set(parameters_list_file_tmp ${tmp_dir_tmp}/parameters${id_tmp}_obj) | |
239 if(CMAKE_HOST_WIN32) | |
240 file(REMOVE ${parameters_list_file_tmp}) | |
241 foreach(arg_tmp ${parameters_tmp}) | |
242 file(APPEND ${parameters_list_file_tmp} "${arg_tmp}\n") | |
243 endforeach(arg_tmp) | |
244 set(param_tmp @${parameters_list_file_tmp}) | |
245 elseif(CMAKE_HOST_UNIX) | |
246 set(param_tmp ${parameters_tmp}) | |
247 endif(CMAKE_HOST_WIN32) | |
248 #get_imported_files(depends_tmp ${ARGN}) | |
249 add_custom_command(OUTPUT "${object_tmp}" | |
250 COMMAND "${DC}" | |
251 ARGS ${param_tmp} | |
252 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
253 DEPENDS ${files${id_tmp}_tmp} ${depends_tmp} | |
254 COMMENT "" | |
255 ) | |
256 set(objects_tmp ${objects_tmp} ${object_tmp}) | |
257 math(EXPR id_tmp "${id_tmp} + 1") | |
258 endwhile(id_tmp LESS ${count_objects_tmp}) | |
259 | |
260 set(${objects_list} ${objects_tmp}) | |
235 endif(NOT SINGLE_D_OBJECT) | 261 endif(NOT SINGLE_D_OBJECT) |
236 #add_custom_target(${target} DEPENDS "${${objects_list}}") | 262 #add_custom_target(${target} DEPENDS "${${objects_list}}") |
237 endmacro(compile_d_files objects_list) | 263 endmacro(compile_d_files objects_list) |
238 | 264 |
239 | 265 |