123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- 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()
|