1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-17 08:30:06 +02:00
Leland Lucius ad77faca0d Use libraries not options
The ensures that any extra libraries (like "libm") get passed
at the end of the compile command.  Mattered on Ubuntu, but
not on Fedora.
2020-02-03 16:00:47 -06:00

184 lines
5.2 KiB
CMake

add_library( ${TARGET} STATIC )
def_vars()
list( APPEND SOURCES
PRIVATE
${TARGET_ROOT}/src/aiff.c
${TARGET_ROOT}/src/alaw.c
${TARGET_ROOT}/src/au.c
${TARGET_ROOT}/src/audio_detect.c
${TARGET_ROOT}/src/avr.c
${TARGET_ROOT}/src/broadcast.c
${TARGET_ROOT}/src/caf.c
${TARGET_ROOT}/src/chanmap.c
${TARGET_ROOT}/src/chunk.c
${TARGET_ROOT}/src/command.c
${TARGET_ROOT}/src/common.c
${TARGET_ROOT}/src/dither.c
${TARGET_ROOT}/src/double64.c
${TARGET_ROOT}/src/dwd.c
${TARGET_ROOT}/src/dwvw.c
${TARGET_ROOT}/src/file_io.c
${TARGET_ROOT}/src/flac.c
${TARGET_ROOT}/src/float32.c
${TARGET_ROOT}/src/g72x.c
${TARGET_ROOT}/src/gsm610.c
${TARGET_ROOT}/src/htk.c
${TARGET_ROOT}/src/id3.c
${TARGET_ROOT}/src/ima_adpcm.c
${TARGET_ROOT}/src/ima_oki_adpcm.c
${TARGET_ROOT}/src/interleave.c
${TARGET_ROOT}/src/ircam.c
${TARGET_ROOT}/src/macbinary3.c
${TARGET_ROOT}/src/macos.c
${TARGET_ROOT}/src/mat4.c
${TARGET_ROOT}/src/mat5.c
${TARGET_ROOT}/src/mpc2k.c
${TARGET_ROOT}/src/ms_adpcm.c
${TARGET_ROOT}/src/nist.c
${TARGET_ROOT}/src/ogg.c
${TARGET_ROOT}/src/paf.c
${TARGET_ROOT}/src/pcm.c
${TARGET_ROOT}/src/pvf.c
${TARGET_ROOT}/src/raw.c
${TARGET_ROOT}/src/rf64.c
${TARGET_ROOT}/src/rx2.c
${TARGET_ROOT}/src/sd2.c
${TARGET_ROOT}/src/sds.c
${TARGET_ROOT}/src/sndfile.c
${TARGET_ROOT}/src/strings.c
${TARGET_ROOT}/src/svx.c
${TARGET_ROOT}/src/txw.c
${TARGET_ROOT}/src/ulaw.c
${TARGET_ROOT}/src/voc.c
${TARGET_ROOT}/src/vox_adpcm.c
${TARGET_ROOT}/src/w64.c
${TARGET_ROOT}/src/wav.c
${TARGET_ROOT}/src/wav_w64.c
${TARGET_ROOT}/src/windows.c
${TARGET_ROOT}/src/wve.c
${TARGET_ROOT}/src/xi.c
${TARGET_ROOT}/src/G72x/g721.c
${TARGET_ROOT}/src/G72x/g723_16.c
${TARGET_ROOT}/src/G72x/g723_24.c
${TARGET_ROOT}/src/G72x/g723_40.c
${TARGET_ROOT}/src/G72x/g72x.c
${TARGET_ROOT}/src/GSM610/add.c
${TARGET_ROOT}/src/GSM610/code.c
${TARGET_ROOT}/src/GSM610/decode.c
${TARGET_ROOT}/src/GSM610/gsm_create.c
${TARGET_ROOT}/src/GSM610/gsm_decode.c
${TARGET_ROOT}/src/GSM610/gsm_destroy.c
${TARGET_ROOT}/src/GSM610/gsm_encode.c
${TARGET_ROOT}/src/GSM610/gsm_option.c
${TARGET_ROOT}/src/GSM610/long_term.c
${TARGET_ROOT}/src/GSM610/lpc.c
${TARGET_ROOT}/src/GSM610/preprocess.c
${TARGET_ROOT}/src/GSM610/rpe.c
${TARGET_ROOT}/src/GSM610/short_term.c
${TARGET_ROOT}/src/GSM610/table.c
)
list( APPEND INCLUDES
PRIVATE
${_PRVDIR}
${TARGET_ROOT}/src
PUBLIC
${_PUBDIR}
)
list( APPEND DEFINES
PRIVATE
inline=__inline
LIBSNDFILE_PRIVATE_CONFIG
)
list( APPEND OPTIONS
PRIVATE
$<$<C_COMPILER_ID:MSVC>:/wd4996>
)
if( CMAKE_SYSTEM_NAME MATCHES "Windows" )
cmake_push_check_state(RESET)
set( CMAKE_EXTRA_INCLUDE_FILES "BaseTsd.h" )
check_type_size( "SSIZE_T" SIZEOF_SSIZE LANGUAGE C )
list( APPEND DEFINES
ssize_t=SSIZE_T
)
cmake_pop_check_state()
else()
check_type_size( "ssize_t" SIZEOF_SSIZE LANGUAGE C )
endif()
set( TYPEOF_SF_COUNT_T "int64_t" )
set( SIZEOF_SF_COUNT_T ${SIZEOF_INT64} )
set( SF_COUNT_MAX "0x7FFFFFFFFFFFFFFFLL" )
configure_file( sndfile.h.in ${_PUBDIR}/sndfile.h )
check_symbol_exists( S_IRGRP "sys/stat.h" HAVE_DECL_S_IRGRP )
set( COMPILER_IS_GCC OFF )
if( CMAKE_C_COMPILER_ID MATCHES "GNU|.*Clang" )
set( COMPILER_IS_GCC ON )
endif()
set( OS_IS_MACOSX OFF)
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( OS_IS_MACOSX ON )
endif()
set( OS_IS_WIN32 OFF )
set( USE_WINDOWS_API OFF )
if( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( OS_IS_MACOSX ON )
set( USE_WINDOWS_API ON )
endif()
set( CPU_IS_BIG_ENDIAN ${WORDS_BIGENDIAN} )
set( CPU_IS_LITTLE_ENDIAN NOT ${WORDS_BIGENDIAN} )
set( HAVE_EXTERNAL_LIBS 0 )
set( VERSION "1.0.24" )
set( PACKAGE "libsndfile" )
set( PACKAGE_NAME ${PACKAGE} )
set( PACKAGE_VERSION ${VERSION} )
# Does compiler support "flexible array members"
try_compile( HAVE_FLEXIBLE_ARRAY
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/famcheck.c
LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
OUTPUT_VARIABLE c_out
)
# Determine how the CPU clips when doing float to int conversions
try_run( r_rc c_rc
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/clipcheck.c
LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
RUN_OUTPUT_VARIABLE r_out
COMPILE_OUTPUT_VARIABLE c_out
)
if( NOT c_rc )
message( STATUS "${c_out}" )
message( FATAL_ERROR "${CMAKE_CURRENT_SOURCE_DIR}/clipcheck.c compile failed:" )
endif()
list( GET r_out 0 CPU_CLIPS_POSITIVE )
list( GET r_out 1 CPU_CLIPS_NEGATIVE )
configure_file( config.h.in ${_PRVDIR}/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} )