Mercurial > projects > qtd
comparison CMakeLists.txt @ 16:6faf3d3cb95e
CMake: implement install and package targets.
author | SokoL_SD |
---|---|
date | Thu, 14 May 2009 17:09:25 +0000 |
parents | 4faee409a98d |
children | 3925148ba2b6 |
comparison
equal
deleted
inserted
replaced
15:056e83133e29 | 16:6faf3d3cb95e |
---|---|
30 if (DC) | 30 if (DC) |
31 exec_program(${DC} ARGS "" OUTPUT_VARIABLE d_output) | 31 exec_program(${DC} ARGS "" OUTPUT_VARIABLE d_output) |
32 string(REGEX MATCH "Digital Mars D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}") | 32 string(REGEX MATCH "Digital Mars D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}") |
33 if (dmd_version) | 33 if (dmd_version) |
34 set(D_IS_MARS true) | 34 set(D_IS_MARS true) |
35 set(D_IS_DMD true) | |
35 set(D_COMPILER_NAME "Digital Mars D Compiler") | 36 set(D_COMPILER_NAME "Digital Mars D Compiler") |
36 string(REGEX REPLACE "Digital Mars D Compiler v([0-9])\\.[0-9]+" "\\1" D_VERSION "${dmd_version}") | 37 string(REGEX REPLACE "Digital Mars D Compiler v([0-9])\\.[0-9]+" "\\1" D_VERSION "${dmd_version}") |
37 string(REGEX REPLACE "Digital Mars D Compiler v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${dmd_version}") | 38 string(REGEX REPLACE "Digital Mars D Compiler v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${dmd_version}") |
38 else (dmd_version) | 39 else (dmd_version) |
39 string(REGEX MATCH "LLVM-based D Compiler" is_ldc "${d_output}") | 40 string(REGEX MATCH "LLVM-based D Compiler" is_ldc "${d_output}") |
40 if (is_ldc) | 41 if (is_ldc) |
41 exec_program(${DC} ARGS "--version" OUTPUT_VARIABLE d_output) | 42 exec_program(${DC} ARGS "--version" OUTPUT_VARIABLE d_output) |
42 string(REGEX MATCH "based on DMD v[0-9]\\.[0-9]+" ldc_version "${d_output}") | 43 string(REGEX MATCH "based on DMD v[0-9]\\.[0-9]+" ldc_version "${d_output}") |
43 set(D_IS_LLVM true) | 44 set(D_IS_LLVM true) |
45 set(D_IS_LDC true) | |
44 if(ldc_version) | 46 if(ldc_version) |
45 set(D_IS_LLVM true) | 47 set(D_IS_LLVM true) |
46 set(D_COMPILER_NAME "LLVM-based D Compiler") | 48 set(D_COMPILER_NAME "LLVM-based D Compiler") |
47 string(REGEX REPLACE "based on DMD v([0-9])\\.[0-9]+" "\\1" D_VERSION "${ldc_version}") | 49 string(REGEX REPLACE "based on DMD v([0-9])\\.[0-9]+" "\\1" D_VERSION "${ldc_version}") |
48 string(REGEX REPLACE "based on DMD v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${ldc_version}") | 50 string(REGEX REPLACE "based on DMD v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${ldc_version}") |
72 # Check D compiler version | 74 # Check D compiler version |
73 if(D_VERSION EQUAL "1") | 75 if(D_VERSION EQUAL "1") |
74 if (D_FRONTEND LESS "041") | 76 if (D_FRONTEND LESS "041") |
75 message(STATUS "Minimum required version of D compiler is 1.041 (or compiler based on this version)") | 77 message(STATUS "Minimum required version of D compiler is 1.041 (or compiler based on this version)") |
76 endif(D_FRONTEND LESS "041") | 78 endif(D_FRONTEND LESS "041") |
77 set(D_TARGET d1-tango) | 79 set(D_TARGET d1-tango) |
78 #set(D_FLAGS ${D_FLAGS} -I${CMAKE_SOURCE_DIR}/qtd/d1) | |
79 elseif(D_VERSION EQUAL "2") | 80 elseif(D_VERSION EQUAL "2") |
80 set(D_TARGET ) ## TODO: hm... I don`t known this parameter for D2 ^( | 81 set(D_TARGET ) ## TODO: hm... I don`t known this parameter for D2 ^( |
81 #set(D_FLAGS ${D_FLAGS} -I${CMAKE_SOURCE_DIR}/qtd/d2) | |
82 endif(D_VERSION EQUAL "1") | 82 endif(D_VERSION EQUAL "1") |
83 set(D_FLAGS ${D_FLAGS} -I${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}) | |
83 | 84 |
84 # Debug and release flags. | 85 # Debug and release flags. |
85 if (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) | 86 if (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) |
86 #set(CMAKE_BUILD_TYPE Debug) | 87 #set(CMAKE_BUILD_TYPE Debug) |
87 #set( SUFFIXLIB "${SUFFIXLIB}-debug" ) | 88 #set( SUFFIXLIB "${SUFFIXLIB}-debug" ) |
90 set(D_FLAGS ${D_FLAGS} -g -gc -debug) | 91 set(D_FLAGS ${D_FLAGS} -g -gc -debug) |
91 else (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) | 92 else (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) |
92 #set(CMAKE_BUILD_TYPE Release) | 93 #set(CMAKE_BUILD_TYPE Release) |
93 add_definitions(-UNO_DEBUG) | 94 add_definitions(-UNO_DEBUG) |
94 set(D_FLAGS ${D_FLAGS} -O -release -inline) | 95 set(D_FLAGS ${D_FLAGS} -O -release -inline) |
96 if(D_IS_MARS) | |
97 set(D_FLAGS ${D_FLAGS} -inline) | |
98 elseif(D_IS_LLVM) | |
99 set(D_FLAGS ${D_FLAGS} -enable-inlining) | |
100 endif(D_IS_MARS) | |
95 if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) | 101 if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
96 set(D_FLAGS ${D_FLAGS} -L/subsystem:windows) | 102 set(D_FLAGS ${D_FLAGS} -L/subsystem:windows) |
97 endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) | 103 endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
98 endif (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) | 104 endif (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) |
99 set(D_FLAGS ${D_FLAGS} -I${CMAKE_BINARY_DIR} -I${CMAKE_SOURCE_DIR}) | 105 set(D_FLAGS ${D_FLAGS} -I${CMAKE_BINARY_DIR} -I${CMAKE_SOURCE_DIR}) |
328 set(link_d) | 334 set(link_d) |
329 set(cpp_files) | 335 set(cpp_files) |
330 set(d_files) | 336 set(d_files) |
331 set(classes) | 337 set(classes) |
332 set(d_generated_files) | 338 set(d_generated_files) |
339 set(d_version_files) | |
333 set(link_example) | 340 set(link_example) |
334 include (${CMAKE_SOURCE_DIR}/build/${package}.txt) | 341 include (${CMAKE_SOURCE_DIR}/build/${package}.txt) |
335 | 342 |
336 ## Loading package sources list. | 343 ## Loading package sources list. |
344 foreach(d_source ${d_version_files}) | |
345 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}/qt/${d_source}.d) | |
346 if(NOT GENERATE_DI_FILES) | |
347 get_filename_component(path ${d_source}.d PATH) | |
348 get_filename_component(name ${d_source}.d NAME_WE) | |
349 install(FILES ${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}/qt/${d_source}.d DESTINATION include/d/qtd/${path} RENAME ${name}.di) | |
350 endif(NOT GENERATE_DI_FILES) | |
351 endforeach(d_source) | |
337 foreach(d_source ${d_files}) | 352 foreach(d_source ${d_files}) |
338 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/${d_source}.d) | 353 set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/${d_source}.d) |
354 if(NOT GENERATE_DI_FILES) | |
355 get_filename_component(path ${d_source}.d PATH) | |
356 get_filename_component(name ${d_source}.d NAME_WE) | |
357 install(FILES ${CMAKE_SOURCE_DIR}/qt/${d_source}.d DESTINATION include/d/qtd/${path} RENAME ${name}.di) | |
358 endif(NOT GENERATE_DI_FILES) | |
339 endforeach(d_source) | 359 endforeach(d_source) |
340 foreach(d_source ${d_generated_files}) | 360 foreach(d_source ${d_generated_files}) |
341 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${d_source}.d) | 361 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${d_source}.d) |
342 get_filename_component(path ${d_source}.d PATH) | |
343 get_filename_component(path ${d_source}.d NAME_WE) | |
344 if(NOT GENERATE_DI_FILES) | 362 if(NOT GENERATE_DI_FILES) |
345 install(FILES ${d_source} DESTINATION include/d/qtd/${path} RENAME ${class}.di) | 363 get_filename_component(path ${d_source}.d PATH) |
364 get_filename_component(name ${d_source}.d NAME_WE) | |
365 install(FILES ${CMAKE_BINARY_DIR}/qt/${d_source}.d DESTINATION include/d/qtd/${path} RENAME ${name}.di) | |
346 endif(NOT GENERATE_DI_FILES) | 366 endif(NOT GENERATE_DI_FILES) |
347 endforeach(d_source) | 367 endforeach(d_source) |
348 foreach (cpp_source ${cpp_files}) | 368 foreach (cpp_source ${cpp_files}) |
349 set(cpp_sources ${cpp_sources} ${CMAKE_SOURCE_DIR}/cpp/${cpp_source}.cpp) | 369 set(cpp_sources ${cpp_sources} ${CMAKE_SOURCE_DIR}/cpp/${cpp_source}.cpp) |
350 endforeach(cpp_source) | 370 endforeach(cpp_source) |
353 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) | 373 set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) |
354 set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) | 374 set(cpp_sources ${cpp_sources} ${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) |
355 add_sources_for_generating(${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) | 375 add_sources_for_generating(${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp) |
356 add_sources_for_generating(${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) | 376 add_sources_for_generating(${CMAKE_BINARY_DIR}/qt/${package}/${class}.d) |
357 if(NOT GENERATE_DI_FILES) | 377 if(NOT GENERATE_DI_FILES) |
358 install(FILES ${d_source} DESTINATION include/d/qtd/${package} RENAME ${class}.di) | 378 install(FILES ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d DESTINATION include/d/qtd/${package} RENAME ${class}.di) |
359 endif(NOT GENERATE_DI_FILES) | 379 endif(NOT GENERATE_DI_FILES) |
360 endforeach(class) | 380 endforeach(class) |
361 | 381 |
362 ## Link CPP library. | 382 ## Link CPP library. |
363 add_library(cpp_${package} SHARED ${cpp_sources}) | 383 add_library(cpp_${package} SHARED ${cpp_sources}) |
405 ARGS rcs ${lib} ${d_objs} ${cpp_objs} | 425 ARGS rcs ${lib} ${d_objs} ${cpp_objs} |
406 DEPENDS ${d_objs} cpp_${package} | 426 DEPENDS ${d_objs} cpp_${package} |
407 COMMENT "Linking ${lib_name}" | 427 COMMENT "Linking ${lib_name}" |
408 ) | 428 ) |
409 endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) | 429 endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) |
410 install(FILES ${lib} DESTINATION lib) | 430 install(FILES ${CMAKE_BINARY_DIR}/${lib} DESTINATION lib) |
411 | 431 |
412 ## Dependences. | 432 ## Dependences. |
413 add_dependencies(cpp_${package} dgen) | 433 add_dependencies(cpp_${package} dgen) |
414 add_custom_target(${package} DEPENDS ${lib}) | 434 add_custom_target(${package} DEPENDS ${lib}) |
415 foreach(depend ${depends}) | 435 foreach(depend ${depends}) |
436 set(${package}_lib_param ${${package}_lib_param} ${link}) | 456 set(${package}_lib_param ${${package}_lib_param} ${link}) |
437 endforeach(link ${link_example}) | 457 endforeach(link ${link_example}) |
438 endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) | 458 endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS) |
439 | 459 |
440 if(GENERATE_DI_FILES) | 460 if(GENERATE_DI_FILES) |
441 set(regexp_str "(${CMAKE_BINARY_DIR}|${CMAKE_SOURCE_DIR})/([A-Za-z0-9\\-_\\\\/]+)[/]+([A-Za-z0-9\\-_\\\\]+).d") | 461 set(regexp_str "(${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}|${CMAKE_BINARY_DIR}|${CMAKE_SOURCE_DIR})/([A-Za-z0-9\\-_\\\\/]+)[/]+([A-Za-z0-9\\-_\\\\]+).d") |
442 foreach(source ${d_sources}) | 462 foreach(source ${d_sources}) |
443 # find_file(source ${source} PATHS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} | 463 # find_file(source ${source} PATHS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} |
444 # ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}) | 464 # ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}) |
445 string(REGEX REPLACE ${regexp_str} "\\2" inc_path "${source}") | 465 string(REGEX REPLACE ${regexp_str} "\\2" inc_path "${source}") |
446 string(REGEX REPLACE ${regexp_str} "\\3" file_name "${source}") | 466 string(REGEX REPLACE ${regexp_str} "\\3" file_name "${source}") |
478 ##-------------------------------------------- | 498 ##-------------------------------------------- |
479 if(BUILD_EXAMPLES) | 499 if(BUILD_EXAMPLES) |
480 add_subdirectory(demos) | 500 add_subdirectory(demos) |
481 add_subdirectory(examples) | 501 add_subdirectory(examples) |
482 endif(BUILD_EXAMPLES) | 502 endif(BUILD_EXAMPLES) |
503 | |
504 | |
505 ##-------------------------------------------- | |
506 ## CPack. | |
507 ##-------------------------------------------- | |
508 set(CPACK_PACKAGE_VERSION_PATCH 1) | |
509 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "QtD is a D binding to the Qt") | |
510 set(CPACK_PACKAGE_VENDOR "QtD team") | |
511 set(CPACK_PACKAGE_CONTACT "e@mail.ru" ) | |
512 SET(CPACK_PACKAGE_VERSION "0.1") | |
513 #set(CPACK_PACKAGE_VERSION_PATCH "${RFS_VERSION_BUILD}") | |
514 set(CPACK_PACKAGE_INSTALL_DIRECTORY "qtd ${CPACK_PACKAGE_VERSION}") | |
515 set(CPACK_PACKAGE_FILE_NAME "qtd-${CPACK_PACKAGE_VERSION}") | |
516 set(CPACK_SOURCE_PACKAGE_FILE_NAME "qtd-${CPACK_PACKAGE_VERSION}") | |
517 SET(CPACK_GENERATOR "TBZ2;DEB;RPM") | |
518 include(CPack) |