From 7f4c8586567f078440c120f5248ba2ab294141c0 Mon Sep 17 00:00:00 2001 From: Pete Savage Date: Sat, 24 Jul 2021 21:21:45 +0100 Subject: [PATCH 1/6] Make kissfft optional --- cmake/SfizzDeps.cmake | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/cmake/SfizzDeps.cmake b/cmake/SfizzDeps.cmake index 2b8fb8b0..8713a08c 100644 --- a/cmake/SfizzDeps.cmake +++ b/cmake/SfizzDeps.cmake @@ -165,13 +165,31 @@ add_library(sfizz::hiir_polyphase_iir2designer ALIAS sfizz_hiir_polyphase_iir2de target_link_libraries(sfizz_hiir_polyphase_iir2designer PUBLIC sfizz::hiir) # The kissfft library -add_library(sfizz_kissfft STATIC - "src/external/kiss_fft/kiss_fft.c" - "src/external/kiss_fft/tools/kiss_fftr.c") +if (SFIZZ_USE_SYSTEM_KISS_FFT) + find_path(KISSFFT_INCLUDE_DIR "kiss_fft.h" PATH_SUFFIXES "kissfft") + find_path(KISSFFTR_INCLUDE_DIR "kiss_fftr.h" PATH_SUFFIXES "kissfft") + find_library(KISSFFT_FFTR_LIBRARY "kiss_fftr_float" KISSFFTR_INCLUDE_DIR) + find_library(KISSFFT_FFT_LIBRARY "kiss_fft_float" KISSFFT_INCLUDE_DIR) + add_library(sfizz_kissfft INTERFACE) + if(NOT KISSFFT_FFT_LIBRARY) + message(FATAL_ERROR "Cannot find kiss fft") + endif() + if(NOT KISSFFT_FFTR_LIBRARY) + message(FATAL_ERROR "Cannot find kiss fftr") + endif() + target_include_directories(sfizz_kissfft INTERFACE "${KISSFFTR_INCLUDE_DIR}") + target_include_directories(sfizz_kissfft INTERFACE "${KISSFFT_INCLUDE_DIR}") + target_link_libraries(sfizz_kissfft INTERFACE "${KISSFFT_FFTR_LIBRARY}") + target_link_libraries(sfizz_kissfft INTERFACE "${KISSFFT_FFT_LIBRARY}") +else() + add_library(sfizz_kissfft STATIC + "src/external/kiss_fft/kiss_fft.c" + "src/external/kiss_fft/tools/kiss_fftr.c") + target_include_directories(sfizz_kissfft + PUBLIC "src/external/kiss_fft" + PUBLIC "src/external/kiss_fft/tools") +endif() add_library(sfizz::kissfft ALIAS sfizz_kissfft) -target_include_directories(sfizz_kissfft - PUBLIC "src/external/kiss_fft" - PUBLIC "src/external/kiss_fft/tools") # The cephes library add_library(sfizz_cephes STATIC From b52a49e67ee32e8da6280b3f536ca73994ce3bff Mon Sep 17 00:00:00 2001 From: Pete Savage Date: Sat, 24 Jul 2021 21:24:38 +0100 Subject: [PATCH 2/6] Added option for kissfft --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6805f67d..994da3c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ option_ex (SFIZZ_USE_SNDFILE "Enable use of the sndfile library" OFF) option_ex (SFIZZ_USE_VCPKG "Assume that sfizz is build using vcpkg" OFF) option_ex (SFIZZ_USE_SYSTEM_ABSEIL "Use Abseil libraries preinstalled on system" OFF) option_ex (SFIZZ_USE_SYSTEM_SIMDE "Use SIMDe libraries preinstalled on system" OFF) +option_ex (SFIZZ_USE_SYSTEM_KISS_FFT "Use KISS FFT libraries preinstalled on system" OFF) option_ex (SFIZZ_STATIC_DEPENDENCIES "Link dependencies statically" OFF) option_ex (SFIZZ_RELEASE_ASSERTS "Forced assertions in release builds" OFF) option_ex (SFIZZ_PROFILE_BUILD "Profile the build time" OFF) From c548bccb71f504ef32054b2a7079c2b7d1f53ad0 Mon Sep 17 00:00:00 2001 From: Pete Savage Date: Sun, 25 Jul 2021 14:29:56 +0100 Subject: [PATCH 3/6] Add ability to use system pugixml --- cmake/SfizzDeps.cmake | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmake/SfizzDeps.cmake b/cmake/SfizzDeps.cmake index 8713a08c..e5d14ca8 100644 --- a/cmake/SfizzDeps.cmake +++ b/cmake/SfizzDeps.cmake @@ -139,9 +139,18 @@ if(TARGET sfizz::openmp) endif() # The pugixml library -add_library(sfizz_pugixml STATIC "src/external/pugixml/src/pugixml.cpp") +if(SFIZZ_USE_SYSTEM_PUGIXML) + find_package(PkgConfig REQUIRED) + pkg_check_modules(PUGIXML "pugixml" REQUIRED) + add_library(sfizz_pugixml INTERFACE) + target_include_directories(sfizz_pugixml INTERFACE ${PUGIXML_INCLUDE_DIRS}) + target_link_libraries(sfizz_pugixml INTERFACE ${PUGIXML_LIBRARIES}) + link_directories(${PUGIXML_LIBRARY_DIRS}) +else() + add_library(sfizz_pugixml STATIC "src/external/pugixml/src/pugixml.cpp") + target_include_directories(sfizz_pugixml PUBLIC "src/external/pugixml/src") +endif() add_library(sfizz::pugixml ALIAS sfizz_pugixml) -target_include_directories(sfizz_pugixml PUBLIC "src/external/pugixml/src") # The spline library add_library(sfizz_spline STATIC "src/external/spline/spline/spline.cpp") From 5bca4394a9a9c1a936c5cf3c908a89d664ac3fbc Mon Sep 17 00:00:00 2001 From: Pete Savage Date: Sun, 25 Jul 2021 14:30:44 +0100 Subject: [PATCH 4/6] Add option for system pugixml --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 994da3c8..48a157b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ option_ex (SFIZZ_USE_VCPKG "Assume that sfizz is build using vcpkg" OFF) option_ex (SFIZZ_USE_SYSTEM_ABSEIL "Use Abseil libraries preinstalled on system" OFF) option_ex (SFIZZ_USE_SYSTEM_SIMDE "Use SIMDe libraries preinstalled on system" OFF) option_ex (SFIZZ_USE_SYSTEM_KISS_FFT "Use KISS FFT libraries preinstalled on system" OFF) +option_ex (SFIZZ_USE_SYSTEM_PUGIXML "Use pugixml libraries preinstalled on system" OFF) option_ex (SFIZZ_STATIC_DEPENDENCIES "Link dependencies statically" OFF) option_ex (SFIZZ_RELEASE_ASSERTS "Forced assertions in release builds" OFF) option_ex (SFIZZ_PROFILE_BUILD "Profile the build time" OFF) From 14e6c3359c7368612cb66d10b4b8a8508646b74a Mon Sep 17 00:00:00 2001 From: Pete Savage Date: Sun, 25 Jul 2021 14:44:56 +0100 Subject: [PATCH 5/6] Added option to use system cxxopts --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48a157b0..49bde5d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,7 @@ option_ex (SFIZZ_USE_SYSTEM_ABSEIL "Use Abseil libraries preinstalled on system" option_ex (SFIZZ_USE_SYSTEM_SIMDE "Use SIMDe libraries preinstalled on system" OFF) option_ex (SFIZZ_USE_SYSTEM_KISS_FFT "Use KISS FFT libraries preinstalled on system" OFF) option_ex (SFIZZ_USE_SYSTEM_PUGIXML "Use pugixml libraries preinstalled on system" OFF) +option_ex (SFIZZ_USE_SYSTEM_CXXOPTS "Use CXXOPTS libraries preinstalled on system" OFF) option_ex (SFIZZ_STATIC_DEPENDENCIES "Link dependencies statically" OFF) option_ex (SFIZZ_RELEASE_ASSERTS "Forced assertions in release builds" OFF) option_ex (SFIZZ_PROFILE_BUILD "Profile the build time" OFF) From 7c4dbe7e35e4948158b898ea6724671dba50b70d Mon Sep 17 00:00:00 2001 From: Pete Savage Date: Sun, 25 Jul 2021 14:45:45 +0100 Subject: [PATCH 6/6] Added option to use system cxxopts --- cmake/SfizzDeps.cmake | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/cmake/SfizzDeps.cmake b/cmake/SfizzDeps.cmake index e5d14ca8..ea277a40 100644 --- a/cmake/SfizzDeps.cmake +++ b/cmake/SfizzDeps.cmake @@ -67,9 +67,19 @@ add_library(sfizz::jsl ALIAS sfizz_jsl) target_include_directories(sfizz_jsl INTERFACE "external/jsl/include") # The cxxopts library -add_library(sfizz_cxxopts INTERFACE) +if(SFIZZ_USE_SYSTEM_CXXOPTS) + find_path(CXXOPTS_INCLUDE_DIR "cxxopts.hpp") + if(NOT CXXOPTS_INCLUDE_DIR) + message(FATAL_ERROR "Cannot find cxxopts") + endif() + add_library(sfizz_cxxopts INTERFACE) + target_include_directories(sfizz_cxxopts INTERFACE "${CXXOPTS_INCLUDE_DIR}") +else() + add_library(sfizz_cxxopts INTERFACE) + add_library(sfizz::cxxopts ALIAS sfizz_cxxopts) + target_include_directories(sfizz_cxxopts INTERFACE "external/cxxopts") +endif() add_library(sfizz::cxxopts ALIAS sfizz_cxxopts) -target_include_directories(sfizz_cxxopts INTERFACE "external/cxxopts") # The sndfile library if(SFIZZ_USE_SNDFILE OR SFIZZ_DEMOS OR SFIZZ_DEVTOOLS OR SFIZZ_BENCHMARKS)