summaryrefslogtreecommitdiff
path: root/gr-vocoder/python/vocoder
diff options
context:
space:
mode:
authorRyan Volz <ryan.volz@gmail.com>2020-10-01 14:34:26 -0400
committermormj <34754695+mormj@users.noreply.github.com>2020-10-20 10:01:30 -0400
commita93d6c3bf2e20f3f3795fc631af33acc9ef1f187 (patch)
tree0f3e528e6ec0a7e822db84f9373f1b4de30bd293 /gr-vocoder/python/vocoder
parentce5ae4863b56c84d6bf3d5c45ea07d8b45544c82 (diff)
vocoder: cmake: Use pybind macros to manage bindings.
This helps prevent current and future headaches by making sure improvements to the pybind11 CMake don't also need to be added specifically for gr-vocoder.
Diffstat (limited to 'gr-vocoder/python/vocoder')
-rw-r--r--gr-vocoder/python/vocoder/bindings/CMakeLists.txt59
1 files changed, 19 insertions, 40 deletions
diff --git a/gr-vocoder/python/vocoder/bindings/CMakeLists.txt b/gr-vocoder/python/vocoder/bindings/CMakeLists.txt
index 48f73546c1..9901d033c8 100644
--- a/gr-vocoder/python/vocoder/bindings/CMakeLists.txt
+++ b/gr-vocoder/python/vocoder/bindings/CMakeLists.txt
@@ -2,7 +2,7 @@
# Python Bindings
########################################################################
-pybind11_add_module(vocoder_python
+list(APPEND vocoder_python_files
alaw_decode_bs_python.cc
alaw_encode_sb_python.cc
cvsd_decode_bs_python.cc
@@ -17,8 +17,7 @@ pybind11_add_module(vocoder_python
ulaw_encode_sb_python.cc)
if(LIBCODEC2_FOUND)
- target_compile_definitions(vocoder_python PRIVATE LIBCODEC2_FOUND)
- target_sources(vocoder_python PRIVATE
+ list(APPEND vocoder_python_files
codec2_python.cc
codec2_decode_ps_python.cc
codec2_encode_sp_python.cc
@@ -26,8 +25,7 @@ if(LIBCODEC2_FOUND)
endif(LIBCODEC2_FOUND)
if(LIBCODEC2_HAS_FREEDV_API)
- target_compile_definitions(vocoder_python PRIVATE LIBCODEC2_HAS_FREEDV_API)
- target_sources(vocoder_python PRIVATE
+ list(APPEND vocoder_python_files
freedv_api_python.cc
freedv_rx_ss_python.cc
freedv_tx_ss_python.cc
@@ -35,48 +33,29 @@ if(LIBCODEC2_HAS_FREEDV_API)
endif(LIBCODEC2_HAS_FREEDV_API)
if(LIBGSM_FOUND)
- target_compile_definitions(vocoder_python PRIVATE LIBGSM_FOUND)
- target_sources(vocoder_python PRIVATE
+ list(APPEND vocoder_python_files
gsm_fr_decode_ps_python.cc
gsm_fr_encode_sp_python.cc
)
endif(LIBGSM_FOUND)
-target_sources(vocoder_python PRIVATE
- python_bindings.cc)
+list(APPEND vocoder_python_files python_bindings.cc)
-configure_file(${CMAKE_SOURCE_DIR}/docs/doxygen/pydoc_macros.h ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
+GR_PYBIND_MAKE_CHECK_HASH(vocoder
+ ../../..
+ gr::vocoder
+ "${vocoder_python_files}")
-if(ENABLE_DOXYGEN)
- add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/docstring_status
- COMMAND python3 ${CMAKE_SOURCE_DIR}/docs/doxygen/update_pydoc.py "sub"
- "--json_path" ${CMAKE_BINARY_DIR}/docs/doxygen/gnuradio_docstrings.json
- "--bindings_dir" ${CMAKE_CURRENT_SOURCE_DIR}/docstrings
- "--output_dir" ${CMAKE_CURRENT_BINARY_DIR}
- "--filter" gr::vocoder
- COMMENT "Adding docstrings into vocoder pybind headers ..."
- DEPENDS gnuradio_docstrings)
- add_custom_target(vocoder_docstrings ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/docstring_status)
-else(ENABLE_DOXYGEN)
- add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/docstring_status
- COMMAND python3 ${CMAKE_SOURCE_DIR}/docs/doxygen/update_pydoc.py "copy"
- "--bindings_dir" ${CMAKE_CURRENT_SOURCE_DIR}/docstrings
- "--output_dir" ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Copying vocoder docstring templates as pybind headers ...")
- add_custom_target(vocoder_docstrings ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/docstring_status)
-endif(ENABLE_DOXYGEN)
+if(LIBCODEC2_FOUND)
+ target_compile_definitions(vocoder_python PRIVATE LIBCODEC2_FOUND)
+endif(LIBCODEC2_FOUND)
-target_include_directories(vocoder_python PUBLIC
- ${CMAKE_CURRENT_BINARY_DIR}
- ${PYTHON_NUMPY_INCLUDE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../lib
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../include
- ${PYBIND11_INCLUDE_DIR}
-)
-target_link_libraries(vocoder_python PUBLIC ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} gnuradio-runtime gnuradio-vocoder)
-target_compile_options(vocoder_python PRIVATE -Wno-unused-variable) # disable warnings for docstring templates
-add_dependencies(vocoder_python vocoder_docstrings)
+if(LIBCODEC2_HAS_FREEDV_API)
+ target_compile_definitions(vocoder_python PRIVATE LIBCODEC2_HAS_FREEDV_API)
+endif(LIBCODEC2_HAS_FREEDV_API)
+
+if(LIBGSM_FOUND)
+ target_compile_definitions(vocoder_python PRIVATE LIBGSM_FOUND)
+endif(LIBGSM_FOUND)
install(TARGETS vocoder_python DESTINATION ${GR_PYTHON_DIR}/gnuradio/vocoder COMPONENT pythonapi)