aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorMarin Ivanov <[email protected]>2025-07-25 10:17:14 +0300
committerMarin Ivanov <[email protected]>2026-01-18 20:09:26 +0200
commit0168586485e6310c598713c911b1dec5618d61a1 (patch)
tree6aabc2a12ef8fef70683f5389bea00f948015f77 /src/CMakeLists.txt
Initial commitHEADmaster
* codec2 cut-down version 1.2.0 * Remove codebook and generation of sources * remove c2dec c2enc binaries * prepare for emscripten
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..16a7a25
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,89 @@
+#
+# codec2 library sources
+#
+
+set(CODEC2_SRCS
+ lpc.c
+ nlp.c
+ postfilter.c
+ sine.c
+ codec2.c
+ codec2_fft.c
+ codec2_fifo.c
+ kiss_fft.c
+ kiss_fftr.c
+ interp.c
+ lsp.c
+ mbest.c
+ newamp1.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
+ phi0.c
+ lpcnet_freq.c
+)
+
+set(CODEC2_PUBLIC_HEADERS
+ codec2.h
+ codec2_fifo.h
+ comp.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})
+add_executable(codec2lib ${CODEC2_SRCS})
+if(UNIX)
+ target_link_libraries(codec2 PUBLIC m)
+endif(UNIX)
+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
+)
+
+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
+)
+
+set(EMSCRIPTEN_OPTS "-s 'STRICT=1' -s 'ALLOW_MEMORY_GROWTH=1' -s 'WASM=1' -s 'MODULARIZE=1' -s 'EXTRA_EXPORTED_RUNTIME_METHODS=[FS]'")
+#set_target_properties(codec2lib PROPERTIES LINK_FLAGS "${EMSCRIPTEN_OPTS} --no-entry -s 'EXPORT_NAME=createCodec2'") \ No newline at end of file