mirror of
https://gitee.com/openharmony/third_party_libsnd
synced 2024-11-23 09:59:54 +00:00
3d8399dfde
Unfortunately ABI was broken when symbols files were removed in favour of new visibility control of exported functions. Visibility control with -fvisibility works fine, but symbol scripts had another feature - versioned symbols. And we lost it. Since we can not make our symbols to be versioned with the new approach, it's decided to return everything back. * CMake: Restore symbol files generation * CMake: Python is required to build shared libraries * Autotools: Restore symbol files generation Closes: https://github.com/erikd/libsndfile/issues/268
246 lines
7.5 KiB
CMake
246 lines
7.5 KiB
CMake
include (CheckFunctionExists)
|
|
include (CheckIncludeFile)
|
|
include (CheckLibraryExists)
|
|
include (CheckSymbolExists)
|
|
include (CheckTypeSize)
|
|
include (TestBigEndian)
|
|
|
|
include (TestInline)
|
|
include (ClipMode)
|
|
include(TestLargeFiles)
|
|
|
|
test_large_files(_LARGEFILES)
|
|
|
|
if (LARGE_FILES_DEFINITIONS)
|
|
add_definitions(${LARGE_FILES_DEFINITIONS})
|
|
endif ()
|
|
|
|
if (WIN32)
|
|
set(TYPEOF_SF_COUNT_T __int64)
|
|
else (UNIX)
|
|
set(TYPEOF_SF_COUNT_T int64_t)
|
|
endif ()
|
|
set(SF_COUNT_MAX 0x7fffffffffffffffll)
|
|
|
|
if (NOT WIN32)
|
|
find_package (ALSA)
|
|
if (ALSA_FOUND)
|
|
set (HAVE_ALSA_ASOUNDLIB_H TRUE)
|
|
else ()
|
|
find_package (Sndio)
|
|
set (HAVE_SNDIO_H ${SNDIO_FOUND})
|
|
endif (ALSA_FOUND)
|
|
endif ()
|
|
|
|
if (NOT DISABLE_EXTERNAL_LIBS)
|
|
find_package (Ogg)
|
|
find_package (Vorbis)
|
|
find_package (FLAC)
|
|
if (OGG_FOUND AND VORBIS_FOUND AND FLAC_FOUND)
|
|
set (HAVE_EXTERNAL_XIPH_LIBS 1)
|
|
set (EXTERNAL_XIPH_LIBS
|
|
${OGG_LIBRARIES}
|
|
${VORBIS_LIBRARIES}
|
|
${FLAC_LIBRARIES})
|
|
else ()
|
|
set (DISABLE_EXTERNAL_LIBS ON)
|
|
endif ()
|
|
endif ()
|
|
|
|
if (ENABLE_EXPERIMENTAL)
|
|
find_package (Speex)
|
|
endif ()
|
|
|
|
find_package (SQLite3)
|
|
if (SQLITE3_FOUND)
|
|
set (HAVE_SQLITE3 1)
|
|
endif ()
|
|
|
|
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(locale.h HAVE_LOCALE_H)
|
|
check_include_file(memory.h HAVE_MEMORY_H)
|
|
check_include_file(stdint.h HAVE_STDINT_H)
|
|
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(sys/time.h HAVE_SYS_TIME_H)
|
|
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
|
|
check_include_file(sys/wait.h HAVE_SYS_WAIT_H)
|
|
check_include_file(unistd.h HAVE_UNISTD_H)
|
|
check_include_file(io.h HAVE_IO_H)
|
|
check_type_size(int64_t SIZEOF_INT64_T)
|
|
check_type_size(double SIZEOF_DOUBLE)
|
|
check_type_size(float SIZEOF_FLOAT)
|
|
check_type_size(int SIZEOF_INT)
|
|
check_type_size(loff_t SIZEOF_LOFF_T)
|
|
check_type_size(long SIZEOF_LONG)
|
|
check_type_size(long\ long SIZEOF_LONG_LONG)
|
|
check_type_size(offt64_t SIZEOF_OFF64_T)
|
|
check_type_size(short SIZEOF_SHORT)
|
|
check_type_size(size_t SIZEOF_SIZE_T)
|
|
check_type_size(ssize_t SIZEOF_SSIZE_T)
|
|
check_type_size(void* SIZEOF_VOIDP)
|
|
check_type_size(wchar_t SIZEOF_WCHAR_T)
|
|
|
|
if ((SIZEOF_OFF_T EQUAL 8) OR (SIZEOF_LOFF_T EQUAL 8) OR (SIZEOF_OFF64_T EQUAL 8))
|
|
set (TYPEOF_SF_COUNT_T "int64_t")
|
|
set (SF_COUNT_MAX "0x7FFFFFFFFFFFFFFFLL")
|
|
set (SIZEOF_SF_COUNT_T 8)
|
|
else ()
|
|
if (WIN32)
|
|
set (TYPEOF_SF_COUNT_T "__int64")
|
|
set (SF_COUNT_MAX "0x7FFFFFFFFFFFFFFFLL")
|
|
set (SIZEOF_SF_COUNT_T 8)
|
|
else (NOT WIN32)
|
|
message ("")
|
|
message ("*** The configure process has determined that this system is capable")
|
|
message ("*** of Large File Support but has not been able to find a type which")
|
|
message ("*** is an unambiguous 64 bit file offset.")
|
|
message ("*** Please contact the author to help resolve this problem.")
|
|
message ("")
|
|
message (FATAL_ERROR "Bad file offset type.")
|
|
endif (WIN32)
|
|
endif ()
|
|
|
|
check_type_size(${TYPEOF_SF_COUNT_T} SIZEOF_SF_COUNT_T)
|
|
|
|
find_library (M_LIBRARY m)
|
|
if (M_LIBRARY)
|
|
# Check if he need to link 'm' for math functions
|
|
check_library_exists (m floor "" LIBM_REQUIRED)
|
|
if (LIBM_REQUIRED)
|
|
list (APPEND CMAKE_REQUIRED_LIBRARIES ${M_LIBRARY})
|
|
else ()
|
|
unset (M_LIBRARY)
|
|
endif ()
|
|
endif ()
|
|
mark_as_advanced (M_LIBRARY)
|
|
|
|
check_library_exists (sqlite3 sqlite3_close "" HAVE_SQLITE3)
|
|
|
|
check_function_exists(calloc HAVE_CALLOC)
|
|
check_function_exists(free HAVE_FREE)
|
|
check_function_exists(fstat HAVE_FSTAT)
|
|
check_function_exists(fstat64 HAVE_FSTAT64)
|
|
check_function_exists(fsync HAVE_FSYNC)
|
|
check_function_exists(ftruncate HAVE_FTRUNCATE)
|
|
check_function_exists(getpagesize HAVE_GETPAGESIZE)
|
|
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(lseek64 HAVE_LSEEK64)
|
|
check_function_exists(malloc HAVE_MALLOC)
|
|
check_function_exists(mmap HAVE_MMAP)
|
|
check_function_exists(open HAVE_OPEN)
|
|
check_function_exists(pipe HAVE_PIPE)
|
|
check_function_exists(read HAVE_READ)
|
|
check_function_exists(realloc HAVE_REALLOC)
|
|
check_function_exists(setlocale HAVE_SETLOCALE)
|
|
check_function_exists(snprintf HAVE_SNPRINTF)
|
|
check_function_exists(vsnprintf HAVE_VSNPRINTF)
|
|
check_function_exists(waitpid HAVE_WAITPID)
|
|
check_function_exists(write HAVE_WRITE)
|
|
check_function_exists(ceil HAVE_CEIL)
|
|
check_function_exists(floor HAVE_FLOOR)
|
|
check_function_exists(fmod HAVE_FMOD)
|
|
check_function_exists(lrint HAVE_LRINT)
|
|
check_function_exists(lrintf HAVE_LRINTF)
|
|
check_function_exists(lround HAVE_LROUND)
|
|
|
|
check_symbol_exists (S_IRGRP sys/stat.h HAVE_DECL_S_IRGRP)
|
|
|
|
test_big_endian(WORDS_BIGENDIAN)
|
|
if (WORDS_BIGENDIAN)
|
|
set (WORDS_BIGENDIAN 1)
|
|
set (CPU_IS_BIG_ENDIAN 1)
|
|
else (${LITTLE_ENDIAN})
|
|
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)
|
|
set (__USE_MINGW_ANSI_STDIO 1)
|
|
endif (MINGW)
|
|
endif (WIN32)
|
|
|
|
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 ()
|
|
|
|
if (COMPILER_IS_GCC)
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")
|
|
endif ()
|
|
|
|
if (ENABLE_EXPERIMENTAL)
|
|
set (ENABLE_EXPERIMENTAL_CODE 1)
|
|
endif ()
|
|
|
|
test_inline ()
|
|
if (NOT DISABLE_CPU_CLIP)
|
|
clip_mode ()
|
|
endif ()
|
|
|
|
if (MSVC)
|
|
add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
|
endif (MSVC)
|
|
|
|
if (ENABLE_STATIC_RUNTIME)
|
|
if (MSVC)
|
|
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(${flag_var} MATCHES "/MD")
|
|
endforeach(flag_var)
|
|
endif (MSVC)
|
|
if (MINGW)
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
|
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
|
|
set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static-libgcc -s")
|
|
set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static-libgcc -static-libstdc++ -s")
|
|
endif (MINGW)
|
|
elseif (NOT ENABLE_STATIC_RUNTIME)
|
|
if (MSVC)
|
|
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 (MSVC)
|
|
if (MINGW)
|
|
set (CMAKE_C_FLAGS "")
|
|
set (CMAKE_CXX_FLAGS "")
|
|
set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
|
|
set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
|
|
endif (MINGW)
|
|
endif (ENABLE_STATIC_RUNTIME)
|
|
|
|
if (BUILD_SHARED_LIBS)
|
|
find_package(PythonInterp REQUIRED)
|
|
endif()
|