diff --git a/CMakeLists.txt b/CMakeLists.txt index 79cf03182e7..cebb1f75bc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,8 @@ endif() if(OSSIA_TESTING) set(CMAKE_CTEST_ARGUMENTS --rerun-failed --output-on-failure) include(CTest) - if(OSSIA_USE_SYSTEM_LIBRARIES) + ossia_use_system(use_sys Catch2) + if(use_sys) find_package(Catch2 CONFIG REQUIRED) if(NOT TARGET Catch2::Catch2WithMain) add_library(Catch2WithMain INTERFACE) diff --git a/cmake/OssiaOptions.cmake b/cmake/OssiaOptions.cmake index a83f5ad8c74..4b4befd04e9 100644 --- a/cmake/OssiaOptions.cmake +++ b/cmake/OssiaOptions.cmake @@ -1,5 +1,16 @@ # Build settings : option(OSSIA_USE_SYSTEM_LIBRARIES "Use system versions of the third-party libraries if possible") + +function(ossia_use_system out pkg) + if(NOT DEFINED OSSIA_USE_SYSTEM_${pkg}) + set(OSSIA_USE_SYSTEM_${pkg} "" CACHE STRING "") + endif() + if(NOT "${OSSIA_USE_SYSTEM_${pkg}}" STREQUAL "") + set(${out} "${OSSIA_USE_SYSTEM_${pkg}}" PARENT_SCOPE) + else() + set(${out} "${OSSIA_USE_SYSTEM_LIBRARIES}" PARENT_SCOPE) + endif() +endfunction() option(OSSIA_STATIC "Make a static build" OFF) option(OSSIA_INSTALL_STATIC_DEPENDENCIES "Generate install rules for wiiuse, etc" OFF) option(OSSIA_FAST_DEVELOPER_BUILD "Create shared libraries for some third-party libraries" OFF) diff --git a/cmake/deps/coap.cmake b/cmake/deps/coap.cmake index b98ebda35b6..3d211707cdd 100644 --- a/cmake/deps/coap.cmake +++ b/cmake/deps/coap.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys libcoap) +if(use_sys) find_path(LIBCOAP_INCLUDEDIR coap3/libcoap.h) find_library(LIBCOAP_GNUTLS_LIBRARIES coap-3-gnutls) find_library(LIBCOAP_LIBRARIES coap-3) diff --git a/cmake/deps/concurrentqueue.cmake b/cmake/deps/concurrentqueue.cmake index a3e4d68001d..0e1f155d86c 100644 --- a/cmake/deps/concurrentqueue.cmake +++ b/cmake/deps/concurrentqueue.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys concurrentqueue) +if(use_sys) find_package(concurrentqueue 1.0 CONFIG GLOBAL) if(TARGET concurrentqueue::concurrentqueue) get_target_property(cq_include_dirs concurrentqueue::concurrentqueue INTERFACE_INCLUDE_DIRECTORIES) diff --git a/cmake/deps/ctre.cmake b/cmake/deps/ctre.cmake index c2a01a5e4b6..4748278ebcc 100644 --- a/cmake/deps/ctre.cmake +++ b/cmake/deps/ctre.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys ctre) +if(use_sys) find_package(ctre 3.7 CONFIG GLOBAL) endif() diff --git a/cmake/deps/dno.cmake b/cmake/deps/dno.cmake index 6782a3e07cc..ee1016d406e 100644 --- a/cmake/deps/dno.cmake +++ b/cmake/deps/dno.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys dno) +if(use_sys) find_package(dno CONFIG GLOBAL) endif() diff --git a/cmake/deps/dr_libs.cmake b/cmake/deps/dr_libs.cmake index 3e47f630604..0f4be16849c 100644 --- a/cmake/deps/dr_libs.cmake +++ b/cmake/deps/dr_libs.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys dr_libs) +if(use_sys) find_path(DR_LIBS_INCLUDE_DIR dr_wav.h) endif() diff --git a/cmake/deps/exprtk.cmake b/cmake/deps/exprtk.cmake index e6afd2945b7..fc0ad20b0cf 100644 --- a/cmake/deps/exprtk.cmake +++ b/cmake/deps/exprtk.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys exprtk) +if(use_sys) find_path(EXPRTK_INCLUDE_DIR exprtk.hpp) endif() diff --git a/cmake/deps/fmt.cmake b/cmake/deps/fmt.cmake index c1ed40fd0af..d425ad4a418 100644 --- a/cmake/deps/fmt.cmake +++ b/cmake/deps/fmt.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys fmt) +if(use_sys) find_package(fmt CONFIG GLOBAL) endif() diff --git a/cmake/deps/kfr.cmake b/cmake/deps/kfr.cmake index 71fa2fc4d42..dc27c2e2edc 100644 --- a/cmake/deps/kfr.cmake +++ b/cmake/deps/kfr.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys KFR) +if(use_sys) # KFR if(OSSIA_ENABLE_KFR) find_package(KFR) diff --git a/cmake/deps/magic_enum.cmake b/cmake/deps/magic_enum.cmake index 82967c4727f..272e615d3dd 100644 --- a/cmake/deps/magic_enum.cmake +++ b/cmake/deps/magic_enum.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys magic_enum) +if(use_sys) find_package(magic_enum CONFIG GLOBAL) endif() diff --git a/cmake/deps/mdspan.cmake b/cmake/deps/mdspan.cmake index 254b268ff4d..8b3330a08b8 100644 --- a/cmake/deps/mdspan.cmake +++ b/cmake/deps/mdspan.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys mdspan) +if(use_sys) find_package(mdspan CONFIG GLOBAL) endif() diff --git a/cmake/deps/mqtt.cmake b/cmake/deps/mqtt.cmake index 662196ab253..335ff095130 100644 --- a/cmake/deps/mqtt.cmake +++ b/cmake/deps/mqtt.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys async-mqtt5) +if(use_sys) find_package(async-mqtt5 CONFIG GLOBAL) endif() diff --git a/cmake/deps/nano-signal-slot.cmake b/cmake/deps/nano-signal-slot.cmake index 74a30e33088..f791eb78da2 100644 --- a/cmake/deps/nano-signal-slot.cmake +++ b/cmake/deps/nano-signal-slot.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys nanosignal) +if(use_sys) find_path(NANOSIGNAL_INCLUDE_DIR nano_observer.hpp) endif() diff --git a/cmake/deps/oscpack.cmake b/cmake/deps/oscpack.cmake index 0ba0658f4fa..788138a3f86 100644 --- a/cmake/deps/oscpack.cmake +++ b/cmake/deps/oscpack.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys oscpack) +if(use_sys) find_package(oscpack 1.2 CONFIG GLOBAL) endif() diff --git a/cmake/deps/perlinnoise.cmake b/cmake/deps/perlinnoise.cmake index b39931ea243..f71cc241144 100644 --- a/cmake/deps/perlinnoise.cmake +++ b/cmake/deps/perlinnoise.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys perlinnoise) +if(use_sys) find_path(PERLINNOISE_INCLUDE_DIR PerlinNoise.hpp) endif() diff --git a/cmake/deps/rapidfuzz.cmake b/cmake/deps/rapidfuzz.cmake index 9dcee7f5277..bfd954d44fb 100644 --- a/cmake/deps/rapidfuzz.cmake +++ b/cmake/deps/rapidfuzz.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys rapidfuzz) +if(use_sys) find_package(rapidfuzz CONFIG REQUIRED GLOBAL) endif() diff --git a/cmake/deps/rapidhash.cmake b/cmake/deps/rapidhash.cmake index b13c66cab32..4c0827a4a43 100644 --- a/cmake/deps/rapidhash.cmake +++ b/cmake/deps/rapidhash.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys rapidhash) +if(use_sys) find_package(rapidhash CONFIG GLOBAL) endif() diff --git a/cmake/deps/rapidjson.cmake b/cmake/deps/rapidjson.cmake index 820d994a10c..c09b46c422d 100644 --- a/cmake/deps/rapidjson.cmake +++ b/cmake/deps/rapidjson.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys RapidJSON) +if(use_sys) find_package(RapidJSON 1.2 CONFIG GLOBAL) endif() diff --git a/cmake/deps/re2.cmake b/cmake/deps/re2.cmake index a3b5724944e..c374e239a46 100644 --- a/cmake/deps/re2.cmake +++ b/cmake/deps/re2.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys re2) +if(use_sys) find_package(re2 QUIET CONFIG) if(NOT TARGET re2::re2) find_library(RE2_LIBRARY NAMES re2) diff --git a/cmake/deps/readerwriterqueue.cmake b/cmake/deps/readerwriterqueue.cmake index c2a0122c55e..8a12e06bfa5 100644 --- a/cmake/deps/readerwriterqueue.cmake +++ b/cmake/deps/readerwriterqueue.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys readerwriterqueue) +if(use_sys) find_path(READERWRITERQUEUE_INCLUDE_DIR readerwriterqueue.h) endif() diff --git a/cmake/deps/rnd.cmake b/cmake/deps/rnd.cmake index 4a5b6b8d3b9..00c91e2d25d 100644 --- a/cmake/deps/rnd.cmake +++ b/cmake/deps/rnd.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys rnd) +if(use_sys) find_package(rnd CONFIG GLOBAL) endif() diff --git a/cmake/deps/rubberband.cmake b/cmake/deps/rubberband.cmake index 84aa7e8bbf6..fdea1e6cd99 100644 --- a/cmake/deps/rubberband.cmake +++ b/cmake/deps/rubberband.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys rubberband) +if(use_sys) find_library(RUBBERBAND_LIBRARY NAMES rubberband) find_path(RUBBERBAND_INCLUDE_DIR rubberband/RubberBandStretcher.h) diff --git a/cmake/deps/samplerate.cmake b/cmake/deps/samplerate.cmake index 318febbf4c2..ebad2e2039c 100644 --- a/cmake/deps/samplerate.cmake +++ b/cmake/deps/samplerate.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys SampleRate) +if(use_sys) find_package(SampleRate CONFIG GLOBAL) if(NOT TARGET SampleRate::samplerate) diff --git a/cmake/deps/servus.cmake b/cmake/deps/servus.cmake index 55aae36e959..08aa0ca93e5 100644 --- a/cmake/deps/servus.cmake +++ b/cmake/deps/servus.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys Servus) +if(use_sys) find_package(Servus CONFIG GLOBAL) endif() diff --git a/cmake/deps/smallfunction.cmake b/cmake/deps/smallfunction.cmake index ab859534d6e..ee0a953097c 100644 --- a/cmake/deps/smallfunction.cmake +++ b/cmake/deps/smallfunction.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys smallfun) +if(use_sys) find_path(SMALLFUN_INCLUDE_DIR smallfun.hpp) endif() diff --git a/cmake/deps/span.cmake b/cmake/deps/span.cmake index 180ea3f2399..05c6dedce98 100644 --- a/cmake/deps/span.cmake +++ b/cmake/deps/span.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys span) +if(use_sys) find_package(span CONFIG GLOBAL) endif() diff --git a/cmake/deps/spdlog.cmake b/cmake/deps/spdlog.cmake index 8f225a168b7..846ec020e7d 100644 --- a/cmake/deps/spdlog.cmake +++ b/cmake/deps/spdlog.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys spdlog) +if(use_sys) if(NOT OSSIA_FMT_INTERNAL) find_package(spdlog CONFIG REQUIRED GLOBAL) endif() diff --git a/cmake/deps/tuplet.cmake b/cmake/deps/tuplet.cmake index 58824653d93..4d39b8b8c73 100644 --- a/cmake/deps/tuplet.cmake +++ b/cmake/deps/tuplet.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys tuplet) +if(use_sys) find_package(tuplet CONFIG GLOBAL) endif() diff --git a/cmake/deps/unordered_dense.cmake b/cmake/deps/unordered_dense.cmake index aed09765327..03bc8f48167 100644 --- a/cmake/deps/unordered_dense.cmake +++ b/cmake/deps/unordered_dense.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys unordered_dense) +if(use_sys) find_package(unordered_dense CONFIG GLOBAL) endif() diff --git a/cmake/deps/verdigris.cmake b/cmake/deps/verdigris.cmake index 752ac522dfb..4c1aafcb597 100644 --- a/cmake/deps/verdigris.cmake +++ b/cmake/deps/verdigris.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys verdigris) +if(use_sys) find_package(verdigris CONFIG GLOBAL) endif() diff --git a/cmake/deps/websocketpp.cmake b/cmake/deps/websocketpp.cmake index 687ea99692d..498753e4d87 100644 --- a/cmake/deps/websocketpp.cmake +++ b/cmake/deps/websocketpp.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys websocketpp) +if(use_sys) find_package(websocketpp CONFIG GLOBAL) endif() diff --git a/cmake/deps/wiiuse.cmake b/cmake/deps/wiiuse.cmake index a53de248bef..cddda858f9d 100644 --- a/cmake/deps/wiiuse.cmake +++ b/cmake/deps/wiiuse.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys wiiuse) +if(use_sys) find_library(WIIUSE_LIBRARY NAMES wiiuse) find_path(WIIUSE_INCLUDE_DIR wiiuse.h) diff --git a/cmake/deps/zita-alsa-pcmi.cmake b/cmake/deps/zita-alsa-pcmi.cmake index 5d1ddfaf604..b97d3a33cd2 100644 --- a/cmake/deps/zita-alsa-pcmi.cmake +++ b/cmake/deps/zita-alsa-pcmi.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +ossia_use_system(use_sys zita-alsa-pcmi) +if(use_sys) find_path(ZITA_ALSA_PCMI_INCLUDE_DIR zita-alsa-pcmi.h) find_library(ZITA_ALSA_PCMI_LIBRARY zita-alsa-pcmi) diff --git a/src/ossia_features.cmake b/src/ossia_features.cmake index 66073f6c5ba..01026db10cf 100644 --- a/src/ossia_features.cmake +++ b/src/ossia_features.cmake @@ -140,7 +140,8 @@ endif() if(OSSIA_PROTOCOL_WIIMOTE) target_sources(ossia PRIVATE ${OSSIA_WIIMOTE_SRCS} ${OSSIA_WIIMOTE_HEADERS}) - if(NOT OSSIA_USE_SYSTEM_LIBRARIES) + ossia_use_system(use_sys wiiuse) + if(NOT use_sys) target_include_directories(ossia PRIVATE "${WIIUSE_DIR}/src") endif() target_link_libraries(ossia PRIVATE $)