280 lines
7.3 KiB
CMake
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}
|
|
)
|