summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/Modules/GrMiscUtils.cmake19
-rw-r--r--cmake/Modules/GrSwig.cmake8
-rw-r--r--gr-trellis/src/lib/CMakeLists.txt10
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}