Mercurial > projects > qtd
changeset 237:62d0dce52dac
CMake: improvements && fixes
author | SokoL_SD |
---|---|
date | Mon, 20 Jul 2009 06:00:55 +0000 |
parents | fcc0ada121e1 |
children | 1349940724eb |
files | CMakeLists.txt cmake/FindD.cmake generator/CMakeLists.txt |
diffstat | 3 files changed, 40 insertions(+), 96 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Sun Jul 19 18:20:15 2009 +0000 +++ b/CMakeLists.txt Mon Jul 20 06:00:55 2009 +0000 @@ -2,7 +2,7 @@ PROJECT(qtd CXX C) ########################################################## -## Building generator and settings. +## Building generator && settings. ########################################################## if(NOT SECOND_RUN) @@ -60,7 +60,7 @@ #add_definitions(-UNO_DEBUG) endif(${CMAKE_BUILD_TYPE} MATCHES [rR][eE][lL][eE][aA][sS] ) -# System specifc settings. +# System specific settings. if(CMAKE_HOST_WIN32) set(implib implib) find_program(IMPLIB ${implib}) @@ -102,7 +102,7 @@ make_native_path(cd_path) add_custom_command(TARGET main POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E make_directory ${CMAKE_BINARY_DIR}/build - COMMAND cd ARGS ${cd_path} && ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} -DSECOND_RUN=1 ${CMAKE_SOURCE_DIR} && ${make_util} allpackages + COMMAND cd ARGS ${cd_path} && ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} -DSECOND_RUN=1 ${CMAKE_SOURCE_DIR} && ${make_util} COMMENT "" ) @@ -182,7 +182,7 @@ ##-------------------------------------------- macro(load_generated_classes ) - include(cpp/qt_${package}/qt_${package}.txt) + include(${CMAKE_BINARY_DIR}/cpp/qt_${package}/qt_${package}.txt) endmacro(load_generated_classes ) macro(qtd_add_resource output) @@ -303,7 +303,8 @@ #if(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) ## # add_custom_command(TARGET example_${name} POST_BUILD COMMAND "${STRIP}" ARGS "${output}") #endif(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) - add_dependencies(${name} allpackages) + add_dependencies(examples ${name}) + add_dependencies(${name} allpackages tools) endmacro(build_example sources) ##-------------------------------------------- @@ -529,19 +530,21 @@ add_custom_target(generate_headers ALL DEPENDS ${interfaces_list}) endif(GENERATE_DI_FILES) - set(CPACK_COMPONENTS_ALL qtd qtd_tools) ##-------------------------------------------- ## Build other parts of the QtD. ##-------------------------------------------- -add_custom_target(tools ALL) + if(BUILD_TOOLS) + add_custom_target(tools ALL) add_subdirectory(tools) add_dependencies(tools drcc duic) endif(BUILD_TOOLS) if(BUILD_EXAMPLES) + add_custom_target(examples ALL) + add_dependencies(examples allpackages tools) add_subdirectory(demos) add_subdirectory(examples) endif(BUILD_EXAMPLES)
--- a/cmake/FindD.cmake Sun Jul 19 18:20:15 2009 +0000 +++ b/cmake/FindD.cmake Mon Jul 20 06:00:55 2009 +0000 @@ -488,7 +488,7 @@ endmacro(add_d_shared_lib name) ## Add library target. -## Library would shared if it supported. +## Library will shared if it supported. macro(add_d_lib name) if(D_IS_MARS) add_d_target(${name} TYPE STATIC ${ARGN}) @@ -498,19 +498,37 @@ endmacro(add_d_lib name) ## -macro(get_imported_files imported) +macro(get_imported_files_old imported) execute_process(COMMAND ${DC} -c -o- -v ${compile_flags_tmp} ${ARGN} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE dc_output_tmp ) string(REGEX MATCHALL "import[^\\(]*([^\\)]*)" dc_output_tmp "${dc_output_tmp}") + + ## Initial filter. + regex_safe_string(tmp ${CMAKE_CURRENT_SOURCE_DIR}) + regex_safe_string(tmp2 ${CMAKE_CURRENT_BINARY_DIR}) + set(regex_includes_tmp ${tmp}|${tmp2}) + set(${imported}) foreach(import_tmp ${dc_output_tmp}) + ## Getting a next import. string(REGEX REPLACE "import[^\\(]*\\(([^\\)]*)" "\\1" import_tmp ${import_tmp}) - set(${imported} ${${imported}} ${import_tmp}) + ## Filtering. + file(TO_CMAKE_PATH import_tmp ${import_tmp}) + string(REGEX MATCH "(${regex_includes_tmp})[^/]*" found "${import_tmp}") + string(SUBSTRING "${import_tmp}" 0 1 first_sym_tmp) + set(full_path_tmp) + if(${first_sym_tmp} STREQUAL "/") + set(full_path_tmp 1) + endif(${first_sym_tmp} STREQUAL "/") + if(NOT found AND full_path_tmp) + else(NOT found AND full_path_tmp) + set(${imported} ${${imported}} ${import_tmp}) + endif(NOT found AND full_path_tmp) endforeach(import_tmp ${dc_output_tmp}) -endmacro(get_imported_files imported) +endmacro(get_imported_files_old imported) macro(filter_paths result) set(${result}) @@ -561,7 +579,7 @@ endmacro(filter_paths ) macro(get_files_depends out) - get_imported_files(${out} ${ARGN}) - filter_paths(${out} ${${out}} INCLUDE_CURRENT_DIR INCLUDE_PATHS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) + get_imported_files_old(${out} ${ARGN}) + #filter_paths(${out} ${${out}} INCLUDE_CURRENT_DIR INCLUDE_PATHS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) set(${out} ${ARGN} ${${out}}) endmacro(get_files_depends out) \ No newline at end of file
--- a/generator/CMakeLists.txt Sun Jul 19 18:20:15 2009 +0000 +++ b/generator/CMakeLists.txt Mon Jul 20 06:00:55 2009 +0000 @@ -207,93 +207,16 @@ # add_precompiled_header(generator ${CMAKE_CURRENT_SOURCE_DIR}/generator_pch.h) #ENDIF(NOT USEPCH) -macro(add_dgen_target package) - string(TOLOWER ${package} package) - set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/built_${package}.txt) - set(dgen_build_conf_req ${CMAKE_BINARY_DIR}/CMakeFiles/built_${package}_with_req.txt) +if(NOT "${packages_in_build_txt}" STREQUAL "${packages}") + set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt) file(REMOVE ${dgen_build_conf}) - file(REMOVE ${dgen_build_conf_req}) file(APPEND ${dgen_build_conf} "<typesystem>\n") - file(APPEND ${dgen_build_conf_req} "<typesystem>\n") - foreach(req ${ARGN}) - string(TOLOWER ${req} req_lower) - file(APPEND ${dgen_build_conf} " <load-typesystem name=\"typesystem_${req_lower}.xml\" generate=\"no\" />\n") - file(APPEND ${dgen_build_conf_req} " <load-typesystem name=\"typesystem_${req_lower}.xml\" generate=\"yes\" />\n") - endforeach(req ${ARGN}) - - if(${package} STREQUAL "all") - foreach(pack ${ARGN}) - set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${pack}/metainfo.cpp) ## Temporary - break(pack ${ARGN}) - endforeach(pack ${ARGN}) - else(${package} STREQUAL "all") - set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${package}/qt_${package}.pri) - set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}.xml - ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}-java.java) + foreach(package ${packages}) file(APPEND ${dgen_build_conf} " <load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n") - file(APPEND ${dgen_build_conf_req} " <load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n") - endif(${package} STREQUAL "all") - + endforeach(package ${packages}) file(APPEND ${dgen_build_conf} "</typesystem>\n") - file(APPEND ${dgen_build_conf_req} "</typesystem>\n") - - foreach(pack ${ARGN}) - string(TOLOWER ${pack} pack_lower) - set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack_lower}.xml - ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack_lower}-java.java) - endforeach(pack ${ARGN}) - - add_custom_command(OUTPUT ${dgen_impl} - COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl} - COMMAND "generator" - ARGS ${GEN_OPT} --no-repreprocess --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=./ - --source-directory=${CMAKE_SOURCE_DIR}/generator - qtjambi_masterinclude.h - ${dgen_build_conf} - COMMENT "Generating binding..." - DEPENDS generator ${gen_sources} - ) - add_custom_target(dgen_${package} DEPENDS ${dgen_impl} COMMENT "") -endmacro(add_dgen_target target package required) - -foreach(pack ${packages}) - set(gen_typesystem ${gen_typesystem} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack}.xml) - set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack}-java.java) -endforeach(pack ${packages}) - -set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt) -file(REMOVE ${dgen_build_conf}) -file(APPEND ${dgen_build_conf} "<typesystem>\n") -foreach(package ${packages}) - file(APPEND ${dgen_build_conf} " <load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n") -endforeach(package ${packages}) -file(APPEND ${dgen_build_conf} "</typesystem>\n") - -# macro(add_sources_for_generating) -# set(parameters_list_file ${CMAKE_BINARY_DIR}/CMakeFiles/dgen_parameters) -# if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) -# file(REMOVE ${parameters_list_file}) -# foreach(arg ${ARGN}) -# file(APPEND ${parameters_list_file} "${arg}\n") -# endforeach(arg) -# set(param @${parameters_list_file}) -# elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux) -# set(param ${parameters}) -# endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) -# foreach(dgen_impl ${ARGN}) -# add_custom_command(OUTPUT ${dgen_impl} -# COMMAND ${CMAKE_COMMAND} -E remove -f ${param} -# COMMAND "generator" -# ARGS ${GEN_OPT} --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=${CMAKE_BINARY_DIR} -# --source-directory=${CMAKE_SOURCE_DIR}/generator -# qtjambi_masterinclude.h -# ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt -# COMMENT "Generating binding..." -# DEPENDS generator ${gen_typesystem} ${gen_sources} -# ) -# endforeach(dgen_impl ${ARGN}) -# add_custom_target(dgen DEPENDS ${ARGN}) -# endmacro(add_sources_for_generating) + set(packages_in_build_txt ${packages} CACHE INTERNAL "") +endif(NOT "${packages_in_build_txt}" STREQUAL "${packages}") set(gen_sources) foreach(package ${packages})