UHSDR/UHSDR-active-devel/mchf-eclipse/drivers/freedv/CMakeLists.txt
2022-11-08 16:13:55 +01:00

280 lines
7.3 KiB
CMake

#
# Generated sources
#
set(D ${CMAKE_CURRENT_SOURCE_DIR}/codebook)
# lsp quantisers
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
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
)
set(CODEBOOKSJVM
${D}/lspjvm1.txt
${D}/lspjvm2.txt
${D}/lspjvm3.txt
)
set(CODEBOOKSMEL
${D}/mel1.txt
${D}/mel2.txt
${D}/mel3.txt
${D}/mel4.txt
${D}/mel5.txt
${D}/mel6.txt
)
set(CODEBOOKSLSPMELVQ
${D}/lspmelvq1.txt
${D}/lspmelvq2.txt
${D}/lspmelvq3.txt
)
set(CODEBOOKSGE ${D}/gecb.txt)
# when crosscompiling we need a native executable
if(CMAKE_CROSSCOMPILING)
include(ExternalProject)
ExternalProject_Add(codec2_native
SOURCE_DIR ${CMAKE_SOURCE_DIR}
BUILD_COMMAND $(MAKE) generate_codebook
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy src/generate_codebook ${CMAKE_CURRENT_BINARY_DIR}
)
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)
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 ${CMAKE_REQUIRED_LIBRARIES})
# genlspdtcb
add_executable(genlspdtcb genlspdtcb.c)
target_link_libraries(genlspdtcb ${CMAKE_REQUIRED_LIBRARIES})
# Make native builds available for cross-compiling.
export(TARGETS generate_codebook genlspdtcb
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}
)
# codebookjvm.c
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
COMMAND generate_codebook lsp_cbjvm ${CODEBOOKSJVM} > ${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
DEPENDS generate_codebook ${CODEBOOKSJVM}
)
# codebookmel.c
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookmel.c
COMMAND generate_codebook mel_cb ${CODEBOOKSMEL} > ${CMAKE_CURRENT_BINARY_DIR}/codebookmel.c
DEPENDS generate_codebook ${CODEBOOKSMEL}
)
# codebooklspmelvq.c
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooklspmelvq.c
COMMAND generate_codebook lspmelvq_cb ${CODEBOOKSLSPMELVQ} > ${CMAKE_CURRENT_BINARY_DIR}/codebooklspmelvq.c
DEPENDS generate_codebook ${CODEBOOKSLSPMELVQ}
)
# 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}
)
#
# codec2 library sources
#
set(CODEC2_SRCS
dump.c
lpc.c
nlp.c
postfilter.c
sine.c
codec2.c
cohpsk.c
fifo.c
fdmdv.c
fm.c
kiss_fft.c
linreg.c
interp.c
lsp.c
phase.c
quantise.c
pack.c
codebook.c
codebookd.c
codebookjvm.c
codebookmel.c
codebooklspmelvq.c
codebookge.c
golay23.c
freedv_api.c
varicode.c
modem_stats.c
)
set(CODEC2_PUBLIC_HEADERS
golay23.h
codec2.h
codec2_fdmdv.h
codec2_cohpsk.h
codec2_fm.h
codec2_fifo.h
comp.h
comp_prim.h
modem_stats.h
kiss_fft.h
freedv_api.h
varicode.h
freedv_api_internal.h
)
#
# Setup the codec2 library
#
add_library(codec2 ${CODEC2_SRCS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(codec2 ${CMAKE_REQUIRED_LIBRARIES})
set_target_properties(codec2 PROPERTIES
SOVERSION ${SOVERSION}
PUBLIC_HEADER "${CODEC2_PUBLIC_HEADERS}"
)
add_executable(c2demo c2demo.c)
target_link_libraries(c2demo ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(c2enc c2enc.c)
target_link_libraries(c2enc ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(c2dec c2dec.c)
target_link_libraries(c2dec ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(c2sim c2sim.c ampexp.c phaseexp.c)
target_link_libraries(c2sim ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(fdmdv_get_test_bits fdmdv_get_test_bits.c fdmdv.c kiss_fft.c)
target_link_libraries(fdmdv_get_test_bits ${CMAKE_REQUIRED_LIBRARIES})
add_executable(fdmdv_mod fdmdv_mod.c fdmdv.c kiss_fft.c)
target_link_libraries(fdmdv_mod ${CMAKE_REQUIRED_LIBRARIES})
add_executable(fdmdv_demod fdmdv_demod.c fdmdv.c kiss_fft.c octave.c modem_stats.c)
target_link_libraries(fdmdv_demod ${CMAKE_REQUIRED_LIBRARIES})
add_executable(fdmdv_put_test_bits fdmdv_put_test_bits.c fdmdv.c kiss_fft.c)
target_link_libraries(fdmdv_put_test_bits ${CMAKE_REQUIRED_LIBRARIES})
add_executable(fdmdv_channel fdmdv_channel.c)
target_link_libraries(fdmdv_channel ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(fdmdv_interleave fdmdv_interleave.c)
target_link_libraries(fdmdv_interleave ${CMAKE_REQUIRED_LIBRARIES})
add_executable(insert_errors insert_errors.c)
target_link_libraries(insert_errors ${CMAKE_REQUIRED_LIBRARIES})
add_executable(fec_enc fec_enc.c golay23.c)
target_link_libraries(fec_enc ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(fec_dec fec_dec.c golay23.c)
target_link_libraries(fec_dec ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(freedv_tx freedv_tx.c)
target_link_libraries(freedv_tx ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(freedv_rx freedv_rx.c)
target_link_libraries(freedv_rx ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(fm_demod fm_demod.c fm.c)
target_link_libraries(fm_demod ${CMAKE_REQUIRED_LIBRARIES})
add_executable(cohpsk_mod cohpsk_mod.c)
target_link_libraries(cohpsk_mod ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(cohpsk_demod cohpsk_demod.c octave.c)
target_link_libraries(cohpsk_demod ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(cohpsk_get_test_bits cohpsk_get_test_bits.c)
target_link_libraries(cohpsk_get_test_bits ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(cohpsk_put_test_bits cohpsk_put_test_bits.c octave.c)
target_link_libraries(cohpsk_put_test_bits ${CMAKE_REQUIRED_LIBRARIES} codec2)
add_executable(cohpsk_ch cohpsk_ch.c)
target_link_libraries(cohpsk_ch ${CMAKE_REQUIRED_LIBRARIES} codec2)
install(TARGETS codec2 EXPORT codec2-config
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/codec2
)
#install(EXPORT codec2-config
# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2
#)
install(TARGETS
c2demo
c2demo
c2enc
c2dec
c2sim
fdmdv_get_test_bits
fdmdv_mod fdmdv_demod
fm_demod
fdmdv_put_test_bits
fdmdv_interleave
insert_errors
fec_enc
fec_dec
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)