| include (CheckFunctionExists) | |
| include (CheckIncludeFile) | |
| include (CheckLibraryExists) | |
| include (CheckSymbolExists) | |
| include (CheckTypeSize) | |
| include (TestBigEndian) | |
| include (TestInline) | |
| include (ClipMode) | |
| include (TestLargeFiles) | |
| include (CheckCPUArch) | |
| test_large_files (_LARGEFILES) | |
| if (LARGE_FILES_DEFINITIONS) | |
| add_definitions(${LARGE_FILES_DEFINITIONS}) | |
| endif () | |
| if (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | |
| find_package (Sndio) | |
| elseif (NOT WIN32) | |
| find_package (ALSA) | |
| endif () | |
| if (VCPKG_TOOLCHAIN AND (NOT CMAKE_VERSION VERSION_LESS 3.15)) | |
| set (CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) | |
| endif () | |
| if (CMAKE_FIND_PACKAGE_PREFER_CONFIG) | |
| find_package (Ogg 1.3 CONFIG) | |
| find_package (Vorbis CONFIG COMPONENTS Enc) | |
| find_package (FLAC CONFIG) | |
| find_package (Opus CONFIG) | |
| include (FindPackageHandleStandardArgs) | |
| find_package_handle_standard_args (Ogg CONFIG_MODE) | |
| find_package_handle_standard_args (Vorbis CONFIG_MODE) | |
| find_package_handle_standard_args (FLAC CONFIG_MODE) | |
| find_package_handle_standard_args (Opus CONFIG_MODE) | |
| else () | |
| find_package (Ogg 1.3) | |
| find_package (Vorbis COMPONENTS Enc) | |
| find_package (FLAC) | |
| find_package (Opus) | |
| endif () | |
| if (Vorbis_FOUND AND FLAC_FOUND AND Opus_FOUND) | |
| set (HAVE_EXTERNAL_XIPH_LIBS 1) | |
| else () | |
| set (HAVE_EXTERNAL_XIPH_LIBS 0) | |
| endif () | |
| find_package (mp3lame) | |
| find_package (mpg123 1.25.10) | |
| if (TARGET mp3lame::mp3lame AND (TARGET MPG123::libmpg123)) | |
| set (HAVE_MPEG_LIBS 1) | |
| else () | |
| set (HAVE_MPEG_LIBS 0) | |
| endif() | |
| find_package (Speex) | |
| find_package (SQLite3) | |
| check_include_file (byteswap.h HAVE_BYTESWAP_H) | |
| check_include_file (dlfcn.h HAVE_DLFCN_H) | |
| check_include_file (direct.h HAVE_DIRECT_H) | |
| check_include_file (endian.h HAVE_ENDIAN_H) | |
| check_include_file (inttypes.h HAVE_INTTYPES_H) | |
| check_include_file (io.h HAVE_IO_H) | |
| check_include_file (stdint.h HAVE_STDINT_H) | |
| check_include_file (sys/time.h HAVE_SYS_TIME_H) | |
| check_include_file (sys/types.h HAVE_SYS_TYPES_H) | |
| check_include_file (unistd.h HAVE_UNISTD_H) | |
| check_include_file (immintrin.h HAVE_IMMINTRIN_H) | |
| check_include_file (stdbool.h HAVE_STDBOOL_H) | |
| check_cpu_arch_x86 (CPU_IS_X86) | |
| check_cpu_arch_x64 (CPU_IS_X64) | |
| if ((CPU_IS_X86 OR CPU_IS_X64) AND HAVE_IMMINTRIN_H) | |
| set (HAVE_SSE2 1) | |
| endif () | |
| # Never checked | |
| # check_include_file (stdlib.h HAVE_STDLIB_H) | |
| # check_include_file (string.h HAVE_STRING_H) | |
| # check_include_file (strings.h HAVE_STRINGS_H) | |
| # check_include_file (sys/stat.h HAVE_SYS_STAT_H) | |
| # check_include_file (memory.h HAVE_MEMORY_H) | |
| if (BUILD_TESTING) | |
| check_include_file (locale.h HAVE_LOCALE_H) | |
| check_include_file (sys/wait.h HAVE_SYS_WAIT_H) | |
| endif () | |
| check_type_size (int64_t SIZEOF_INT64_T) | |
| check_type_size (long SIZEOF_LONG) | |
| check_type_size (long\ long SIZEOF_LONG_LONG) | |
| check_type_size (ssize_t SIZEOF_SSIZE_T) | |
| check_type_size (wchar_t SIZEOF_WCHAR_T) | |
| # Never used | |
| # check_type_size (loff_t SIZEOF_LOFF_T) | |
| # check_type_size (offt64_t SIZEOF_OFF64_T) | |
| # Never checked | |
| # check_type_size (size_t SIZEOF_SIZE_T) | |
| # Used in configre.ac | |
| # check_type_size (double SIZEOF_DOUBLE) | |
| # check_type_size (float SIZEOF_FLOAT) | |
| # check_type_size (int SIZEOF_INT) | |
| # check_type_size (short SIZEOF_SHORT) | |
| if (ENABLE_TESTING) | |
| check_type_size (void* SIZEOF_VOIDP) | |
| endif() | |
| if (NOT WIN32) | |
| check_library_exists (m floor "" LIBM_REQUIRED) | |
| if (LIBM_REQUIRED) | |
| list (APPEND CMAKE_REQUIRED_LIBRARIES m) | |
| endif () | |
| endif () | |
| check_library_exists (sqlite3 sqlite3_close "" HAVE_SQLITE3) | |
| check_function_exists (fstat HAVE_FSTAT) | |
| check_function_exists (fstat64 HAVE_FSTAT64) | |
| check_function_exists (gettimeofday HAVE_GETTIMEOFDAY) | |
| check_function_exists (gmtime HAVE_GMTIME) | |
| check_function_exists (gmtime_r HAVE_GMTIME_R) | |
| check_function_exists (localtime HAVE_LOCALTIME) | |
| check_function_exists (localtime_r HAVE_LOCALTIME_R) | |
| check_function_exists (lseek HAVE_LSEEK) | |
| check_function_exists (open HAVE_OPEN) | |
| check_function_exists (read HAVE_READ) | |
| check_function_exists (write HAVE_WRITE) | |
| check_function_exists (lrint HAVE_LRINT) | |
| check_function_exists (lrintf HAVE_LRINTF) | |
| if (NOT WIN32) | |
| check_function_exists (ftruncate HAVE_FTRUNCATE) | |
| check_function_exists (fsync HAVE_FSYNC) | |
| endif () | |
| if (BUILD_TESTING) | |
| check_function_exists (pipe HAVE_PIPE) | |
| check_function_exists (setlocale HAVE_SETLOCALE) | |
| check_function_exists (waitpid HAVE_WAITPID) | |
| endif () | |
| # Never checked | |
| # check_function_exists (calloc HAVE_CALLOC) | |
| # check_function_exists (free HAVE_FREE) | |
| # check_function_exists (getpagesize HAVE_GETPAGESIZE) | |
| # check_function_exists (malloc HAVE_MALLOC) | |
| # check_function_exists (realloc HAVE_REALLOC) | |
| # check_function_exists (snprintf HAVE_SNPRINTF) | |
| # check_function_exists (vsnprintf HAVE_VSNPRINTF) | |
| # check_function_exists (floor HAVE_FLOOR) | |
| # check_function_exists (fmod HAVE_FMOD) | |
| # Never used | |
| # check_function_exists (mmap HAVE_MMAP) | |
| # check_function_exists (ceil HAVE_CEIL) | |
| # check_function_exists (lround HAVE_LROUND) | |
| # check_function_exists (lseek64 HAVE_LSEEK64) | |
| check_symbol_exists (S_IRGRP sys/stat.h HAVE_DECL_S_IRGRP) | |
| test_big_endian (WORDS_BIGENDIAN) | |
| if (WORDS_BIGENDIAN) | |
| set (CPU_IS_BIG_ENDIAN 1) | |
| else () | |
| set (CPU_IS_LITTLE_ENDIAN 1) | |
| endif () | |
| if (WIN32) | |
| set (OS_IS_WIN32 1) | |
| set (USE_WINDOWS_API 1) | |
| if (BUILD_SHARED_LIBS) | |
| set (WIN32_TARGET_DLL 1) | |
| endif () | |
| if (MINGW) | |
| add_definitions (-D__USE_MINGW_ANSI_STDIO=1) | |
| endif () | |
| endif () | |
| if (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | |
| set (OS_IS_OPENBSD 1) | |
| endif () | |
| if (CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang")) | |
| set (COMPILER_IS_GCC 1) | |
| endif () | |
| test_inline () | |
| clip_mode () | |
| if (MSVC) | |
| add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) | |
| endif (MSVC) | |
| if (DEFINED ENABLE_STATIC_RUNTIME) | |
| if (MSVC) | |
| if (ENABLE_STATIC_RUNTIME) | |
| foreach (flag_var | |
| CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE | |
| CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO | |
| CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE | |
| CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO | |
| ) | |
| if (${flag_var} MATCHES "/MD") | |
| string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") | |
| endif () | |
| endforeach (flag_var) | |
| else () | |
| foreach (flag_var | |
| CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE | |
| CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO | |
| CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE | |
| CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO | |
| ) | |
| if (${flag_var} MATCHES "/MT") | |
| string (REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}") | |
| endif (${flag_var} MATCHES "/MT") | |
| endforeach (flag_var) | |
| endif ( ) | |
| elseif (MINGW) | |
| if (ENABLE_STATIC_RUNTIME) | |
| if (CMAKE_C_COMPILER_ID STREQUAL GNU) | |
| set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc") | |
| set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static-libgcc -s") | |
| endif () | |
| if (CMAKE_CXX_COMPILER_ID STREQUAL GNU) | |
| set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") | |
| set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static-libgcc -static-libstdc++ -s") | |
| endif () | |
| if (CMAKE_C_COMPILER_ID STREQUAL Clang) | |
| set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") | |
| set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static") | |
| endif () | |
| if (CMAKE_CXX_COMPILER_ID STREQUAL Clang) | |
| set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") | |
| set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static") | |
| endif () | |
| endif () | |
| else () | |
| message (AUTHOR_WARNING "ENABLE_STATIC_RUNTIME option is for MSVC or MinGW only.") | |
| endif () | |
| endif () | |
| if (BUILD_SHARED_LIBS) | |
| find_package (PythonInterp REQUIRED) | |
| endif() |