diff options
| author | LRFLEW <LRFLEW@aol.com> | 2020-11-30 13:57:13 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-30 11:57:13 -0800 |
| commit | 7313144886256d5471e4ced511f5c219cf028e0c (patch) | |
| tree | 11ed45e67b5c4e252deb255ae19ff9d650d80e9c | |
| parent | 7be127628f304df1cc35a608092ee975a879afba (diff) | |
| download | vcpkg-7313144886256d5471e4ced511f5c219cf028e0c.tar.gz vcpkg-7313144886256d5471e4ced511f5c219cf028e0c.zip | |
[speexdsp] Update CMake script for macOS/Linux (#14758)
* [speexdsp] Update CMake script for macOS/Linux
* [speexdsp] Update download URL comment
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* [speexdsp] update with suggested CMake changes
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
| -rw-r--r-- | ports/speexdsp/CMakeLists.txt | 112 | ||||
| -rw-r--r-- | ports/speexdsp/CONTROL | 3 | ||||
| -rw-r--r-- | ports/speexdsp/portfile.cmake | 32 |
3 files changed, 120 insertions, 27 deletions
diff --git a/ports/speexdsp/CMakeLists.txt b/ports/speexdsp/CMakeLists.txt index a1dec7f3b..6a5f10613 100644 --- a/ports/speexdsp/CMakeLists.txt +++ b/ports/speexdsp/CMakeLists.txt @@ -1,32 +1,106 @@ cmake_minimum_required(VERSION 3.1) -option(USE_SSE "Use SSE" ON) -project (libspeexdsp) +option(USE_SSE "Use SSE" OFF) +option(USE_NEON "Use NEON" OFF) +option(FIXED_POINT "Use Fixed Point Arithmetic" OFF) -file(GLOB_RECURSE LIBSPEEXDSP_SOURCES "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/*.c") -list(FILTER LIBSPEEXDSP_SOURCES EXCLUDE REGEX "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/test.*\\.c") -file(GLOB_RECURSE LIBSPEEXDSP_HEADERS "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/*.h") -file(GLOB_RECURSE LIBSPEEXDSP_HEADERS_PUBLIC "${CMAKE_CURRENT_LIST_DIR}/include/**/*.h") +set(LIBSPEEXDSP_VERSION "1.2.0") +set(LIBSPEEXDSP_SOVERSION "1") +project(libspeexdsp) -if (BUILD_SHARED_LIBS) - add_definitions(-D_WINDOWS -D_USRDLL) +set(LIBSPEEXDSP_SOURCES + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/buffer.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fftwrap.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/filterbank.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/jitter.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/mdf.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/preprocess.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/resample.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/scal.c" +) +set(LIBSPEEXDSP_HEADERS + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/arch.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/bfin.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fftwrap.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/filterbank.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fixed_arm4.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fixed_arm5e.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fixed_bfin.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fixed_debug.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/fixed_generic.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/math_approx.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/misc_bfin.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/os_support.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/pseudofloat.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/resample_neon.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/resample_sse.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/smallft.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/stack_alloc.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/vorbis_psy.h" + "${CMAKE_CURRENT_LIST_DIR}/include/speex/speex_buffer.h" +) +set(LIBSPEEXDSP_HEADERS_PUBLIC + "${CMAKE_CURRENT_LIST_DIR}/include/speex/speex_echo.h" + "${CMAKE_CURRENT_LIST_DIR}/include/speex/speex_jitter.h" + "${CMAKE_CURRENT_LIST_DIR}/include/speex/speex_preprocess.h" + "${CMAKE_CURRENT_LIST_DIR}/include/speex/speex_resampler.h" + "${CMAKE_CURRENT_LIST_DIR}/include/speex/speexdsp_types.h" +) + +set(CMAKE_C_VISIBILITY_PRESET hidden) +if (NOT BUILD_SHARED_LIBS) + add_definitions("-DEXPORT=") +elseif(WIN32) + add_definitions("-DEXPORT=") list(APPEND LIBSPEEXDSP_SOURCES "${CMAKE_CURRENT_LIST_DIR}/win32/libspeexdsp.def") -else () - add_definitions(-D_LIB) -endif () +else() + add_definitions("-DEXPORT=__attribute__((visibility(\"default\")))") +endif() -add_definitions(-DHAVE_CONFIG_H -D_WIN32) +if (USE_SSE AND NOT FIXED_POINT) + add_definitions(-DUSE_SSE -DUSE_SSE2) +endif() +if (USE_NEON AND NOT MSVC) + add_definitions(-DUSE_NEON) +endif() -if (USE_SSE) - add_definitions(-D_USE_SSE -D_USE_SSE2) +if (FIXED_POINT) + add_definitions(-DFIXED_POINT -DUSE_KISS_FFT) + list(APPEND LIBSPEEXDSP_SOURCES + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/kiss_fft.c" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/kiss_fftr.c" + ) + list(APPEND LIBSPEEXDSP_HEADERS + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/_kiss_fft_guts.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/kiss_fft.h" + "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/kiss_fftr.h" + ) +else() + add_definitions(-DFLOATING_POINT -DUSE_SMALLFT) + list(APPEND LIBSPEEXDSP_SOURCES "${CMAKE_CURRENT_LIST_DIR}/libspeexdsp/smallft.c") endif() -include_directories("${CMAKE_CURRENT_LIST_DIR}/include" - "${CMAKE_CURRENT_LIST_DIR}/win32") -add_library(libspeexdsp ${LIBSPEEXDSP_SOURCES} ${LIBSPEEXDSP_HEADERS}) +if (NOT MSVC) + add_definitions(-DVAR_ARRAYS) +endif() + +# Basic speexdsp_config_types.h for Linux support +set(INCLUDE_STDINT "#include <stdint.h>") +set(SIZE16 "int16_t") +set(USIZE16 "uint16_t") +set(SIZE32 "int32_t") +set(USIZE32 "uint32_t") +configure_file("${CMAKE_CURRENT_LIST_DIR}/include/speex/speexdsp_config_types.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/speexdsp_config_types.h" @ONLY) +list(APPEND LIBSPEEXDSP_HEADERS_PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/speexdsp_config_types.h") + +include_directories("${CMAKE_CURRENT_LIST_DIR}/include") -set_target_properties(libspeexdsp PROPERTIES PUBLIC_HEADER "${LIBSPEEXDSP_HEADERS_PUBLIC}") +add_library(speexdsp ${LIBSPEEXDSP_SOURCES} ${LIBSPEEXDSP_HEADERS}) +set_target_properties(speexdsp PROPERTIES PUBLIC_HEADER "${LIBSPEEXDSP_HEADERS_PUBLIC}") +set_target_properties(speexdsp PROPERTIES VERSION "${LIBSPEEXDSP_VERSION}") +set_target_properties(speexdsp PROPERTIES SOVERSION "${LIBSPEEXDSP_SOVERSION}") -install(TARGETS libspeexdsp +install(TARGETS speexdsp ARCHIVE DESTINATION "lib" RUNTIME DESTINATION "bin" PUBLIC_HEADER DESTINATION "include/speex") diff --git a/ports/speexdsp/CONTROL b/ports/speexdsp/CONTROL index 4edbf5f20..dbf76057d 100644 --- a/ports/speexdsp/CONTROL +++ b/ports/speexdsp/CONTROL @@ -1,5 +1,6 @@ Source: speexdsp -Version: 1.2.0-2 +Version: 1.2.0 +Port-Version: 3 Homepage: https://speex.org/ Description: A patent-free, Open Source/Free Software DSP library. Build-Depends: diff --git a/ports/speexdsp/portfile.cmake b/ports/speexdsp/portfile.cmake index 3ed106350..429b2f213 100644 --- a/ports/speexdsp/portfile.cmake +++ b/ports/speexdsp/portfile.cmake @@ -1,10 +1,23 @@ -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO xiph/speexdsp - REF 64cbfa9bca7479a758351aa02bb4abdd76baa9e7 #1.2.0 - SHA512 b92488e1efd4d763cd2d438b88a1b708d2a9d8f804dc2b016bfb29c4f7366624d3cf86a23645067393274e100c1bd6467def0eb98575f04ffcaf49b20f1f1105 - HEAD_REF master -) +if(VCPKG_USE_HEAD_VERSION) + vcpkg_from_gitlab( + GITLAB_URL "https://gitlab.xiph.org" + OUT_SOURCE_PATH SOURCE_PATH + REPO xiph/speexdsp + HEAD_REF master + ) +else() + # Since the github repo is out-dated, use official download URL for release builds to reduce traffic to the Gitlab host + vcpkg_download_distfile(ARCHIVE + URLS "http://downloads.xiph.org/releases/speex/speexdsp-1.2.0.tar.gz" + FILENAME "speexdsp-1.2.0.tar.gz" + SHA512 e357cd5377415ea66c862302c7cf8bf6a10063cacd903f0846478975b87974cf5bdf00e2c6759d8f4f453c4c869cf284e9dc948a84a83d7b2ab96bd5405c05ec + ) + vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE "${ARCHIVE}" + REF "1.2.0" + ) +endif() file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) @@ -12,12 +25,17 @@ set(USE_SSE OFF) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(USE_SSE ON) endif() +set(USE_NEON OFF) +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(USE_NEON ON) +endif() vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS -DUSE_SSE=${USE_SSE} + -DUSE_NEON=${USE_NEON} ) vcpkg_install_cmake() |
