diff --git a/speechx/CMakeLists.txt b/speechx/CMakeLists.txt index ffd4c559..494b08d0 100644 --- a/speechx/CMakeLists.txt +++ b/speechx/CMakeLists.txt @@ -53,8 +53,8 @@ include(gtest) # ABSEIL-CPP include(absl) -# libsndfile, not work -#include(libsndfile) +# libsndfile +include(libsndfile) # boost set(boost_SOURCE_DIR ${fc_patch}/boost-src) diff --git a/speechx/cmake/external/libsndfile.cmake b/speechx/cmake/external/libsndfile.cmake index 5b30bffe..fc5e0a8a 100644 --- a/speechx/cmake/external/libsndfile.cmake +++ b/speechx/cmake/external/libsndfile.cmake @@ -1,26 +1,56 @@ include(FetchContent) +# https://github.com/pongasoft/vst-sam-spl-64/blob/master/libsndfile.cmake +# https://github.com/popojan/goban/blob/master/CMakeLists.txt#L38 +# https://github.com/ddiakopoulos/libnyquist/blob/master/CMakeLists.txt + +if(LIBSNDFILE_ROOT_DIR) + # instructs FetchContent to not download or update but use the location instead + set(FETCHCONTENT_SOURCE_DIR_LIBSNDFILE ${LIBSNDFILE_ROOT_DIR}) +else() + set(FETCHCONTENT_SOURCE_DIR_LIBSNDFILE "") +endif() set(LIBSNDFILE_GIT_REPO "https://github.com/erikd/libsndfile" CACHE STRING "libsndfile git repository url" FORCE) -set(LIBSNDFILE_GIT_TAG 1.0.31 CACHE STRING "libsndfile git tag" FORCE) +set(LIBSNDFILE_GIT_TAG c11deaa04ec84161996824061f6d705970972e2e CACHE STRING "libsndfile git tag" FORCE) FetchContent_Declare(libsndfile GIT_REPOSITORY ${LIBSNDFILE_GIT_REPO} GIT_TAG ${LIBSNDFILE_GIT_TAG} - CMAKE_ARGS "-G"Unix Makefiles"" + GIT_CONFIG advice.detachedHead=false +# GIT_SHALLOW true + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" ) - -set(BUILD_SHARED_LIBS ON) -FetchContent_MakeAvailable(libsndfile) - +FetchContent_GetProperties(libsndfile) +if(NOT libsndfile_POPULATED) + if(FETCHCONTENT_SOURCE_DIR_LIBSNDFILE) + message(STATUS "Using libsndfile from local ${FETCHCONTENT_SOURCE_DIR_LIBSNDFILE}") + else() + message(STATUS "Fetching libsndfile ${LIBSNDFILE_GIT_REPO}/tree/${LIBSNDFILE_GIT_TAG}") + endif() + FetchContent_Populate(libsndfile) +endif() set(LIBSNDFILE_ROOT_DIR ${libsndfile_SOURCE_DIR}) set(LIBSNDFILE_INCLUDE_DIR "${libsndfile_BINARY_DIR}/src") -#file(COPY "${libsndfile_SOURCE_DIR}/src/sndfile.hh" DESTINATION ${LIBSNDFILE_INCLUDE_DIR}) +function(libsndfile_build) + option(BUILD_PROGRAMS "Build programs" OFF) + option(BUILD_EXAMPLES "Build examples" OFF) + option(BUILD_TESTING "Build examples" OFF) + option(ENABLE_CPACK "Enable CPack support" OFF) + option(ENABLE_PACKAGE_CONFIG "Generate and install package config file" OFF) + option(BUILD_REGTEST "Build regtest" OFF) + # finally we include libsndfile itself + add_subdirectory(${libsndfile_SOURCE_DIR} ${libsndfile_BINARY_DIR} EXCLUDE_FROM_ALL) + # copying .hh for c++ support + file(COPY "${libsndfile_SOURCE_DIR}/src/sndfile.hh" DESTINATION ${LIBSNDFILE_INCLUDE_DIR}) +endfunction() + +libsndfile_build() include_directories(${LIBSNDFILE_INCLUDE_DIR}) \ No newline at end of file