Mercurial > projects > qtd
comparison CMakeLists.txt @ 314:80b52f5e97b6 lifetime
Structure without common root dir
author | maxter <spambox@d-coding.com> |
---|---|
date | Wed, 23 Dec 2009 23:17:36 +0200 |
parents | 34a37904ff77 |
children |
comparison
equal
deleted
inserted
replaced
313:cb7fb9195175 | 314:80b52f5e97b6 |
---|---|
40 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) | 40 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) |
41 FIND_PACKAGE(D REQUIRED) | 41 FIND_PACKAGE(D REQUIRED) |
42 | 42 |
43 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR "${CMAKE_INSTALL_PREFIX}" STREQUAL "") | 43 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR "${CMAKE_INSTALL_PREFIX}" STREQUAL "") |
44 set(CMAKE_INSTALL_PREFIX | 44 set(CMAKE_INSTALL_PREFIX |
45 ${DC_PATH} CACHE PATH "QtD install prefix" | 45 ${DC_PATH} CACHE PATH "QtD install prefix" |
46 ) | 46 ) |
47 endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR "${CMAKE_INSTALL_PREFIX}" STREQUAL "") | 47 endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR "${CMAKE_INSTALL_PREFIX}" STREQUAL "") |
48 | 48 |
49 # Check D compiler version | 49 # Check D compiler version |
50 if(D_VERSION EQUAL "1") | 50 if(D_VERSION EQUAL "1") |
51 if (D_FRONTEND LESS "041") | 51 if (D_FRONTEND LESS "041") |
52 message(STATUS "Minimum required version of D compiler is 1.041 (or compiler based on this version)") | 52 message(STATUS "Minimum required version of D compiler is 1.041 (or compiler based on this version)") |
53 endif(D_FRONTEND LESS "041") | 53 endif(D_FRONTEND LESS "041") |
54 set(D_TARGET d1-tango CACHE INTERNAL "") | 54 set(D_TARGET d1-tango CACHE INTERNAL "") |
55 elseif(D_VERSION EQUAL "2") | 55 elseif(D_VERSION EQUAL "2") |
56 set(D_TARGET d2-phobos CACHE INTERNAL "") | 56 set(D_TARGET d2-phobos CACHE INTERNAL "") |
57 endif(D_VERSION EQUAL "1") | 57 endif(D_VERSION EQUAL "1") |
76 # System specific settings. | 76 # System specific settings. |
77 if(CMAKE_HOST_WIN32) | 77 if(CMAKE_HOST_WIN32) |
78 set(implib implib) | 78 set(implib implib) |
79 find_program(IMPLIB ${implib}) | 79 find_program(IMPLIB ${implib}) |
80 if (NOT IMPLIB) | 80 if (NOT IMPLIB) |
81 message(FATAL_ERROR "implib is not found. You can donwload it from http://ftp.digitalmars.com/bup.zip") | 81 message(FATAL_ERROR "implib is not found. You can donwload it from http://ftp.digitalmars.com/bup.zip") |
82 endif (NOT IMPLIB) | 82 endif (NOT IMPLIB) |
83 if(D_IS_MARS) | 83 if(D_IS_MARS) |
84 set(GEN_OPT ${GEN_OPT} --cpp_shared) | 84 set(GEN_OPT ${GEN_OPT} --cpp_shared) |
85 add_definitions(-DCPP_SHARED) | 85 add_definitions(-DCPP_SHARED) |
86 endif(D_IS_MARS) | 86 endif(D_IS_MARS) |
93 foreach(package_big ${all_packages}) | 93 foreach(package_big ${all_packages}) |
94 string(TOLOWER ${package_big} package) | 94 string(TOLOWER ${package_big} package) |
95 string(TOUPPER ${package_big} package_upper) | 95 string(TOUPPER ${package_big} package_upper) |
96 option(BUILD_QT_${package_upper} "Build Qt${package_big}" "ON") | 96 option(BUILD_QT_${package_upper} "Build Qt${package_big}" "ON") |
97 if(BUILD_QT_${package_upper}) | 97 if(BUILD_QT_${package_upper}) |
98 set(packages ${packages} ${package}) | 98 set(packages ${packages} ${package}) |
99 endif(BUILD_QT_${package_upper}) | 99 endif(BUILD_QT_${package_upper}) |
100 endforeach(package_big ${all_packages}) | 100 endforeach(package_big ${all_packages}) |
101 | 101 |
102 add_subdirectory(generator) | 102 add_subdirectory(generator) |
103 | 103 |
118 else(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) | 118 else(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) |
119 set(cd_path ${CMAKE_BINARY_DIR}/build) | 119 set(cd_path ${CMAKE_BINARY_DIR}/build) |
120 endif(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) | 120 endif(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) |
121 | 121 |
122 make_native_path(cd_path) | 122 make_native_path(cd_path) |
123 add_custom_command(TARGET main POST_BUILD | 123 add_custom_command(TARGET main POST_BUILD |
124 COMMAND ${CMAKE_COMMAND} ARGS -E make_directory ${CMAKE_BINARY_DIR}/build | 124 COMMAND ${CMAKE_COMMAND} ARGS -E make_directory ${CMAKE_BINARY_DIR}/build |
125 COMMAND cd ARGS ${cd_path} && ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} -DSECOND_RUN=1 ${CMAKE_SOURCE_DIR} && ${make_util} | 125 COMMAND cd ARGS ${cd_path} && ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} -DSECOND_RUN=1 ${CMAKE_SOURCE_DIR} && ${make_util} |
126 COMMENT "" | 126 COMMENT "" |
127 ) | 127 ) |
128 | 128 |
129 ## Make commands. | 129 ## Make commands. |
130 set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_BINARY_DIR}/build) | 130 set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_BINARY_DIR}/build) |
131 add_custom_target(install | 131 add_custom_target(install |
132 COMMAND cd ${CMAKE_BINARY_DIR}/build && ${make_util} install | 132 COMMAND cd ${CMAKE_BINARY_DIR}/build && ${make_util} install |
133 COMMENT "" | 133 COMMENT "" |
134 ) | 134 ) |
135 add_dependencies(install preinstall) | 135 add_dependencies(install preinstall) |
136 | 136 |
137 ##-------------------------------------------- | 137 ##-------------------------------------------- |
138 ## CPack. | 138 ## CPack. |
139 ##-------------------------------------------- | 139 ##-------------------------------------------- |
204 | 204 |
205 macro(qtd_add_resource output) | 205 macro(qtd_add_resource output) |
206 set (params NAME OPTIONS) | 206 set (params NAME OPTIONS) |
207 qtd_parse_params (RESOURCES params ${ARGN}) | 207 qtd_parse_params (RESOURCES params ${ARGN}) |
208 if(NAME_tmp) | 208 if(NAME_tmp) |
209 set(OPTIONS_tmp ${OPTIONS_tmp} -name ${NAME_tmp}) | 209 set(OPTIONS_tmp ${OPTIONS_tmp} -name ${NAME_tmp}) |
210 endif(NAME_tmp) | 210 endif(NAME_tmp) |
211 qtd_command ("${output}" "${DRCC}" "${OPTIONS_tmp}" "qrc_" | 211 qtd_command ("${output}" "${DRCC}" "${OPTIONS_tmp}" "qrc_" |
212 "Generate" ${RESOURCES_tmp}) | 212 "Generate" ${RESOURCES_tmp}) |
213 endmacro(qtd_add_resource output) | 213 endmacro(qtd_add_resource output) |
214 | 214 |
215 macro(qtd_wrap_ui output) | 215 macro(qtd_wrap_ui output) |
216 set (params OPTIONS) | 216 set (params OPTIONS) |
217 qtd_parse_params (UI params ${ARGN}) | 217 qtd_parse_params (UI params ${ARGN}) |
218 qtd_command ("${output}" "${DUIC}" "${OPTIONS_tmp}" "uic_" | 218 qtd_command ("${output}" "${DUIC}" "${OPTIONS_tmp}" "uic_" |
219 "Generate" ${UI_tmp}) | 219 "Generate" ${UI_tmp}) |
220 endmacro(qtd_wrap_ui output) | 220 endmacro(qtd_wrap_ui output) |
221 | 221 |
222 macro(qtd_command output command options prefix comment) | 222 macro(qtd_command output command options prefix comment) |
223 foreach(file "${ARGN}") | 223 foreach(file "${ARGN}") |
224 ## Test an exist of the input file. | 224 ## Test an exist of the input file. |
225 get_filename_component(file_path ${file} PATH) | 225 get_filename_component(file_path ${file} PATH) |
226 get_filename_component(file_name ${file} NAME_WE) | 226 get_filename_component(file_name ${file} NAME_WE) |
227 get_filename_component(file_ext ${file} EXT) | 227 get_filename_component(file_ext ${file} EXT) |
228 | 228 |
229 set(out ${CMAKE_CURRENT_BINARY_DIR}/${file_path}${prefix}${file_name}.d) | 229 set(out ${CMAKE_CURRENT_BINARY_DIR}/${file_path}${prefix}${file_name}.d) |
230 add_custom_command(OUTPUT "${out}" | 230 add_custom_command(OUTPUT "${out}" |
231 COMMAND "${command}" | 231 COMMAND "${command}" |
232 ARGS ${options} ${file} -o ${out} | 232 ARGS ${options} ${file} -o ${out} |
233 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | 233 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
234 DEPENDS ${file} | 234 DEPENDS ${file} |
235 COMMENT "${comment} ${file}" | 235 COMMENT "${comment} ${file}" |
236 ) | 236 ) |
237 set(${output} ${${output}} ${out}) | 237 set(${output} ${${output}} ${out}) |
238 endforeach(file "${ARGN}") | 238 endforeach(file "${ARGN}") |
239 endmacro(qtd_command output command options files prefix comment) | 239 endmacro(qtd_command output command options files prefix comment) |
240 | 240 |
241 ## Parsing the parameters list. | 241 ## Parsing the parameters list. |
242 macro(qtd_parse_params default params) | 242 macro(qtd_parse_params default params) |
243 set(type_tmp ${default}) | 243 set(type_tmp ${default}) |
244 set(params_tmp ${default} ${${params}}) | 244 set(params_tmp ${default} ${${params}}) |
245 foreach(param_tmp ${params_tmp}) | 245 foreach(param_tmp ${params_tmp}) |
246 set(${param_tmp}_tmp ) | 246 set(${param_tmp}_tmp ) |
247 endforeach(param_tmp ${params_tmp}) | 247 endforeach(param_tmp ${params_tmp}) |
248 foreach(arg_tmp ${ARGN}) | 248 foreach(arg_tmp ${ARGN}) |
249 set(found_type_tmp) | 249 set(found_type_tmp) |
250 if(NOT found_type_tmp) | 250 if(NOT found_type_tmp) |
251 foreach(param_tmp ${params_tmp}) | 251 foreach(param_tmp ${params_tmp}) |
252 if(arg_tmp STREQUAL param_tmp) | 252 if(arg_tmp STREQUAL param_tmp) |
253 set(type_tmp ${param_tmp}) | 253 set(type_tmp ${param_tmp}) |
254 set(found_type_tmp 1) | 254 set(found_type_tmp 1) |
255 break(param_tmp ${params_tmp}) | 255 break(param_tmp ${params_tmp}) |
256 endif(arg_tmp STREQUAL param_tmp) | 256 endif(arg_tmp STREQUAL param_tmp) |
257 endforeach(param_tmp ${params_tmp}) | 257 endforeach(param_tmp ${params_tmp}) |
258 endif(NOT found_type_tmp) | 258 endif(NOT found_type_tmp) |
259 if(NOT found_type_tmp) | 259 if(NOT found_type_tmp) |
260 set(${type_tmp}_tmp ${${type_tmp}_tmp} ${arg_tmp}) | 260 set(${type_tmp}_tmp ${${type_tmp}_tmp} ${arg_tmp}) |
261 endif(NOT found_type_tmp) | 261 endif(NOT found_type_tmp) |
262 endforeach(arg_tmp ${ARGN}) | 262 endforeach(arg_tmp ${ARGN}) |
263 endmacro(qtd_parse_params default) | 263 endmacro(qtd_parse_params default) |
264 | 264 |
265 ## Build example macro. | 265 ## Build example macro. |
266 ## name -- example name. | 266 ## name -- example name. |
267 ## Options: | 267 ## Options: |
268 ## PACKAGES -- list of packages to link to exaple (for example, QtCore QtGui QtOpenGL). | 268 ## PACKAGES -- list of packages to link to exaple (for example, QtCore QtGui QtOpenGL). |
269 ## Default value is "QtCore QtGui". | 269 ## Default value is "QtCore QtGui". |
270 ## params -- sources d files. | 270 ## params -- sources d files. |
271 ## Usage: | 271 ## Usage: |
272 ## build_example(ExampleName PACKAGES QtCore QtGui QtXml main.d another_d_file.d) | 272 ## build_example(ExampleName PACKAGES QtCore QtGui QtXml main.d another_d_file.d) |
273 macro(build_example name) | 273 macro(build_example name) |
274 set (params UIC RESOURCES PACKAGES) | 274 set (params UIC RESOURCES PACKAGES) |
275 qtd_parse_params (SOURCES params ${ARGN}) | 275 qtd_parse_params (SOURCES params ${ARGN}) |
276 | 276 |
277 if(NOT PACKAGES_tmp) | 277 if(NOT PACKAGES_tmp) |
278 set(PACKAGES_tmp QtCore QtGui) | 278 set(PACKAGES_tmp QtCore QtGui) |
279 endif(NOT PACKAGES_tmp) | 279 endif(NOT PACKAGES_tmp) |
280 | 280 |
281 if(RESOURCES_tmp) | 281 if(RESOURCES_tmp) |
282 if(NOT BUILD_TOOLS) | 282 if(NOT BUILD_TOOLS) |
283 message(STATUS "Example '${name}' requires drcc. Example will not build") | 283 message(STATUS "Example '${name}' requires drcc. Example will not build") |
284 return(build_example name) | 284 return(build_example name) |
285 endif(NOT BUILD_TOOLS) | 285 endif(NOT BUILD_TOOLS) |
286 qtd_add_resource(res_sources ${RESOURCES_tmp} NAME ${name} ) | 286 qtd_add_resource(res_sources ${RESOURCES_tmp} NAME ${name} ) |
287 endif(RESOURCES_tmp) | 287 endif(RESOURCES_tmp) |
288 | 288 |
289 if(UIC_tmp) | 289 if(UIC_tmp) |
290 if(NOT BUILD_TOOLS) | 290 if(NOT BUILD_TOOLS) |
291 message(STATUS "Example '${name}' requires drcc. Example will not build") | 291 message(STATUS "Example '${name}' requires drcc. Example will not build") |
292 return(build_example name) | 292 return(build_example name) |
293 endif(NOT BUILD_TOOLS) | 293 endif(NOT BUILD_TOOLS) |
294 qtd_wrap_ui(uic_sources ${UIC_tmp}) | 294 qtd_wrap_ui(uic_sources ${UIC_tmp}) |
295 endif(UIC_tmp) | 295 endif(UIC_tmp) |
296 | 296 |
297 foreach(package ${PACKAGES_tmp}) | 297 foreach(package ${PACKAGES_tmp}) |
298 string(REGEX REPLACE "Qt([A-Za-z0-9])" "\\1" req "${package}") | 298 string(REGEX REPLACE "Qt([A-Za-z0-9])" "\\1" req "${package}") |
299 set(is_founded) | 299 set(is_founded) |
300 foreach(package_big ${packages_big}) | 300 foreach(package_big ${packages_big}) |
301 string(TOLOWER ${package_big} package) | 301 string(TOLOWER ${package_big} package) |
302 if(${req} STREQUAL ${package_big}) | 302 if(${req} STREQUAL ${package_big}) |
303 set(is_founded 1) | 303 set(is_founded 1) |
304 break(package_big ${packages_big}) | 304 break(package_big ${packages_big}) |
305 endif(${req} STREQUAL ${package_big}) | 305 endif(${req} STREQUAL ${package_big}) |
306 endforeach(package_big ${packages_big}) | 306 endforeach(package_big ${packages_big}) |
307 if(NOT is_founded) | 307 if(NOT is_founded) |
308 message(STATUS "Example '${name}' requires the package '${req}', but it is not active. Example will not build") | 308 message(STATUS "Example '${name}' requires the package '${req}', but it is not active. Example will not build") |
309 return(build_example name) | 309 return(build_example name) |
310 else(NOT is_founded) | 310 else(NOT is_founded) |
311 set(qtd_libs ${${package}_lib_param} ${qtd_libs}) | 311 set(qtd_libs ${${package}_lib_param} ${qtd_libs}) |
312 endif(NOT is_founded) | 312 endif(NOT is_founded) |
313 endforeach(package ${PACKAGES_tmp}) | 313 endforeach(package ${PACKAGES_tmp}) |
314 add_d_program(${name} ${SOURCES_tmp} NO_DEPS_SOURCES ${res_sources} ${uic_sources} | 314 add_d_program(${name} ${SOURCES_tmp} NO_DEPS_SOURCES ${res_sources} ${uic_sources} |
315 DEPENDS ${res_sources} INCLUDES ${QTD_IMPORT_PATH} ${CMAKE_CURRENT_BINARY_DIR} | 315 DEPENDS ${res_sources} INCLUDES ${QTD_IMPORT_PATH} ${CMAKE_CURRENT_BINARY_DIR} |
316 LIB_PATHS ${QTD_LIBRARIES_PATH} ${CMAKE_SOURCE_DIR}/lib LIBS ${qtd_libs}) | 316 LIB_PATHS ${QTD_LIBRARIES_PATH} ${CMAKE_SOURCE_DIR}/lib LIBS ${qtd_libs}) |
317 ## TODO: Enable. | 317 ## TODO: Enable. |
318 #if(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) ## | 318 #if(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) ## |
319 # add_custom_command(TARGET example_${name} POST_BUILD COMMAND "${STRIP}" ARGS "${output}") | 319 # add_custom_command(TARGET example_${name} POST_BUILD COMMAND "${STRIP}" ARGS "${output}") |
320 #endif(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) | 320 #endif(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) |
321 add_dependencies(examples ${name}) | 321 add_dependencies(examples ${name}) |
322 add_dependencies(${name} allpackages tools) | 322 add_dependencies(${name} allpackages tools) |
323 endmacro(build_example sources) | 323 endmacro(build_example sources) |
324 | 324 |
341 set(lib_name) | 341 set(lib_name) |
342 set(link_cpp) | 342 set(link_cpp) |
343 set(link_d) | 343 set(link_d) |
344 set(cpp_files) | 344 set(cpp_files) |
345 set(cpp_generated_files) | 345 set(cpp_generated_files) |
346 set(d_files) | 346 set(d_qt_files) |
347 set(d_qtd_files) | |
348 set(d_generated_files) | |
347 set(classes) | 349 set(classes) |
348 set(d_generated_files) | |
349 set(d_version_files) | |
350 set(link_example) | 350 set(link_example) |
351 include (${CMAKE_SOURCE_DIR}/build/${package}.txt) | 351 include (${CMAKE_SOURCE_DIR}/build/${package}.txt) |
352 | 352 |
353 set(all_req_found 1) | 353 set(all_req_found 1) |
354 string(TOUPPER ${package} package_upper) | 354 string(TOUPPER ${package} package_upper) |
355 if(BUILD_QT_${package_upper}) | 355 if(BUILD_QT_${package_upper}) |
356 foreach(req ${required}) | 356 foreach(req ${required}) |
357 set(req_found) | 357 set(req_found) |
358 foreach(pack ${packages_big}) | 358 foreach(pack ${packages_big}) |
359 if(${pack} STREQUAL ${req}) | 359 if(${pack} STREQUAL ${req}) |
360 set(req_found 1) | 360 set(req_found 1) |
361 endif(${pack} STREQUAL ${req}) | 361 endif(${pack} STREQUAL ${req}) |
362 endforeach(pack ${packages}) | 362 endforeach(pack ${packages}) |
363 if(NOT req_found) | 363 if(NOT req_found) |
364 set(req_found) | 364 set(req_found) |
365 foreach(pack ${all_packages}) | 365 foreach(pack ${all_packages}) |
366 if(${pack} STREQUAL ${req}) | 366 if(${pack} STREQUAL ${req}) |
367 set(req_found 1) | 367 set(req_found 1) |
368 endif(${pack} STREQUAL ${req}) | 368 endif(${pack} STREQUAL ${req}) |
369 endforeach(pack ${all_packages}) | 369 endforeach(pack ${all_packages}) |
370 if(req_found) | 370 if(req_found) |
371 message(STATUS "Package '${package_big}' requires '${req}', but it is not active") | 371 message(STATUS "Package '${package_big}' requires '${req}', but it is not active") |
372 else(req_found) | 372 else(req_found) |
373 message(STATUS "Package '${package_big}' requires '${req}', but it is not found") | 373 message(STATUS "Package '${package_big}' requires '${req}', but it is not found") |
374 endif(req_found) | 374 endif(req_found) |
375 set(all_req_found) | 375 set(all_req_found) |
376 endif(NOT req_found) | 376 endif(NOT req_found) |
377 endforeach(req ${required}) | 377 endforeach(req ${required}) |
378 else(BUILD_QT_${package_upper}) | 378 else(BUILD_QT_${package_upper}) |
379 set(all_req_found) | 379 set(all_req_found) |
380 endif(BUILD_QT_${package_upper}) | 380 endif(BUILD_QT_${package_upper}) |
381 | 381 |
382 ## TODO: cleanup. | 382 ## TODO: cleanup. |
383 if("${all_req_found}" EQUAL 1) | 383 if("${all_req_found}" EQUAL 1) |
384 set(packages_big ${packages_big} ${package_big}) | 384 set(packages_big ${packages_big} ${package_big}) |
385 set(packages ${packages} ${package}) | 385 set(packages ${packages} ${package}) |
386 ## Loading package sources list. | 386 ## Loading package sources list. |
387 foreach(d_source ${package}/ArrayOps2 ${d_generated_files}) | 387 foreach(d_source qt/${package}/ArrayOps2 ${d_generated_files}) |
388 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${d_source}.d) | 388 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/${d_source}.d) |
389 endforeach(d_source ${d_generated_files}) | 389 endforeach(d_source ${d_generated_files}) |
390 set(classes ArrayOps ${classes}) | 390 set(classes ArrayOps ${classes}) |
391 foreach(class ${classes}) | 391 foreach(class ${classes}) |
392 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) | 392 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) |
393 set(aux_name ${CMAKE_BINARY_DIR}/qt/${package}/${class}_aux.d ) | 393 set(aux_name ${CMAKE_BINARY_DIR}/qt/${package}/${class}_aux.d ) |
394 if(EXISTS ${aux_name}) | 394 if(EXISTS ${aux_name}) |
395 set(d_sources ${d_sources} ${aux_name}) | 395 set(d_sources ${d_sources} ${aux_name}) |
396 endif(EXISTS ${aux_name}) | 396 endif(EXISTS ${aux_name}) |
397 set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) | 397 set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) |
398 endforeach(class ${classes}) | 398 endforeach(class ${classes}) |
399 set(files_for_gen ${files_for_gen} ${cpp_sources} ${d_sources}) | 399 set(files_for_gen ${files_for_gen} ${cpp_sources} ${d_sources}) |
400 | 400 |
401 foreach (cpp_source ${cpp_files}) | 401 foreach (cpp_source ${cpp_files}) |
402 set(cpp_sources ${cpp_sources} ${CMAKE_SOURCE_DIR}/cpp/${cpp_source}.cpp) | 402 set(cpp_sources ${cpp_sources} ${CMAKE_SOURCE_DIR}/cpp/${cpp_source}.cpp) |
403 endforeach(cpp_source ${cpp_files}) | 403 endforeach(cpp_source ${cpp_files}) |
404 foreach (cpp_source ${cpp_generated_files}) | 404 foreach (cpp_source ${cpp_generated_files}) |
405 set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/${cpp_source}.cpp) | 405 set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/${cpp_source}.cpp) |
406 endforeach(cpp_source ${cpp_generated_files}) | 406 endforeach(cpp_source ${cpp_generated_files}) |
407 foreach(d_source ${d_version_files}) | 407 foreach(d_source ${d_qt_files}) |
408 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}/qt/${d_source}.d) | 408 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/d${D_VERSION}/qt/${d_source}.d) |
409 endforeach(d_source ${d_version_files}) | 409 endforeach(d_source ${d_qt_files}) |
410 foreach(d_source ${d_files}) | 410 foreach(d_source ${d_qtd_files}) |
411 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/${d_source}.d) | 411 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/d${D_VERSION}/qtd/${d_source}.d) |
412 endforeach(d_source ${d_files}) | 412 endforeach(d_source ${d_qtd_files}) |
413 | 413 |
414 if(NOT GENERATE_DI_FILES) | 414 if(NOT GENERATE_DI_FILES) |
415 foreach(d_source ${d_sources}) | 415 foreach(d_source ${d_sources}) |
416 get_filename_component(path ${d_source} PATH) | 416 get_filename_component(path ${d_source} PATH) |
417 get_filename_component(name ${d_source} NAME_WE) | 417 get_filename_component(name ${d_source} NAME_WE) |
418 regex_safe_string(cbd_safe_tmp ${CMAKE_CURRENT_BINARY_DIR}) | 418 regex_safe_string(cbd_safe_tmp ${CMAKE_CURRENT_BINARY_DIR}) |
419 regex_safe_string(csd_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR}) | 419 regex_safe_string(csd_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR}) |
420 regex_safe_string(ver_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR}/qt/d${D_VERSION}) | 420 regex_safe_string(ver_safe_tmp ${CMAKE_CURRENT_SOURCE_DIR}/qt/d${D_VERSION}) |
421 set(regexp_str_tmp "(${ver_safe_tmp}/|${cbd_safe_tmp}/|${csd_safe_tmp}/|)(.+)") | 421 set(regexp_str_tmp "(${ver_safe_tmp}/|${cbd_safe_tmp}/|${csd_safe_tmp}/|)(.+)") |
422 string(REGEX REPLACE ${regexp_str_tmp} "\\2" ins_path "${path}") | 422 string(REGEX REPLACE ${regexp_str_tmp} "\\2" ins_path "${path}") |
423 install(FILES ${d_source} DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}.di) | 423 install(FILES ${d_source} DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}.di) |
424 install(FILES ${path}/${name}_aux.d DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}_aux.di OPTIONAL) | 424 install(FILES ${path}/${name}_aux.d DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}_aux.di OPTIONAL) |
425 endforeach(d_source ${d_sources}) | 425 endforeach(d_source ${d_sources}) |
426 endif(NOT GENERATE_DI_FILES) | 426 endif(NOT GENERATE_DI_FILES) |
427 | 427 |
428 ## Link CPP library. | 428 ## Link CPP library. |
429 if(CPP_SHARED) | 429 if(CPP_SHARED) |
430 set(cpp_method SHARED) | 430 set(cpp_method SHARED) |
431 else(CPP_SHARED) | 431 else(CPP_SHARED) |
432 set(cpp_method STATIC) | 432 set(cpp_method STATIC) |
433 endif(CPP_SHARED) | 433 endif(CPP_SHARED) |
434 add_library(cpp_${package} ${cpp_method} ${cpp_sources}) | 434 add_library(cpp_${package} ${cpp_method} ${cpp_sources}) |
435 set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) | 435 set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) |
436 if(CPP_SHARED) | 436 if(CPP_SHARED) |
437 else(CPP_SHARED) | 437 else(CPP_SHARED) |
438 foreach(cpp_source ${cpp_sources}) | 438 foreach(cpp_source ${cpp_sources}) |
439 set(cpp_source ${cpp_source}) | 439 set(cpp_source ${cpp_source}) |
440 obj_path(cpp_source) | 440 obj_path(cpp_source) |
441 set(cpp_objs ${cpp_objs} ${CMAKE_BINARY_DIR}/CMakeFiles/cpp_${package}.dir/${cpp_source}${CMAKE_CXX_OUTPUT_EXTENSION}) | 441 set(cpp_objs ${cpp_objs} ${CMAKE_BINARY_DIR}/CMakeFiles/cpp_${package}.dir/${cpp_source}${CMAKE_CXX_OUTPUT_EXTENSION}) |
442 endforeach(cpp_source ${cpp_sources}) | 442 endforeach(cpp_source ${cpp_sources}) |
443 endif(CPP_SHARED) | 443 endif(CPP_SHARED) |
444 | 444 |
445 ## Link D library. | 445 ## Link D library. |
446 set(lib_name qtd${package}) | 446 set(lib_name qtd${package}) |
447 if(BUILD_SHARED_LIBRARIES) | 447 if(BUILD_SHARED_LIBRARIES) |
448 set(lib lib/${CMAKE_SHARED_LIBRARY_PREFIX}${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}) | 448 set(lib lib/${CMAKE_SHARED_LIBRARY_PREFIX}${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}) |
449 set(build_type SHARED) | 449 set(build_type SHARED) |
450 else(BUILD_SHARED_LIBRARIES) | 450 else(BUILD_SHARED_LIBRARIES) |
451 set(lib lib/${D_LIB_PREFIX}${lib_name}${D_LIB_SUFFIX}) | 451 set(lib lib/${D_LIB_PREFIX}${lib_name}${D_LIB_SUFFIX}) |
452 set(build_type STATIC) | 452 set(build_type STATIC) |
453 endif(BUILD_SHARED_LIBRARIES) | 453 endif(BUILD_SHARED_LIBRARIES) |
454 | 454 |
455 foreach(req ${required}) | 455 foreach(req ${required}) |
456 set(is_found) | 456 set(is_found) |
457 foreach(pack ${packages_big}) | 457 foreach(pack ${packages_big}) |
458 if("${pack}" STREQUAL "${req}") | 458 if("${pack}" STREQUAL "${req}") |
459 set(is_found 1) | 459 set(is_found 1) |
460 break(pack ${packages_big}) | 460 break(pack ${packages_big}) |
461 endif("${pack}" STREQUAL "${req}") | 461 endif("${pack}" STREQUAL "${req}") |
462 endforeach(pack ${packages_big}) | 462 endforeach(pack ${packages_big}) |
463 if(NOT is_found) | 463 if(NOT is_found) |
464 message(FATAL_ERROR "Package ${package_big} requires ${req}, but it is not found") | 464 message(FATAL_ERROR "Package ${package_big} requires ${req}, but it is not found") |
465 endif(NOT is_found) | 465 endif(NOT is_found) |
466 string(TOUPPER ${req} req_upper) | 466 string(TOUPPER ${req} req_upper) |
467 string(TOLOWER ${req} req_lower) | 467 string(TOLOWER ${req} req_lower) |
468 set(link_cpp ${link_cpp} cpp_${req_lower} ${QT_QT${req_upper}_LIBRARY}) | 468 set(link_cpp ${link_cpp} cpp_${req_lower} ${QT_QT${req_upper}_LIBRARY}) |
469 endforeach(req ${require}) | 469 endforeach(req ${require}) |
470 set(d_objs ${d_objs} ${objects}) | 470 set(d_objs ${d_objs} ${objects}) |
471 | 471 |
472 set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib) | 472 set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib) |
473 set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) | 473 set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) |
474 string(TOUPPER ${package} package_upper) | 474 string(TOUPPER ${package} package_upper) |
475 set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY}) | 475 set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY}) |
476 target_link_libraries(cpp_${package} ${link_cpp} ) | 476 target_link_libraries(cpp_${package} ${link_cpp} ) |
477 if(CPP_SHARED) | 477 if(CPP_SHARED) |
478 set(cpp_lib ${CMAKE_BINARY_DIR}/lib/libcpp_${package}.dll) | 478 set(cpp_lib ${CMAKE_BINARY_DIR}/lib/libcpp_${package}.dll) |
479 set(cpp_lib_native ${cpp_lib}) | 479 set(cpp_lib_native ${cpp_lib}) |
480 make_native_path(cpp_lib_native) | 480 make_native_path(cpp_lib_native) |
481 set(d_implib ${CMAKE_BINARY_DIR}/CMakeFiles/${package}.dir/cpp_${package}.lib) | 481 set(d_implib ${CMAKE_BINARY_DIR}/CMakeFiles/${package}.dir/cpp_${package}.lib) |
482 set(d_implib_native ${d_implib}) | 482 set(d_implib_native ${d_implib}) |
483 make_native_path(d_implib_native) | 483 make_native_path(d_implib_native) |
484 add_custom_command( | 484 add_custom_command( |
485 OUTPUT "${d_implib}" | 485 OUTPUT "${d_implib}" |
486 COMMAND "${IMPLIB}" | 486 COMMAND "${IMPLIB}" |
487 ARGS /system /PAGESIZE:32 ${d_implib_native} ${cpp_lib_native} | 487 ARGS /system /PAGESIZE:32 ${d_implib_native} ${cpp_lib_native} |
488 DEPENDS "cpp_${package}" | 488 DEPENDS "cpp_${package}" |
489 COMMENT "Creating implib ${lib_name}" | 489 COMMENT "Creating implib ${lib_name}" |
490 ) | 490 ) |
491 install(FILES ${cpp_lib} COMPONENT qtd DESTINATION lib) | 491 install(FILES ${cpp_lib} COMPONENT qtd DESTINATION lib) |
492 else(CPP_SHARED) | 492 else(CPP_SHARED) |
493 set(${package}_lib_param Qt${package_big}) ## Paths for QtD libs. Needed by examples. | 493 set(${package}_lib_param Qt${package_big}) ## Paths for QtD libs. Needed by examples. |
494 endif(CPP_SHARED) | 494 endif(CPP_SHARED) |
495 add_d_target(${lib_name} NOT_DETECT_DEPENDS TYPE ${build_type} INCLUDES ${QTD_IMPORT_PATH} SOURCES ${d_sources} OBJECTS ${cpp_objs} ${d_implib} | 495 add_d_target(${lib_name} NOT_DETECT_DEPENDS TYPE ${build_type} INCLUDES ${QTD_IMPORT_PATH} SOURCES ${d_sources} OBJECTS ${cpp_objs} ${d_implib} |
496 OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib DEPENDS ${d_implib} ) | 496 OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib DEPENDS ${d_implib} ) |
497 | 497 |
498 install(FILES ${CMAKE_BINARY_DIR}/${lib} COMPONENT qtd DESTINATION lib) | 498 install(FILES ${CMAKE_BINARY_DIR}/${lib} COMPONENT qtd DESTINATION lib) |
499 ## Paths for QtD libs. Needed by examples. | 499 ## Paths for QtD libs. Needed by examples. |
500 set(${package}_lib_param qtd${package} ${${package}_lib_param} ${link_example}) | 500 set(${package}_lib_param qtd${package} ${${package}_lib_param} ${link_example}) |
501 | 501 |
502 ## Dependences. | 502 ## Dependences. |
503 add_custom_target(${package}) | 503 add_custom_target(${package}) |
504 add_dependencies(${package} ${lib_name}) | 504 add_dependencies(${package} ${lib_name}) |
505 add_dependencies(${lib_name} cpp_${package}) | 505 add_dependencies(${lib_name} cpp_${package}) |
506 foreach(depend ${required}) | 506 foreach(depend ${required}) |
507 string(TOLOWER ${depend} depend) | 507 string(TOLOWER ${depend} depend) |
508 add_dependencies(cpp_${package} cpp_${depend}) | 508 add_dependencies(cpp_${package} cpp_${depend}) |
509 add_dependencies(${package} ${depend}) | 509 add_dependencies(${package} ${depend}) |
510 endforeach(depend ${required}) | 510 endforeach(depend ${required}) |
511 add_dependencies(allpackages ${package}) | 511 add_dependencies(allpackages ${package}) |
512 | 512 |
513 if(GENERATE_DI_FILES) | 513 if(GENERATE_DI_FILES) |
514 regexseafestring(cbd_safe ${CMAKE_BINARY_DIR}) | 514 regexseafestring(cbd_safe ${CMAKE_BINARY_DIR}) |
515 regexseafestring(csd_safe ${CMAKE_SOURCE_DIR}) | 515 regexseafestring(csd_safe ${CMAKE_SOURCE_DIR}) |
516 set(regexp_str "(${csd}/qt/d${D_VERSION}|${csd_safe}|${cbd_safe})/([A-Za-z0-9\\-_\\\\/]+)[/]+([A-Za-z0-9\\-_\\\\]+).d") | 516 set(regexp_str "(${csd}/qt/d${D_VERSION}|${csd_safe}|${cbd_safe})/([A-Za-z0-9\\-_\\\\/]+)[/]+([A-Za-z0-9\\-_\\\\]+).d") |
517 foreach(source ${d_sources}) | 517 foreach(source ${d_sources}) |
518 # find_file(source ${source} PATHS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} | 518 # find_file(source ${source} PATHS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} |
519 # ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}) | 519 # ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}) |
520 string(REGEX REPLACE ${regexp_str} "\\2" inc_path "${source}") | 520 string(REGEX REPLACE ${regexp_str} "\\2" inc_path "${source}") |
521 string(REGEX REPLACE ${regexp_str} "\\3" file_name "${source}") | 521 string(REGEX REPLACE ${regexp_str} "\\3" file_name "${source}") |
522 set(interface_file_path ${CMAKE_BINARY_DIR}/d/${inc_path}) | 522 set(interface_file_path ${CMAKE_BINARY_DIR}/d/${inc_path}) |
523 set(interface_file "${interface_file_path}/${file_name}.di") | 523 set(interface_file "${interface_file_path}/${file_name}.di") |
524 if(NOT "${file_name}" STREQUAL "QGlobal") | 524 if(NOT "${file_name}" STREQUAL "QGlobal") |
525 add_custom_command(OUTPUT "${interface_file}" | 525 add_custom_command(OUTPUT "${interface_file}" |
526 COMMAND "${DC}" | 526 COMMAND "${DC}" |
527 ARGS ${D_FLAGS} -o- -H -Hd${interface_file_path} ${source} | 527 ARGS ${D_FLAGS} -o- -H -Hd${interface_file_path} ${source} |
528 COMMENT "Generating header for ${source}" | 528 COMMENT "Generating header for ${source}" |
529 DEPENDS ${source} | 529 DEPENDS ${source} |
530 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | 530 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
531 ) | 531 ) |
532 else(NOT "${file_name}" STREQUAL "QGlobal") ## The DMD frontend crashes on this file. | 532 else(NOT "${file_name}" STREQUAL "QGlobal") ## The DMD frontend crashes on this file. |
533 add_custom_command(OUTPUT "${interface_file}" | 533 add_custom_command(OUTPUT "${interface_file}" |
534 COMMAND ${CMAKE_COMMAND} -E make_directory ${interface_file_path} | 534 COMMAND ${CMAKE_COMMAND} -E make_directory ${interface_file_path} |
535 COMMAND ${CMAKE_COMMAND} -E remove -f ${interface_file} | 535 COMMAND ${CMAKE_COMMAND} -E remove -f ${interface_file} |
536 COMMAND ${CMAKE_COMMAND} -E copy ${source} ${interface_file} | 536 COMMAND ${CMAKE_COMMAND} -E copy ${source} ${interface_file} |
537 COMMENT "" | 537 COMMENT "" |
538 DEPENDS ${source} | 538 DEPENDS ${source} |
539 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | 539 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
540 ) | 540 ) |
541 endif(NOT "${file_name}" STREQUAL "QGlobal" AND GENERATE_DI_FILES) | 541 endif(NOT "${file_name}" STREQUAL "QGlobal" AND GENERATE_DI_FILES) |
542 set(interfaces_list ${interfaces_list} ${interface_file_path}/${file_name}.di) | 542 set(interfaces_list ${interfaces_list} ${interface_file_path}/${file_name}.di) |
543 install(FILES ${interface_file} COMPONENT qtd DESTINATION include/d/${inc_path}) | 543 install(FILES ${interface_file} COMPONENT qtd DESTINATION include/d/${inc_path}) |
544 endforeach(source) | 544 endforeach(source) |
545 endif(GENERATE_DI_FILES) | 545 endif(GENERATE_DI_FILES) |
546 endif("${all_req_found}" EQUAL 1) | 546 endif("${all_req_found}" EQUAL 1) |
547 endforeach(package_big ${packages_big}) | 547 endforeach(package_big ${packages_big}) |
548 if(GENERATE_DI_FILES) | 548 if(GENERATE_DI_FILES) |
549 add_custom_target(generate_headers ALL DEPENDS ${interfaces_list}) | 549 add_custom_target(generate_headers ALL DEPENDS ${interfaces_list}) |
550 endif(GENERATE_DI_FILES) | 550 endif(GENERATE_DI_FILES) |