diff options
-rw-r--r-- | cmake/Modules/GrMiscUtils.cmake | 19 | ||||
-rw-r--r-- | cmake/Modules/GrSwig.cmake | 8 | ||||
-rw-r--r-- | gr-trellis/src/lib/CMakeLists.txt | 10 |
3 files changed, 28 insertions, 9 deletions
diff --git a/cmake/Modules/GrMiscUtils.cmake b/cmake/Modules/GrMiscUtils.cmake index f96dbee740..de2683d9cd 100644 --- a/cmake/Modules/GrMiscUtils.cmake +++ b/cmake/Modules/GrMiscUtils.cmake @@ -176,3 +176,22 @@ function(GR_LIBRARY_FOO target) endif(LIBRARY_EXTRAS) endfunction(GR_LIBRARY_FOO) + +######################################################################## +# Create a dummy custom command that depends on other targets. +# Usage: +# GR_GEN_TARGET_DEPS(unique_name target_deps <target1> <target2> ...) +# ADD_CUSTOM_COMMAND(<the usual args> ${target_deps}) +# +# Custom command cant depend on targets, but can depend on executables, +# and executables can depend on targets. So this is the process: +######################################################################## +function(GR_GEN_TARGET_DEPS name var) + set(_dummy_target _${name}_dummy_target) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${_dummy_target}.cpp "int main(void){return 0;}\n") + add_executable(${_dummy_target} ${CMAKE_CURRENT_BINARY_DIR}/${_dummy_target}.cpp) + if(ARGN) + add_dependencies(${_dummy_target} ${ARGN}) + endif(ARGN) + set(${var} "DEPENDS;${_dummy_target};COMMAND;${_dummy_target}" PARENT_SCOPE) +endfunction(GR_GEN_TARGET_DEPS) diff --git a/cmake/Modules/GrSwig.cmake b/cmake/Modules/GrSwig.cmake index f8f339f1bd..1dfd62af2f 100644 --- a/cmake/Modules/GrSwig.cmake +++ b/cmake/Modules/GrSwig.cmake @@ -47,17 +47,19 @@ macro(GR_SWIG_MAKE name) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - #create a dummy target that depend on other targets + #Create a dummy custom command that depends on other targets + include(GrMiscUtils) + GR_GEN_TARGET_DEPS(${name} tag_deps ${GR_SWIG_TARGET_DEPS}) set(tag_file ${CMAKE_CURRENT_BINARY_DIR}/${name}.tag) add_custom_command( OUTPUT ${tag_file} - DEPENDS ${GR_SWIG_TARGET_DEPS} + DEPENDS ${GR_SWIG_SOURCE_DEPS} ${tag_deps} COMMAND ${CMAKE_COMMAND} -E touch ${tag_file} ) #append the specified include directories include_directories(${GR_SWIG_INCLUDE_DIRS}) - list(APPEND SWIG_MODULE_${name}_EXTRA_DEPS ${GR_SWIG_SOURCE_DEPS} ${tag_file}) + list(APPEND SWIG_MODULE_${name}_EXTRA_DEPS ${tag_file}) find_package(PythonLibs) include_directories(${PYTHON_INCLUDE_DIRS}) diff --git a/gr-trellis/src/lib/CMakeLists.txt b/gr-trellis/src/lib/CMakeLists.txt index 5a1c33c444..36434fe9fa 100644 --- a/gr-trellis/src/lib/CMakeLists.txt +++ b/gr-trellis/src/lib/CMakeLists.txt @@ -100,11 +100,6 @@ expand_h_cc_i(trellis_sccc_decoder_combined_XX fb fs fi cb cs ci) expand_h_cc_i(trellis_pccc_decoder_X b s i) expand_h_cc_i(trellis_pccc_decoder_combined_XX fb fs fi cb cs ci) -add_custom_target(trellis_generated DEPENDS - ${generated_trellis_includes} - ${generated_trellis_swigs} -) - ######################################################################## # Create the master trellis swig include files ######################################################################## @@ -200,7 +195,10 @@ if(ENABLE_PYTHON) include(GrPython) include(GrSwig) -set(GR_SWIG_TARGET_DEPS trellis_generated) +set(GR_SWIG_SOURCE_DEPS + ${generated_trellis_includes} + ${generated_trellis_swigs} +) set(GR_SWIG_INCLUDE_DIRS ${GR_TRELLIS_INCLUDE_DIRS} ${GNURADIO_CORE_SWIG_INCLUDE_DIRS} |