1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-21 08:01:13 +01:00

Updates the cmake build system

It's still has some work, but it successfully builds on
all 3 main platforms.  Some of the outstanding items
include:

   Install target testing (mostly important for Linux)
   CMakeList clean up and comments
   Debug and Release build verification
   Audit of compile/link options
   Need a Mac signed and notarized build
   (and probably more)
This commit is contained in:
Leland Lucius
2020-02-03 00:39:43 -06:00
parent 3b77af5dfc
commit 6217351a12
57 changed files with 7958 additions and 6106 deletions

View File

@@ -1,71 +1,58 @@
#directory cmake-proxies/libvorbis
set( TARGET libvorbis )
set( TARGET_SOURCE ${LIB_SRC_DIRECTORY}${TARGET} )
project( ${TARGET} )
set( SOURCES
#${LIB_SRC_DIRECTORY}libvorbis/examples/chaining_example.c
#${LIB_SRC_DIRECTORY}libvorbis/examples/decoder_example.c
#${LIB_SRC_DIRECTORY}libvorbis/examples/encoder_example.c
#${LIB_SRC_DIRECTORY}libvorbis/examples/seeking_example.c
#${LIB_SRC_DIRECTORY}libvorbis/examples/vorbisfile_example.c
${LIB_SRC_DIRECTORY}libvorbis/lib/analysis.c
#${LIB_SRC_DIRECTORY}libvorbis/lib/barkmel.c
${LIB_SRC_DIRECTORY}libvorbis/lib/bitrate.c
${LIB_SRC_DIRECTORY}libvorbis/lib/block.c
${LIB_SRC_DIRECTORY}libvorbis/lib/codebook.c
${LIB_SRC_DIRECTORY}libvorbis/lib/envelope.c
${LIB_SRC_DIRECTORY}libvorbis/lib/floor0.c
${LIB_SRC_DIRECTORY}libvorbis/lib/floor1.c
${LIB_SRC_DIRECTORY}libvorbis/lib/info.c
${LIB_SRC_DIRECTORY}libvorbis/lib/lookup.c
${LIB_SRC_DIRECTORY}libvorbis/lib/lpc.c
${LIB_SRC_DIRECTORY}libvorbis/lib/lsp.c
${LIB_SRC_DIRECTORY}libvorbis/lib/mapping0.c
${LIB_SRC_DIRECTORY}libvorbis/lib/mdct.c
${LIB_SRC_DIRECTORY}libvorbis/lib/psy.c
#${LIB_SRC_DIRECTORY}libvorbis/lib/psytune.c
${LIB_SRC_DIRECTORY}libvorbis/lib/registry.c
${LIB_SRC_DIRECTORY}libvorbis/lib/res0.c
${LIB_SRC_DIRECTORY}libvorbis/lib/sharedbook.c
${LIB_SRC_DIRECTORY}libvorbis/lib/smallft.c
${LIB_SRC_DIRECTORY}libvorbis/lib/synthesis.c
#${LIB_SRC_DIRECTORY}libvorbis/lib/tone.c
${LIB_SRC_DIRECTORY}libvorbis/lib/vorbisenc.c
${LIB_SRC_DIRECTORY}libvorbis/lib/vorbisfile.c
${LIB_SRC_DIRECTORY}libvorbis/lib/window.c
#${LIB_SRC_DIRECTORY}libvorbis/macos/compat/strdup.c
#${LIB_SRC_DIRECTORY}libvorbis/test/test.c
#${LIB_SRC_DIRECTORY}libvorbis/test/util.c
#${LIB_SRC_DIRECTORY}libvorbis/test/write_read.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/bookutil.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/build.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/cascade.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/distribution.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/genericdata.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/huffbuild.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/latticebuild.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/latticehint.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/latticepare.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/latticetune.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/lspdata.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/metrics.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/residuedata.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/residuesplit.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/run.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/train.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/vqgen.c
#${LIB_SRC_DIRECTORY}libvorbis/vq/vqsplit.c
)
# This defines the #define on both Windows and Linux.
add_definitions(
-D_LIB
)
add_library( ${TARGET} STATIC ${SOURCES})
add_library( ${TARGET} STATIC )
target_include_directories( ${TARGET} PRIVATE
${TARGET_SOURCE}/include
${LIB_SRC_DIRECTORY}/libogg/include
list( APPEND SOURCES
PRIVATE
${TARGET_ROOT}/lib/analysis.c
${TARGET_ROOT}/lib/bitrate.c
${TARGET_ROOT}/lib/block.c
${TARGET_ROOT}/lib/codebook.c
${TARGET_ROOT}/lib/envelope.c
${TARGET_ROOT}/lib/floor0.c
${TARGET_ROOT}/lib/floor1.c
${TARGET_ROOT}/lib/info.c
${TARGET_ROOT}/lib/lookup.c
${TARGET_ROOT}/lib/lpc.c
${TARGET_ROOT}/lib/lsp.c
${TARGET_ROOT}/lib/mapping0.c
${TARGET_ROOT}/lib/mdct.c
${TARGET_ROOT}/lib/psy.c
${TARGET_ROOT}/lib/registry.c
${TARGET_ROOT}/lib/res0.c
${TARGET_ROOT}/lib/sharedbook.c
${TARGET_ROOT}/lib/smallft.c
${TARGET_ROOT}/lib/synthesis.c
${TARGET_ROOT}/lib/vorbisenc.c
${TARGET_ROOT}/lib/vorbisfile.c
${TARGET_ROOT}/lib/window.c
)
target_link_libraries( ${TARGET} )
list( APPEND INCLUDES
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/private
${TARGET_ROOT}/lib
${LIBOGG_INCLUDES}
PUBLIC
${TARGET_ROOT}/include
)
list( APPEND DEFINES
PRIVATE
HAVE_CONFIG_H
)
list( APPEND LIBRARIES
PRIVATE
libogg
)
configure_file( config.h.in private/config.h )
organize_source( "${TARGET_ROOT}" "" "${SOURCES}" )
target_sources( ${TARGET} PRIVATE ${SOURCES} )
target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} )
target_compile_features( ${TARGET} PRIVATE ${FEATURES} )
target_compile_options( ${TARGET} PRIVATE ${OPTIONS} )
target_include_directories( ${TARGET} PRIVATE ${INCLUDES} )
target_link_libraries( ${TARGET} PRIVATE ${LIBRARIES} )