diff options
author | Andrej Rode <mail@andrejro.de> | 2019-03-02 19:59:00 +0100 |
---|---|---|
committer | Marcus Müller <marcus.mueller@ettus.com> | 2019-03-04 22:30:37 +0100 |
commit | ab2fb35677e38a384df3f9503d1f45f64bbc0374 (patch) | |
tree | c59965a71d4951e9bcae9efcf9a6005df2f340a1 /gr-wavelet | |
parent | 4e777f1c0ee28011255e3b6b703463cef0f207e0 (diff) |
cmake: Update to modern CMake usage
This includes using target based setting of includes
and link libraries. This will transitively add the includes
and linking flags to dependent targets.
This is still a work in progress since only the dynamic
libraries have been touched and not all of include_directories
directives are gone yet.
cmake: remove GR_INCLUDE_SUBDIRECTORY macro
Previously this macro was used to inject subdirectories in the
current CMake namespace. This is generally undesired and pollutes the
current context.
previously GNU Radio CMake had a non-default option ENABLE_STATIC_LIBS
to build both, shared libraries and static libraries.
This seems to be a construction taken over from autotools and serves
no purpuose in CMake and complicates the library building.
cmake: remove GR_LIBTOOL and la generation support
This looks like it was primarily used to support projects using
autotools, but comments state that the generated .la files aren't
compatible with autotools anyway.
cmake: Bump required CMake version to 3.8
UseSWIG cmake uses syntax which requires at least CMake 3.8 and is non-trivial
to change
Diffstat (limited to 'gr-wavelet')
-rw-r--r-- | gr-wavelet/CMakeLists.txt | 7 | ||||
-rw-r--r-- | gr-wavelet/lib/CMakeLists.txt | 74 | ||||
-rw-r--r-- | gr-wavelet/swig/CMakeLists.txt | 15 |
3 files changed, 17 insertions, 79 deletions
diff --git a/gr-wavelet/CMakeLists.txt b/gr-wavelet/CMakeLists.txt index 76f454746a..b09ed89bd3 100644 --- a/gr-wavelet/CMakeLists.txt +++ b/gr-wavelet/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2012 Free Software Foundation, Inc. +# Copyright 2012,2019 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -37,11 +37,6 @@ GR_REGISTER_COMPONENT("gr-wavelet" ENABLE_GR_WAVELET GSL_FOUND ) -GR_SET_GLOBAL(GR_WAVELET_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/lib - ${CMAKE_CURRENT_SOURCE_DIR}/include -) - ######################################################################## # Begin conditional configuration ######################################################################## diff --git a/gr-wavelet/lib/CMakeLists.txt b/gr-wavelet/lib/CMakeLists.txt index 20dc8d9943..ddb28a2c4a 100644 --- a/gr-wavelet/lib/CMakeLists.txt +++ b/gr-wavelet/lib/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2012,2014 Free Software Foundation, Inc. +# Copyright 2012,2014,2019 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -18,31 +18,9 @@ # Boston, MA 02110-1301, USA. ######################################################################## -# Setup the include and linker paths -######################################################################## -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${GR_WAVELET_INCLUDE_DIRS} - ${GR_BLOCKS_INCLUDE_DIRS} - ${GNURADIO_RUNTIME_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} - ${GSL_INCLUDE_DIRS} -) - -link_directories(${GR_WAVELET_LIBRARY_DIRS}) -link_directories(${Boost_LIBRARY_DIRS}) -link_directories(${GSL_LIBRARY_DIRS}) -add_definitions(${GSL_DEFINITIONS}) - -if(ENABLE_GR_CTRLPORT) - ADD_DEFINITIONS(-DGR_CTRLPORT) -endif(ENABLE_GR_CTRLPORT) - -######################################################################## # Setup library ######################################################################## -list(APPEND gr_wavelet_sources +add_library(gnuradio-wavelet squash_ff_impl.cc wavelet_ff_impl.cc wvps_ff_impl.cc @@ -57,54 +35,28 @@ if(MSVC) ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-wavelet.rc @ONLY) - list(APPEND gr_wavelet_sources + target_sources(gnuradio-wavelet PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-wavelet.rc ) endif(MSVC) -list(APPEND wavelet_libs +target_link_libraries(gnuradio-wavelet PUBLIC gnuradio-runtime gnuradio-blocks - ${Boost_LIBRARIES} - ${WAVELET_LIBRARIES} - ${GSL_LIBRARIES} + gsl::gsl ) -add_library(gnuradio-wavelet SHARED ${gr_wavelet_sources}) -target_link_libraries(gnuradio-wavelet ${wavelet_libs}) +target_include_directories(gnuradio-wavelet + PUBLIC $<INSTALL_INTERFACE:include> + PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include> + ) + # we need -no-as-needed or else -lgslcblas gets stripped out on newer version of gcc if(CMAKE_COMPILER_IS_GNUCC AND NOT APPLE) SET_TARGET_PROPERTIES(gnuradio-wavelet PROPERTIES LINK_FLAGS "-Wl,--no-as-needed") endif() -GR_LIBRARY_FOO(gnuradio-wavelet) -add_dependencies(gnuradio-wavelet - gnuradio-runtime) - -if(ENABLE_STATIC_LIBS) - if(ENABLE_GR_CTRLPORT) - # Remove GR_CTRLPORT set this target's definitions. - # Makes sure we don't try to use ControlPort stuff in source files - GET_DIRECTORY_PROPERTY(STATIC_DEFS COMPILE_DEFINITIONS) - list(REMOVE_ITEM STATIC_DEFS "GR_CTRLPORT") - SET_PROPERTY(DIRECTORY PROPERTY COMPILE_DEFINITIONS "${STATIC_DEFS}") - - # readd it to the target since we removed it from the directory-wide list. - SET_PROPERTY(TARGET gnuradio-wavelet APPEND PROPERTY COMPILE_DEFINITIONS "GR_CTRLPORT") - endif(ENABLE_GR_CTRLPORT) - - add_library(gnuradio-wavelet_static STATIC ${gr_wavelet_sources}) - - add_dependencies(gnuradio-wavelet_static - gnuradio-runtime_static) - - if(NOT WIN32) - set_target_properties(gnuradio-wavelet_static - PROPERTIES OUTPUT_NAME gnuradio-wavelet) - endif(NOT WIN32) - - install(TARGETS gnuradio-wavelet_static - ARCHIVE DESTINATION lib${LIB_SUFFIX} # .lib file - ) -endif(ENABLE_STATIC_LIBS) +if(BUILD_SHARED_LIBS) + GR_LIBRARY_FOO(gnuradio-wavelet) +endif() diff --git a/gr-wavelet/swig/CMakeLists.txt b/gr-wavelet/swig/CMakeLists.txt index d9bc02edab..a54ca4fb7d 100644 --- a/gr-wavelet/swig/CMakeLists.txt +++ b/gr-wavelet/swig/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2012 Free Software Foundation, Inc. +# Copyright 2012,2019 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -23,17 +23,8 @@ include(GrPython) include(GrSwig) -set(GR_SWIG_INCLUDE_DIRS - ${GR_WAVELET_INCLUDE_DIRS} - ${GR_BLOCKS_INCLUDE_DIRS} - ${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} - ${GSL_INCLUDE_DIRS} -) - -if(ENABLE_GR_CTRLPORT) - list(APPEND GR_SWIG_FLAGS "-DGR_CTRLPORT") -endif(ENABLE_GR_CTRLPORT) +set(GR_SWIG_INCLUDE_DIRS $<TARGET_PROPERTY:runtime_swig,INCLUDE_DIRECTORIES>) +set(GR_SWIG_TARGET_DEPS runtime_swig) set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/wavelet_swig_doc.i) set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include/gnuradio/wavelet) |