Blame CMakeLists.txt

Packit Service 17f94a
# CMakeLists.txt for libsndfile
Packit Service 17f94a
Packit Service 17f94a
cmake_minimum_required (VERSION 3.0.0)
Packit Service 17f94a
Packit Service 17f94a
project (libsndfile)
Packit Service 17f94a
Packit Service 17f94a
# We may need these programs so detect them now.
Packit Service 17f94a
find_program (AUTOGEN autogen)
Packit Service 17f94a
find_program (AUTOHEADER autoheader)
Packit Service 17f94a
find_program (GREP grep)
Packit Service 17f94a
find_program (SED sed)
Packit Service 17f94a
find_program (WC wc)
Packit Service 17f94a
Packit Service 17f94a
include (CMake/file.cmake)
Packit Service 17f94a
Packit Service 17f94a
# Duplicate the autoconf/autoheader functionality.
Packit Service 17f94a
Packit Service 17f94a
# Get the version number from configure.ac.
Packit Service 17f94a
execute_process (
Packit Service 17f94a
	COMMAND ${GREP} ^AC_INIT configure.ac
Packit Service 17f94a
	COMMAND ${SED} "s/.*libsndfile[^0-9]*//;s/\\].*//"
Packit Service 17f94a
	OUTPUT_VARIABLE LIB_VERSION
Packit Service 17f94a
	)
Packit Service 17f94a
Packit Service 17f94a
string (STRIP ${LIB_VERSION} LIB_VERSION)
Packit Service 17f94a
string (REGEX REPLACE "\\..*" "" LIB_VERSION_MAJOR ${LIB_VERSION})
Packit Service 17f94a
Packit Service 17f94a
message (STATUS "libsndfile version : ${LIB_VERSION}")
Packit Service 17f94a
Packit Service 17f94a
# Generate config.h.in if it does not already exist.
Packit Service 17f94a
if (NOT (EXISTS "${CMAKE_SOURCE_DIR}/CMakeFiles/config.h.in"))
Packit Service 17f94a
	if (NOT AUTOHEADER)
Packit Service 17f94a
		message (FATAL_ERROR "Need autoheader (part of GNU autoconf) to proceed.")
Packit Service 17f94a
		endif ()
Packit Service 17f94a
Packit Service 17f94a
	message (STATUS "Running autoheader to create src/config.h.in")
Packit Service 17f94a
	execute_process (COMMAND ${AUTOHEADER} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
Packit Service 17f94a
Packit Service 17f94a
	assert_line_count_non_zero ("${CMAKE_SOURCE_DIR}/src/config.h.in")
Packit Service 17f94a
Packit Service 17f94a
	message (STATUS "Post processing src/config.h.in")
Packit Service 17f94a
	execute_process (
Packit Service 17f94a
		COMMAND ${SED} -E "s/undef([ \\t]+)([a-zA-Z0-8_]+)/define\\1\\2\\1@\\2@/" src/config.h.in
Packit Service 17f94a
		COMMAND ${SED} "s/.*_FILE_OFFSET_BITS.*//"
Packit Service 17f94a
		OUTPUT_FILE ${CMAKE_SOURCE_DIR}/CMakeFiles/config.h.in
Packit Service 17f94a
		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
Packit Service 17f94a
		)
Packit Service 17f94a
Packit Service 17f94a
	execute_process (
Packit Service 17f94a
		COMMAND ${GREP} -c undef ${CMAKE_SOURCE_DIR}/CMakeFiles/config.h.in
Packit Service 17f94a
		OUTPUT_VARIABLE undef_count
Packit Service 17f94a
		)
Packit Service 17f94a
Packit Service 17f94a
	if (${undef_count} GREATER 0)
Packit Service 17f94a
		message (FATAL_ERROR "CMake processing of CMakeFIles/config.h.in has failed.")
Packit Service 17f94a
		endif ()
Packit Service 17f94a
	endif ()
Packit Service 17f94a
Packit Service 17f94a
assert_line_count_non_zero ("${CMAKE_SOURCE_DIR}/CMakeFiles/config.h.in")
Packit Service 17f94a
Packit Service 17f94a
# Use autogen to generate files if they don't already exist.
Packit Service 17f94a
include (CMake/autogen.cmake)
Packit Service 17f94a
lsf_autogen (src test_endswap)
Packit Service 17f94a
lsf_autogen (tests pcm_test)
Packit Service 17f94a
lsf_autogen (tests utils)
Packit Service 17f94a
lsf_autogen (tests floating_point_test)
Packit Service 17f94a
lsf_autogen (tests header_test)
Packit Service 17f94a
lsf_autogen (tests pipe_test)
Packit Service 17f94a
lsf_autogen (tests write_read_test)
Packit Service 17f94a
lsf_autogen (tests scale_clip_test)
Packit Service 17f94a
lsf_autogen (tests rdwr_test)
Packit Service 17f94a
lsf_autogen (tests benchmark)
Packit Service 17f94a
Packit Service 17f94a
if (DEFINED ENV{CC})
Packit Service 17f94a
	set (CMAKE_C_COMPILER $ENV{CC})
Packit Service 17f94a
	endif()
Packit Service 17f94a
Packit Service 17f94a
if (DEFINED ENV{CXX})
Packit Service 17f94a
	set (CMAKE_CXX_COMPILER $ENV{CXX})
Packit Service 17f94a
	endif()
Packit Service 17f94a
Packit Service 17f94a
message (STATUS "System       : ${CMAKE_SYSTEM_NAME}")
Packit Service 17f94a
message (STATUS "Processor    : ${CMAKE_SYSTEM_PROCESSOR}")
Packit Service 17f94a
message (STATUS "C compiler   : ${CMAKE_C_COMPILER_ID}")
Packit Service 17f94a
message (STATUS "C++ compiler : ${CMAKE_CXX_COMPILER_ID}")
Packit Service 17f94a
Packit Service 17f94a
#-------------------------------------------------------------------------------
Packit Service 17f94a
Packit Service 17f94a
set (PACKAGE \"libsndfile\")
Packit Service 17f94a
set (PACKAGE_NAME \"libsndfile\")
Packit Service 17f94a
set (VERSION \"${LIB_VERSION}\")
Packit Service 17f94a
set (PACKAGE_VERSION \"${LIB_VERSION}\")
Packit Service 17f94a
Packit Service 17f94a
set (BASEPATH "${CMAKE_SOURCE_DIR}")
Packit Service 17f94a
Packit Service 17f94a
include (CMake/build.cmake)
Packit Service 17f94a
include (CMake/external_libs.cmake)
Packit Service 17f94a
include (CMake/libsndfile.cmake)
Packit Service 17f94a
Packit Service 17f94a
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
Packit Service 17f94a
	set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -std=gnu99 -Wall -Wextra" CACHE STRING "" FORCE)
Packit Service 17f94a
	set (CMAKE_CXX__FLAGS "${CMAKE_C_FLAGS} -O3 -std=gnu99 -Wall -Wextra" CACHE STRING "" FORCE)
Packit Service 17f94a
Packit Service 17f94a
	set (COMPILER_IS_GCC 1)
Packit Service 17f94a
	set (_POSIX_SOURCE 1)
Packit Service 17f94a
Packit Service 17f94a
	if (${Werror} MATCHES "on")
Packit Service 17f94a
		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror" CACHE STRING "" FORCE)
Packit Service 17f94a
		endif ()
Packit Service 17f94a
	endif ()
Packit Service 17f94a
Packit Service 17f94a
if (CMAKE_C_COMPILER_ID STREQUAL "MSVC")
Packit Service 17f94a
	# Untested. Probably does not work. Patches accepted.
Packit Service 17f94a
Packit Service 17f94a
	set (CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4996" CACHE STRING "" FORCE)
Packit Service 17f94a
	add_definitions ("/wd4244 /wd4996")
Packit Service 17f94a
	endif ()
Packit Service 17f94a
Packit Service 17f94a
Packit Service 17f94a
# Need to actually detect this.
Packit Service 17f94a
set (CPU_CLIPS_POSITIVE 0)
Packit Service 17f94a
set (CPU_CLIPS_NEGATIVE 0)
Packit Service 17f94a
Packit Service 17f94a
set (ENABLE_EXPERIMENTAL_CODE 0)
Packit Service 17f94a
Packit Service 17f94a
find_external_xiph_libs (HAVE_EXTERNAL_XIPH_LIBS EXTERNAL_XIPH_CFLAGS EXTERNAL_XIPH_LIBS)
Packit Service 17f94a
Packit Service 17f94a
#-------------------------------------------------------------------------------
Packit Service 17f94a
# Project definitions follow.
Packit Service 17f94a
Packit Service 17f94a
configure_file (${CMAKE_SOURCE_DIR}/src/sndfile.h.in ${CMAKE_SOURCE_DIR}/src/sndfile.h)
Packit Service 17f94a
configure_file (${CMAKE_SOURCE_DIR}/CMakeFiles/config.h.in ${CMAKE_SOURCE_DIR}/src/config.h)
Packit Service 17f94a
Packit Service 17f94a
include_directories (src)
Packit Service 17f94a
Packit Service 17f94a
set (libsndfile_sources
Packit Service 17f94a
	src/ALAC/ALACBitUtilities.c
Packit Service 17f94a
	src/ALAC/ag_dec.c
Packit Service 17f94a
	src/ALAC/ag_enc.c
Packit Service 17f94a
	src/ALAC/alac_decoder.c
Packit Service 17f94a
	src/ALAC/alac_encoder.c
Packit Service 17f94a
	src/ALAC/dp_dec.c
Packit Service 17f94a
	src/ALAC/dp_enc.c
Packit Service 17f94a
	src/ALAC/matrix_dec.c
Packit Service 17f94a
	src/ALAC/matrix_enc.c
Packit Service 17f94a
Packit Service 17f94a
	src/G72x/g721.c
Packit Service 17f94a
	src/G72x/g723_16.c
Packit Service 17f94a
	src/G72x/g723_24.c
Packit Service 17f94a
	src/G72x/g723_40.c
Packit Service 17f94a
	src/G72x/g72x.c
Packit Service 17f94a
	src/G72x/g72x_test.c
Packit Service 17f94a
Packit Service 17f94a
	src/GSM610/add.c
Packit Service 17f94a
	src/GSM610/code.c
Packit Service 17f94a
	src/GSM610/decode.c
Packit Service 17f94a
	src/GSM610/gsm_create.c
Packit Service 17f94a
	src/GSM610/gsm_decode.c
Packit Service 17f94a
	src/GSM610/gsm_destroy.c
Packit Service 17f94a
	src/GSM610/gsm_encode.c
Packit Service 17f94a
	src/GSM610/gsm_option.c
Packit Service 17f94a
	src/GSM610/long_term.c
Packit Service 17f94a
	src/GSM610/lpc.c
Packit Service 17f94a
	src/GSM610/preprocess.c
Packit Service 17f94a
	src/GSM610/rpe.c
Packit Service 17f94a
	src/GSM610/short_term.c
Packit Service 17f94a
	src/GSM610/table.c
Packit Service 17f94a
Packit Service 17f94a
	src/aiff.c
Packit Service 17f94a
	src/alac.c
Packit Service 17f94a
	src/alaw.c
Packit Service 17f94a
	src/au.c
Packit Service 17f94a
	src/audio_detect.c
Packit Service 17f94a
	src/avr.c
Packit Service 17f94a
	src/broadcast.c
Packit Service 17f94a
	src/caf.c
Packit Service 17f94a
	src/cart.c
Packit Service 17f94a
	src/chanmap.c
Packit Service 17f94a
	src/chunk.c
Packit Service 17f94a
	src/command.c
Packit Service 17f94a
	src/common.c
Packit Service 17f94a
	src/dither.c
Packit Service 17f94a
	src/double64.c
Packit Service 17f94a
	src/dwd.c
Packit Service 17f94a
	src/dwvw.c
Packit Service 17f94a
	src/file_io.c
Packit Service 17f94a
	src/flac.c
Packit Service 17f94a
	src/float32.c
Packit Service 17f94a
	src/g72x.c
Packit Service 17f94a
	src/gsm610.c
Packit Service 17f94a
	src/htk.c
Packit Service 17f94a
	src/id3.c
Packit Service 17f94a
	src/ima_adpcm.c
Packit Service 17f94a
	src/ima_oki_adpcm.c
Packit Service 17f94a
	src/interleave.c
Packit Service 17f94a
	src/ircam.c
Packit Service 17f94a
	src/macos.c
Packit Service 17f94a
	src/mat4.c
Packit Service 17f94a
	src/mat5.c
Packit Service 17f94a
	src/mpc2k.c
Packit Service 17f94a
	src/ms_adpcm.c
Packit Service 17f94a
	src/nist.c
Packit Service 17f94a
	src/ogg.c
Packit Service 17f94a
	src/ogg_opus.c
Packit Service 17f94a
	src/ogg_pcm.c
Packit Service 17f94a
	src/ogg_speex.c
Packit Service 17f94a
	src/ogg_vorbis.c
Packit Service 17f94a
	src/paf.c
Packit Service 17f94a
	src/pcm.c
Packit Service 17f94a
	src/pvf.c
Packit Service 17f94a
	src/raw.c
Packit Service 17f94a
	src/rf64.c
Packit Service 17f94a
	src/rx2.c
Packit Service 17f94a
	src/sd2.c
Packit Service 17f94a
	src/sds.c
Packit Service 17f94a
	src/sndfile.c
Packit Service 17f94a
	src/strings.c
Packit Service 17f94a
	src/svx.c
Packit Service 17f94a
	src/txw.c
Packit Service 17f94a
	src/ulaw.c
Packit Service 17f94a
	src/voc.c
Packit Service 17f94a
	src/vox_adpcm.c
Packit Service 17f94a
	src/w64.c
Packit Service 17f94a
	src/wav.c
Packit Service 17f94a
	src/wavlike.c
Packit Service 17f94a
	src/windows.c
Packit Service 17f94a
	src/wve.c
Packit Service 17f94a
	src/xi.c
Packit Service 17f94a
	)
Packit Service 17f94a
Packit Service 17f94a
add_library (sndfile SHARED
Packit Service 17f94a
	${libsndfile_sources}
Packit Service 17f94a
	)
Packit Service 17f94a
Packit Service 17f94a
target_link_libraries (sndfile LINK_PRIVATE ${EXTERNAL_XIPH_LIBS} LINK_PUBLIC m)
Packit Service 17f94a
Packit Service 17f94a
set_target_properties (sndfile
Packit Service 17f94a
	PROPERTIES
Packit Service 17f94a
	VERSION ${LIB_VERSION}
Packit Service 17f94a
	SOVERSION ${LIB_VERSION_MAJOR}
Packit Service 17f94a
	LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src
Packit Service 17f94a
	)
Packit Service 17f94a
Packit Service 17f94a
#-------------------------------------------------------------------------------
Packit Service 17f94a
# Programs.
Packit Service 17f94a
Packit Service 17f94a
lsf_build_program (sndfile-cmp)
Packit Service 17f94a
lsf_build_program (sndfile-concat)
Packit Service 17f94a
lsf_build_program (sndfile-convert)
Packit Service 17f94a
lsf_build_program (sndfile-deinterleave)
Packit Service 17f94a
lsf_build_program (sndfile-info)
Packit Service 17f94a
lsf_build_program (sndfile-interleave)
Packit Service 17f94a
lsf_build_program (sndfile-metadata-get)
Packit Service 17f94a
lsf_build_program (sndfile-metadata-set)
Packit Service 17f94a
lsf_build_program (sndfile-salvage)
Packit Service 17f94a
lsf_build_program_extra (sndfile-play asound)
Packit Service 17f94a
Packit Service 17f94a
#-------------------------------------------------------------------------------
Packit Service 17f94a
# Tests.
Packit Service 17f94a
Packit Service 17f94a
configure_file (${CMAKE_SOURCE_DIR}/tests/test_wrapper.sh.in ${CMAKE_SOURCE_DIR}/tests/test_wrapper.sh)
Packit Service 17f94a
configure_file (${CMAKE_SOURCE_DIR}/tests/pedantic-header-test.sh.in ${CMAKE_SOURCE_DIR}/tests/pedantic-header-test.sh)
Packit Service 17f94a
Packit Service 17f94a
add_custom_target (check
Packit Service 17f94a
	COMMAND src/test_main && bash tests/test_wrapper.sh
Packit Service 17f94a
	DEPENDS src/test_main tests/test_wrapper.sh
Packit Service 17f94a
	)
Packit Service 17f94a
Packit Service 17f94a
# Tests from the src/ directory.
Packit Service 17f94a
set (src_test_sources
Packit Service 17f94a
	src/audio_detect.c
Packit Service 17f94a
	src/broadcast.c
Packit Service 17f94a
	src/cart.c
Packit Service 17f94a
	src/common.c
Packit Service 17f94a
	src/double64.c
Packit Service 17f94a
	src/file_io.c
Packit Service 17f94a
	src/float32.c
Packit Service 17f94a
	src/test_audio_detect.c
Packit Service 17f94a
	src/test_broadcast_var.c
Packit Service 17f94a
	src/test_cart_var.c
Packit Service 17f94a
	src/test_conversions.c
Packit Service 17f94a
	src/test_endswap.c
Packit Service 17f94a
	src/test_file_io.c
Packit Service 17f94a
	src/test_float.c
Packit Service 17f94a
	src/test_ima_oki_adpcm.c
Packit Service 17f94a
	src/test_log_printf.c
Packit Service 17f94a
	src/test_strncpy_crlf.c
Packit Service 17f94a
	)
Packit Service 17f94a
Packit Service 17f94a
lsf_build_src_test_c (test_main "${src_test_sources}")
Packit Service 17f94a
Packit Service 17f94a
# Tests from the tests/ directory.
Packit Service 17f94a
Packit Service 17f94a
lsf_build_test_c (aiff_rw_test "")
Packit Service 17f94a
lsf_build_test_c (alaw_test "")
Packit Service 17f94a
lsf_build_test_c (benchmark "")
Packit Service 17f94a
lsf_build_test_c (channel_test "")
Packit Service 17f94a
lsf_build_test_c (checksum_test "")
Packit Service 17f94a
lsf_build_test_c (chunk_test "")
Packit Service 17f94a
lsf_build_test_c (command_test "")
Packit Service 17f94a
lsf_build_test_c (compression_size_test "")
Packit Service 17f94a
lsf_build_test_cc (cpp_test "")
Packit Service 17f94a
lsf_build_test_c (dither_test "")
Packit Service 17f94a
lsf_build_test_c (dwvw_test "")
Packit Service 17f94a
lsf_build_test_c (error_test "")
Packit Service 17f94a
lsf_build_test_c (external_libs_test "")
Packit Service 17f94a
lsf_build_test_c (fix_this "")
Packit Service 17f94a
lsf_build_test_c (floating_point_test "tests/dft_cmp.c")
Packit Service 17f94a
lsf_build_test_c (format_check_test "")
Packit Service 17f94a
lsf_build_test_c (headerless_test "")
Packit Service 17f94a
lsf_build_test_c (header_test "")
Packit Service 17f94a
lsf_build_test_c (largefile_test "")
Packit Service 17f94a
lsf_build_test_c (locale_test "")
Packit Service 17f94a
lsf_build_test_c (lossy_comp_test "")
Packit Service 17f94a
lsf_build_test_c (long_read_write_test "")
Packit Service 17f94a
lsf_build_test_c (misc_test "")
Packit Service 17f94a
lsf_build_test_c (multi_file_test "")
Packit Service 17f94a
lsf_build_test_c (ogg_test "")
Packit Service 17f94a
lsf_build_test_c (pcm_test "")
Packit Service 17f94a
lsf_build_test_c (peak_chunk_test "")
Packit Service 17f94a
lsf_build_test_c (pipe_test "")
Packit Service 17f94a
lsf_build_test_c (raw_test "")
Packit Service 17f94a
lsf_build_test_c (rdwr_test "")
Packit Service 17f94a
lsf_build_test_c (scale_clip_test "")
Packit Service 17f94a
lsf_build_test_c (sfversion "")
Packit Service 17f94a
lsf_build_test_c (stdin_test "")
Packit Service 17f94a
lsf_build_test_c (stdio_test "")
Packit Service 17f94a
lsf_build_test_c (stdout_test "")
Packit Service 17f94a
lsf_build_test_c (string_test "")
Packit Service 17f94a
lsf_build_test_c (ulaw_test "")
Packit Service 17f94a
lsf_build_test_c (virtual_io_test "")
Packit Service 17f94a
lsf_build_test_c (win32_ordinal_test "")
Packit Service 17f94a
lsf_build_test_c (win32_test "")
Packit Service 17f94a
lsf_build_test_c (write_read_test "tests/generate.c")