Mercurial > projects > qtd
diff cmake/FindD.cmake @ 237:62d0dce52dac
CMake: improvements && fixes
author | SokoL_SD |
---|---|
date | Mon, 20 Jul 2009 06:00:55 +0000 |
parents | b796329e8c38 |
children | 2d061b52e077 |
line wrap: on
line diff
--- 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