aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt400
1 files changed, 400 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..4c7cabc
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,400 @@
+#
+# Generated sources
+#
+
+set(D ${CMAKE_CURRENT_SOURCE_DIR}/codebook)
+
+# lsp quantisers (2400/1400/1300 modes)
+set(CODEBOOKS
+ ${D}/lsp1.txt
+ ${D}/lsp2.txt
+ ${D}/lsp3.txt
+ ${D}/lsp4.txt
+ ${D}/lsp5.txt
+ ${D}/lsp6.txt
+ ${D}/lsp7.txt
+ ${D}/lsp8.txt
+ ${D}/lsp9.txt
+ ${D}/lsp10.txt
+)
+
+# lspd quantisers (3200 mode)
+set(CODEBOOKSD
+ ${D}/dlsp1.txt
+ ${D}/dlsp2.txt
+ ${D}/dlsp3.txt
+ ${D}/dlsp4.txt
+ ${D}/dlsp5.txt
+ ${D}/dlsp6.txt
+ ${D}/dlsp7.txt
+ ${D}/dlsp8.txt
+ ${D}/dlsp9.txt
+ ${D}/dlsp10.txt
+)
+
+# LSP VQ (1200 mode)
+set(CODEBOOKSJMV
+ ${D}/lspjmv1.txt
+ ${D}/lspjmv2.txt
+ ${D}/lspjmv3.txt
+)
+
+# Joint Wo-energy VQ (1200 mode)
+set(CODEBOOKSGE ${D}/gecb.txt)
+
+# 700C two stage VQ
+set(CODEBOOKSNEWAMP1
+ ${D}/train_120_1.txt
+ ${D}/train_120_2.txt
+)
+
+set(CODEBOOKSNEWAMP1_ENERGY
+ ${D}/newamp1_energy_q.txt
+)
+
+# 450 mode two stage VQ
+set(CODEBOOKSNEWAMP2
+ ${D}/codes_450.txt
+)
+
+set(CODEBOOKSNEWAMP2_ENERGY
+ ${D}/newamp2_energy_q.txt
+)
+
+# when crosscompiling we need a native executable
+if(CMAKE_CROSSCOMPILING)
+ set(CMAKE_DISABLE_SOURCE_CHANGES OFF)
+ include(ExternalProject)
+ ExternalProject_Add(codec2_native
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/codec2_native
+ BUILD_COMMAND ${CMAKE_COMMAND} --build . --target generate_codebook
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/codec2_native/src/generate_codebook ${CMAKE_CURRENT_BINARY_DIR}
+ BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/generate_codebook
+ )
+ add_executable(generate_codebook IMPORTED)
+ set_target_properties(generate_codebook PROPERTIES
+ IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/generate_codebook)
+ add_dependencies(generate_codebook codec2_native)
+ set(CMAKE_DISABLE_SOURCE_CHANGES ON)
+else(CMAKE_CROSSCOMPILING)
+# Build code generator binaries. These do not get installed.
+ # generate_codebook
+ add_executable(generate_codebook generate_codebook.c)
+ target_link_libraries(generate_codebook m)
+ # Make native builds available for cross-compiling.
+ export(TARGETS generate_codebook
+ FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake)
+endif(CMAKE_CROSSCOMPILING)
+
+
+# codebook.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebook.c
+ COMMAND generate_codebook lsp_cb ${CODEBOOKS} > ${CMAKE_CURRENT_BINARY_DIR}/codebook.c
+ DEPENDS generate_codebook ${CODEBOOKS}
+)
+
+# codebookd.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c
+ COMMAND generate_codebook lsp_cbd ${CODEBOOKSD} > ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c
+ DEPENDS generate_codebook ${CODEBOOKSD}
+)
+
+# codebookjmv.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjmv.c
+ COMMAND generate_codebook lsp_cbjmv ${CODEBOOKSJMV} > ${CMAKE_CURRENT_BINARY_DIR}/codebookjmv.c
+ DEPENDS generate_codebook ${CODEBOOKSJMV}
+)
+
+# codebookge.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
+ COMMAND generate_codebook ge_cb ${CODEBOOKSGE} > ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
+ DEPENDS generate_codebook ${CODEBOOKSGE}
+)
+
+# codebooknewamp1.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1.c
+ COMMAND generate_codebook newamp1vq_cb ${CODEBOOKSNEWAMP1} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1.c
+ DEPENDS generate_codebook ${CODEBOOKSNEWAMP1}
+)
+
+# codebooknewamp1_energy.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1_energy.c
+ COMMAND generate_codebook newamp1_energy_cb ${CODEBOOKSNEWAMP1_ENERGY} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1_energy.c
+ DEPENDS generate_codebook ${CODEBOOKSNEWAMP1_ENERGY}
+)
+
+# codebooknewamp2.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2.c
+ COMMAND generate_codebook newamp2vq_cb ${CODEBOOKSNEWAMP2} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2.c
+ DEPENDS generate_codebook ${CODEBOOKSNEWAMP2}
+)
+
+# codebooknewamp2_energy.c
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2_energy.c
+ COMMAND generate_codebook newamp2_energy_cb ${CODEBOOKSNEWAMP2_ENERGY} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2_energy.c
+ DEPENDS generate_codebook ${CODEBOOKSNEWAMP2_ENERGY}
+)
+
+#
+# codec2 library sources
+#
+
+set(CODEC2_SRCS
+ dump.c
+ lpc.c
+ nlp.c
+ postfilter.c
+ sine.c
+ codec2.c
+ codec2_fft.c
+ cohpsk.c
+ codec2_fifo.c
+ fdmdv.c
+ fm.c
+ fsk.c
+ fmfsk.c
+ kiss_fft.c
+ kiss_fftr.c
+ linreg.c
+ interp.c
+ lsp.c
+ mbest.c
+ newamp1.c
+ newamp2.c
+ ofdm.c
+ ofdm_mode.c
+ phase.c
+ quantise.c
+ pack.c
+ codebook.c
+ codebookd.c
+ codebookjmv.c
+ codebookge.c
+ codebooknewamp1.c
+ codebooknewamp1_energy.c
+ codebooknewamp2.c
+ codebooknewamp2_energy.c
+ golay23.c
+ freedv_api.c
+ freedv_1600.c
+ freedv_700.c
+ freedv_2020.c
+ freedv_fsk.c
+ freedv_vhf_framing.c
+ freedv_data_channel.c
+ varicode.c
+ modem_stats.c
+ ofdm.c
+ mpdecode_core.c
+ phi0.c
+ gp_interleaver.c
+ interldpc.c
+ filter.c
+ HRA_112_112.c
+ HRA_56_56.c
+ HRAb_396_504.c
+ H_256_768_22.c
+ H_256_512_4.c
+ HRAa_1536_512.c
+ H_128_256_5.c
+ H_2064_516_sparse.c
+ H_4096_8192_3d.c
+ H_16200_9720.c
+ H_1024_2048_4f.c
+ H_212_158.c
+ ldpc_codes.c
+ lpcnet_freq.c
+ reliable_text.c
+)
+
+set(CODEC2_PUBLIC_HEADERS
+ codec2.h
+ codec2_fdmdv.h
+ codec2_cohpsk.h
+ codec2_fm.h
+ codec2_ofdm.h
+ fsk.h
+ codec2_fifo.h
+ comp.h
+ modem_stats.h
+ freedv_api.h
+ reliable_text.h
+ codec2_math.h
+ ${CODEC2_VERSION_PATH}/version.h
+)
+
+#
+# Debug options
+#
+#add_definitions(-DDEBUG_ALLOC)
+
+#
+# Setup the codec2 library
+#
+# Patch level version bumps should not change API/ABI.
+set(SOVERSION "${CODEC2_VERSION_MAJOR}.${CODEC2_VERSION_MINOR}")
+message(STATUS "codec2 version: ${CODEC2_VERSION}")
+add_library(codec2 ${CODEC2_SRCS})
+if(UNIX)
+ target_link_libraries(codec2 PUBLIC m)
+endif(UNIX)
+if(LPCNET AND lpcnetfreedv_FOUND)
+ target_link_libraries(codec2 PRIVATE lpcnetfreedv)
+endif()
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+set_target_properties(codec2 PROPERTIES
+ SOVERSION ${SOVERSION}
+ PUBLIC_HEADER "${CODEC2_PUBLIC_HEADERS}"
+)
+
+# Required include directories for export
+target_include_directories(codec2 INTERFACE
+ $<INSTALL_INTERFACE:include/codec2>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
+)
+
+# Export config for import from full install
+install(EXPORT codec2-config
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2
+)
+
+# Export config for import from build tree.
+export(TARGETS codec2
+ FILE ${CMAKE_BINARY_DIR}/codec2.cmake
+)
+
+add_executable(c2enc c2enc.c)
+target_link_libraries(c2enc codec2)
+
+add_executable(c2dec c2dec.c)
+target_link_libraries(c2dec codec2)
+
+add_executable(c2sim c2sim.c sd.c)
+target_link_libraries(c2sim codec2)
+
+add_executable(fdmdv_get_test_bits fdmdv_get_test_bits.c fdmdv.c kiss_fft.c codec2_fft.c kiss_fftr.c)
+target_link_libraries(fdmdv_get_test_bits m)
+
+add_executable(fdmdv_mod fdmdv_mod.c fdmdv.c kiss_fft.c codec2_fft.c kiss_fftr.c)
+target_link_libraries(fdmdv_mod m)
+
+add_executable(fdmdv_demod fdmdv_demod.c fdmdv.c kiss_fft.c octave.c modem_stats.c codec2_fft.c kiss_fftr.c)
+target_link_libraries(fdmdv_demod m)
+
+add_executable(fdmdv_put_test_bits fdmdv_put_test_bits.c fdmdv.c kiss_fft.c codec2_fft.c kiss_fftr.c)
+target_link_libraries(fdmdv_put_test_bits m)
+
+add_executable(freedv_tx freedv_tx.c)
+target_link_libraries(freedv_tx codec2)
+
+add_executable(freedv_rx freedv_rx.c)
+target_link_libraries(freedv_rx codec2)
+
+add_executable(freedv_data_raw_tx freedv_data_raw_tx.c)
+target_link_libraries(freedv_data_raw_tx codec2)
+
+add_executable(freedv_data_raw_rx freedv_data_raw_rx.c octave.c)
+target_link_libraries(freedv_data_raw_rx codec2)
+
+add_executable(freedv_data_tx freedv_data_tx.c)
+target_link_libraries(freedv_data_tx codec2)
+
+add_executable(freedv_data_rx freedv_data_rx.c)
+target_link_libraries(freedv_data_rx codec2)
+
+add_executable(freedv_mixed_tx freedv_mixed_tx.c)
+target_link_libraries(freedv_mixed_tx codec2)
+
+add_executable(freedv_mixed_rx freedv_mixed_rx.c)
+target_link_libraries(freedv_mixed_rx codec2)
+
+add_executable(fsk_mod fsk_mod.c)
+target_link_libraries(fsk_mod codec2)
+
+add_executable(fsk_mod_ext_vco fsk_mod_ext_vco.c)
+target_link_libraries(fsk_mod_ext_vco m)
+
+add_executable(fsk_demod fsk_demod.c modem_probe.c octave.c)
+target_link_libraries(fsk_demod codec2)
+
+add_executable(fsk_get_test_bits fsk_get_test_bits.c)
+target_link_libraries(fsk_get_test_bits)
+
+add_executable(fsk_put_test_bits fsk_put_test_bits.c)
+target_link_libraries(fsk_put_test_bits codec2)
+
+add_executable(framer framer.c)
+target_link_libraries(framer)
+
+add_executable(deframer deframer.c)
+target_link_libraries(deframer)
+
+add_executable(fm_demod fm_demod.c fm.c)
+target_link_libraries(fm_demod m)
+
+add_executable(cohpsk_mod cohpsk_mod.c)
+target_link_libraries(cohpsk_mod codec2)
+
+add_executable(ofdm_get_test_bits ofdm_get_test_bits.c)
+target_link_libraries(ofdm_get_test_bits codec2)
+
+add_executable(ofdm_put_test_bits ofdm_put_test_bits.c)
+target_link_libraries(ofdm_put_test_bits codec2)
+
+add_executable(ofdm_mod ofdm_mod.c)
+target_link_libraries(ofdm_mod codec2)
+
+add_executable(ofdm_demod ofdm_demod.c octave.c)
+target_link_libraries(ofdm_demod codec2)
+
+add_executable(fmfsk_mod fmfsk_mod.c)
+target_link_libraries(fmfsk_mod codec2)
+
+add_executable(fmfsk_demod fmfsk_demod.c modem_probe.c octave.c)
+target_link_libraries(fmfsk_demod codec2)
+
+add_executable(vhf_deframe_c2 vhf_deframe_c2.c)
+target_link_libraries(vhf_deframe_c2 codec2)
+
+add_executable(vhf_frame_c2 vhf_frame_c2.c)
+target_link_libraries(vhf_frame_c2 codec2)
+
+add_executable(cohpsk_demod cohpsk_demod.c octave.c)
+target_link_libraries(cohpsk_demod codec2)
+
+add_executable(cohpsk_get_test_bits cohpsk_get_test_bits.c)
+target_link_libraries(cohpsk_get_test_bits codec2)
+
+add_executable(cohpsk_put_test_bits cohpsk_put_test_bits.c octave.c)
+target_link_libraries(cohpsk_put_test_bits codec2)
+
+add_executable(ch ch.c)
+target_link_libraries(ch codec2)
+
+add_executable(tollr tollr.c)
+
+add_executable(ldpc_noise ldpc_noise.c)
+target_link_libraries(ldpc_noise m)
+
+add_executable(ldpc_enc ldpc_enc.c)
+target_link_libraries(ldpc_enc codec2)
+
+add_executable(ldpc_dec ldpc_dec.c)
+target_link_libraries(ldpc_dec codec2)
+
+install(TARGETS codec2 EXPORT codec2-config
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/codec2 COMPONENT dev
+)