From e574f7e49c4c0b570aae4100371a0b22a77d3e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Sun, 21 Jun 2026 15:30:23 -0400 Subject: [PATCH 01/10] 3rdparty: allow granular override of dependencies Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/eigen.cmake | 3 ++- 3rdparty/libossia | 2 +- 3rdparty/libpd.cmake | 3 ++- 3rdparty/mimalloc.cmake | 3 ++- 3rdparty/sh4lt.cmake | 3 ++- 3rdparty/shmdata.cmake | 3 ++- 3rdparty/snappy.cmake | 3 ++- 3rdparty/sndfile.cmake | 3 ++- 3rdparty/suil.cmake | 3 ++- 3rdparty/vst3.cmake | 3 ++- 3rdparty/xtensor.cmake | 3 ++- cmake/ScoreConfiguration.cmake | 15 +++++++++++++++ src/plugins/score-plugin-faust/CMakeLists.txt | 3 ++- 13 files changed, 38 insertions(+), 12 deletions(-) diff --git a/3rdparty/eigen.cmake b/3rdparty/eigen.cmake index b7753d3fec..d3c600f6c1 100644 --- a/3rdparty/eigen.cmake +++ b/3rdparty/eigen.cmake @@ -1,4 +1,5 @@ -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys eigen) +if(use_sys) find_package(eigen 3.4 GLOBAL CONFIG) endif() diff --git a/3rdparty/libossia b/3rdparty/libossia index 476e6e50d2..f18f8d4782 160000 --- a/3rdparty/libossia +++ b/3rdparty/libossia @@ -1 +1 @@ -Subproject commit 476e6e50d2ac11298b9ea2f6e4d9372973a52db0 +Subproject commit f18f8d478263ac15ed24a0d00ef79c1387f9808d diff --git a/3rdparty/libpd.cmake b/3rdparty/libpd.cmake index 44bcb17989..48cff6d812 100644 --- a/3rdparty/libpd.cmake +++ b/3rdparty/libpd.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES AND LINUX) +score_use_system(use_sys libpd) +if(use_sys AND LINUX) find_library(LIBPD_LIBRARY NAMES pd ) diff --git a/3rdparty/mimalloc.cmake b/3rdparty/mimalloc.cmake index 627039c8e3..d30db73fa2 100644 --- a/3rdparty/mimalloc.cmake +++ b/3rdparty/mimalloc.cmake @@ -14,7 +14,8 @@ if("${CMAKE_CXX_FLAGS}" MATCHES ".*_GLIBCXX_ASSERTIONS.*") return() endif() -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys snmalloc) +if(use_sys) find_package(snmalloc GLOBAL CONFIG) else() block() diff --git a/3rdparty/sh4lt.cmake b/3rdparty/sh4lt.cmake index 54b5008149..2a7dd2c7df 100644 --- a/3rdparty/sh4lt.cmake +++ b/3rdparty/sh4lt.cmake @@ -6,7 +6,8 @@ if(EMSCRIPTEN OR BSD) return() endif() -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys sh4lt) +if(use_sys) find_package(sh4lt GLOBAL) else() add_library(sh4lt STATIC diff --git a/3rdparty/shmdata.cmake b/3rdparty/shmdata.cmake index 3dc855b549..beff20a4ce 100644 --- a/3rdparty/shmdata.cmake +++ b/3rdparty/shmdata.cmake @@ -6,7 +6,8 @@ if(EMSCRIPTEN OR BSD) return() endif() -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys shmdata) +if(use_sys) find_package(shmdata GLOBAL) else() add_library(shmdata STATIC diff --git a/3rdparty/snappy.cmake b/3rdparty/snappy.cmake index 8d8db0f954..5812357d5c 100644 --- a/3rdparty/snappy.cmake +++ b/3rdparty/snappy.cmake @@ -1,4 +1,5 @@ -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys Snappy) +if(use_sys) find_package(Snappy GLOBAL CONFIG) else() set(SNAPPY_BUILD_TESTS OFF) diff --git a/3rdparty/sndfile.cmake b/3rdparty/sndfile.cmake index 1d02895c27..f10dc7ed4c 100644 --- a/3rdparty/sndfile.cmake +++ b/3rdparty/sndfile.cmake @@ -2,7 +2,8 @@ if(EMSCRIPTEN) return() endif() -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys SndFile) +if(use_sys) find_package(SndFile GLOBAL CONFIG) if(NOT TARGET SndFile::sndfile) if(NOT TARGET sndfile) diff --git a/3rdparty/suil.cmake b/3rdparty/suil.cmake index b6e85b6480..84f2c6cc72 100644 --- a/3rdparty/suil.cmake +++ b/3rdparty/suil.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys Suil) +if(use_sys) return() endif() diff --git a/3rdparty/vst3.cmake b/3rdparty/vst3.cmake index fe5963e9fb..aabcf94449 100644 --- a/3rdparty/vst3.cmake +++ b/3rdparty/vst3.cmake @@ -1,4 +1,5 @@ -if(OSSIA_USE_SYSTEM_LIBRARIES AND LINUX) +score_use_system(use_sys vst3) +if(use_sys AND LINUX) find_path(VST3_SDK_MODULE_DIR public.sdk/source/vst/hosting/module_linux.cpp PATH_SUFFIXES vst3sdk diff --git a/3rdparty/xtensor.cmake b/3rdparty/xtensor.cmake index 2f8788c12e..612705a587 100644 --- a/3rdparty/xtensor.cmake +++ b/3rdparty/xtensor.cmake @@ -1,4 +1,5 @@ -if(SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys xtensor) +if(use_sys) find_package(xtl 0.8.0 GLOBAL CONFIG) find_package(xsimd 13.2.0 GLOBAL CONFIG) find_package(xtensor 0.27.0 GLOBAL CONFIG) diff --git a/cmake/ScoreConfiguration.cmake b/cmake/ScoreConfiguration.cmake index 2ca900f383..2831d865eb 100644 --- a/cmake/ScoreConfiguration.cmake +++ b/cmake/ScoreConfiguration.cmake @@ -26,6 +26,21 @@ option(SCORE_TESTBED "Enable the testbed. See Tests/testbed/README" OFF) option(SCORE_PLAYER "Build standalone player" OFF) option(SCORE_FHS_BUILD "For installing in Linux distros /usr hierarchy" OFF) option(SCORE_USE_SYSTEM_LIBRARIES "Try to use system libraries as far as possible" OFF) +option(OSSIA_USE_SYSTEM_LIBRARIES "Try to use system libraries as far as possible" OFF) +if(SCORE_USE_SYSTEM_LIBRARIES) + set(OSSIA_USE_SYSTEM_LIBRARIES ON CACHE BOOL "" FORCE) +endif() + +function(score_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(DEFINE_SCORE_SCENARIO_DEBUG_RECTS "Enable to have debug rects around elements of a scenario" OFF) option(SCORE_COVERAGE "Enable coverage" OFF) diff --git a/src/plugins/score-plugin-faust/CMakeLists.txt b/src/plugins/score-plugin-faust/CMakeLists.txt index 9a25355f02..9a8fbb7d54 100644 --- a/src/plugins/score-plugin-faust/CMakeLists.txt +++ b/src/plugins/score-plugin-faust/CMakeLists.txt @@ -63,7 +63,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${FAUST_INCLUDE_DIR}) setup_score_plugin(${PROJECT_NAME}) -if(NOT SCORE_USE_SYSTEM_LIBRARIES) +score_use_system(use_sys Faust) +if(NOT use_sys) message("Downloading Faust libs...") ExternalProject_Add( From 423a007ea0aeada8ce2e3652dc3d9d061e8fe5c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Sun, 21 Jun 2026 15:46:45 -0400 Subject: [PATCH 02/10] 3rdparty: allow unvendoring dspfilters, gamma, r8brain, simpleio, QCodeEditor, clap Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/3rdparty.cmake | 10 ++++++++-- 3rdparty/dspfilters.cmake | 16 ++++++++++++++++ 3rdparty/gamma.cmake | 15 +++++++++++++++ 3rdparty/libsimpleio.cmake | 13 ++++++++++++- 3rdparty/r8brain.cmake | 16 ++++++++++++++++ src/plugins/score-plugin-clap/CMakeLists.txt | 14 ++++++++++---- 6 files changed, 77 insertions(+), 7 deletions(-) diff --git a/3rdparty/3rdparty.cmake b/3rdparty/3rdparty.cmake index 53694ce380..f0a1f4a2d2 100644 --- a/3rdparty/3rdparty.cmake +++ b/3rdparty/3rdparty.cmake @@ -1,7 +1,13 @@ include(3rdparty/libossia.cmake) -add_subdirectory(3rdparty/QCodeEditor) -disable_qt_plugins(QCodeEditor) +score_use_system(use_sys QCodeEditor) +if(use_sys) + find_package(QCodeEditor GLOBAL QUIET) +endif() +if(NOT TARGET QCodeEditor) + add_subdirectory(3rdparty/QCodeEditor) + disable_qt_plugins(QCodeEditor) +endif() function(disable_var VAR) if(${${VAR}}) diff --git a/3rdparty/dspfilters.cmake b/3rdparty/dspfilters.cmake index 448e87f1b3..ac254c863f 100644 --- a/3rdparty/dspfilters.cmake +++ b/3rdparty/dspfilters.cmake @@ -1,3 +1,18 @@ +score_use_system(use_sys DSPFilters) +if(use_sys) + find_package(DSPFilters GLOBAL QUIET) + if(NOT TARGET dspfilters) + find_library(DSPFILTERS_LIBRARY NAMES DSPFilters dspfilters) + find_path(DSPFILTERS_INCLUDE_DIR DspFilters/Dsp.h) + if(DSPFILTERS_LIBRARY AND DSPFILTERS_INCLUDE_DIR) + add_library(dspfilters INTERFACE IMPORTED GLOBAL) + target_include_directories(dspfilters SYSTEM INTERFACE "${DSPFILTERS_INCLUDE_DIR}") + target_link_libraries(dspfilters INTERFACE "${DSPFILTERS_LIBRARY}") + endif() + endif() +endif() + +if(NOT TARGET dspfilters) add_library(dspfilters "${CMAKE_CURRENT_LIST_DIR}/DSPFilters/DSPFilters/source/Bessel.cpp" "${CMAKE_CURRENT_LIST_DIR}/DSPFilters/DSPFilters/source/Biquad.cpp" @@ -30,3 +45,4 @@ target_include_directories( SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/DSPFilters/DSPFilters/include" ) +endif() diff --git a/3rdparty/gamma.cmake b/3rdparty/gamma.cmake index 3a5695306f..a76ab73e60 100644 --- a/3rdparty/gamma.cmake +++ b/3rdparty/gamma.cmake @@ -1,4 +1,18 @@ +score_use_system(use_sys Gamma) +if(use_sys) + find_package(Gamma GLOBAL QUIET) + if(NOT TARGET gamma) + find_library(GAMMA_LIBRARY NAMES Gamma gamma) + find_path(GAMMA_INCLUDE_DIR Gamma/Gamma.h) + if(GAMMA_LIBRARY AND GAMMA_INCLUDE_DIR) + add_library(gamma INTERFACE IMPORTED GLOBAL) + target_include_directories(gamma SYSTEM INTERFACE "${GAMMA_INCLUDE_DIR}") + target_link_libraries(gamma INTERFACE "${GAMMA_LIBRARY}") + endif() + endif() +endif() +if(NOT TARGET gamma) add_library(gamma STATIC "${CMAKE_CURRENT_LIST_DIR}/Gamma/src/Conversion.cpp" # "${CMAKE_CURRENT_LIST_DIR}/Gamma/src/DFT.cpp" @@ -14,3 +28,4 @@ target_include_directories( PUBLIC "${CMAKE_CURRENT_LIST_DIR}/Gamma" ) +endif() diff --git a/3rdparty/libsimpleio.cmake b/3rdparty/libsimpleio.cmake index 15b19b2156..365213cdf5 100644 --- a/3rdparty/libsimpleio.cmake +++ b/3rdparty/libsimpleio.cmake @@ -1,5 +1,16 @@ +score_use_system(use_sys simpleio) +if(use_sys) + find_library(SIMPLEIO_LIBRARY NAMES simpleio) + find_path(SIMPLEIO_INCLUDE_DIR libsimpleio/libgpio.h) + if(SIMPLEIO_LIBRARY AND SIMPLEIO_INCLUDE_DIR) + add_library(simpleio INTERFACE IMPORTED GLOBAL) + target_include_directories(simpleio SYSTEM INTERFACE "${SIMPLEIO_INCLUDE_DIR}") + target_link_libraries(simpleio INTERFACE "${SIMPLEIO_LIBRARY}") + endif() +endif() + find_path(LINUX_HEADERS_INCLUDE_DIR linux/gpio.h) -if(LINUX_HEADERS_INCLUDE_DIR AND UNIX AND NOT APPLE AND NOT EMSCRIPTEN) +if(NOT TARGET simpleio AND LINUX_HEADERS_INCLUDE_DIR AND UNIX AND NOT APPLE AND NOT EMSCRIPTEN) add_library(simpleio STATIC "${CMAKE_CURRENT_LIST_DIR}/libsimpleio/libsimpleio/cplusplus.h" "${CMAKE_CURRENT_LIST_DIR}/libsimpleio/libsimpleio/errmsg.c" diff --git a/3rdparty/r8brain.cmake b/3rdparty/r8brain.cmake index 8240e69280..af1c91eff4 100644 --- a/3rdparty/r8brain.cmake +++ b/3rdparty/r8brain.cmake @@ -1,3 +1,18 @@ +score_use_system(use_sys r8brain) +if(use_sys) + find_package(r8brain GLOBAL QUIET) + if(NOT TARGET r8brain) + find_library(R8BRAIN_LIBRARY NAMES r8brain) + find_path(R8BRAIN_INCLUDE_DIR CDSPResampler.h PATH_SUFFIXES r8brain) + if(R8BRAIN_LIBRARY AND R8BRAIN_INCLUDE_DIR) + add_library(r8brain INTERFACE IMPORTED GLOBAL) + target_include_directories(r8brain SYSTEM INTERFACE "${R8BRAIN_INCLUDE_DIR}") + target_link_libraries(r8brain INTERFACE "${R8BRAIN_LIBRARY}") + endif() + endif() +endif() + +if(NOT TARGET r8brain) add_library(r8brain STATIC "${CMAKE_CURRENT_LIST_DIR}/libossia/3rdparty/r8brain-free-src/r8bbase.cpp" ) @@ -13,3 +28,4 @@ target_include_directories( PUBLIC "${CMAKE_CURRENT_LIST_DIR}/libossia/3rdparty/r8brain-free-src/" ) +endif() diff --git a/src/plugins/score-plugin-clap/CMakeLists.txt b/src/plugins/score-plugin-clap/CMakeLists.txt index f7901c86f9..9ef6d33096 100644 --- a/src/plugins/score-plugin-clap/CMakeLists.txt +++ b/src/plugins/score-plugin-clap/CMakeLists.txt @@ -52,10 +52,16 @@ target_link_libraries(${PROJECT_NAME} PUBLIC score_plugin_media ) -target_include_directories(${PROJECT_NAME} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/3rdparty/clap/include -) +score_use_system(use_sys clap) +if(use_sys) + find_package(clap GLOBAL QUIET) +endif() +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +if(TARGET clap::clap) + target_link_libraries(${PROJECT_NAME} PRIVATE clap::clap) +else() + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/clap/include) +endif() # Platform-specific libraries for dynamic loading if(WIN32) From afe94ec0caa37fa9434b367fae432019f3100035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Sun, 21 Jun 2026 16:17:58 -0400 Subject: [PATCH 03/10] 3rdparty: turn vendored deps into proper library targets Extract phantomstyle, Gist, miniply, mikktspace, vcglib, opengametools, outcome, llfio and quickcpplib into their own targets instead of compiling their sources / include dirs directly into consumers. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/3rdparty.cmake | 4 +++ 3rdparty/llfio.cmake | 17 +++++++++++ 3rdparty/outcome.cmake | 13 ++++++++ 3rdparty/phantomstyle.cmake | 9 ++++++ 3rdparty/quickcpplib.cmake | 13 ++++++++ src/app/CMakeLists.txt | 6 +--- src/lib/CMakeLists.txt | 10 +++---- .../score-plugin-analysis/CMakeLists.txt | 17 +++++------ .../score-plugin-threedim/CMakeLists.txt | 30 +++++++++++-------- 9 files changed, 85 insertions(+), 34 deletions(-) create mode 100644 3rdparty/llfio.cmake create mode 100644 3rdparty/outcome.cmake create mode 100644 3rdparty/phantomstyle.cmake create mode 100644 3rdparty/quickcpplib.cmake diff --git a/3rdparty/3rdparty.cmake b/3rdparty/3rdparty.cmake index f0a1f4a2d2..3daa6376ef 100644 --- a/3rdparty/3rdparty.cmake +++ b/3rdparty/3rdparty.cmake @@ -24,6 +24,10 @@ function(restore_var VAR) endif() endfunction() +include(3rdparty/outcome.cmake) +include(3rdparty/quickcpplib.cmake) +include(3rdparty/llfio.cmake) +include(3rdparty/phantomstyle.cmake) include(3rdparty/dspfilters.cmake) include(3rdparty/eigen.cmake) include(3rdparty/gamma.cmake) diff --git a/3rdparty/llfio.cmake b/3rdparty/llfio.cmake new file mode 100644 index 0000000000..18d546a80c --- /dev/null +++ b/3rdparty/llfio.cmake @@ -0,0 +1,17 @@ +score_use_system(use_sys llfio) +set(LLFIO_INC "${CMAKE_CURRENT_LIST_DIR}/llfio/include") +if(use_sys) + find_path(LLFIO_INCLUDE_DIR llfio/llfio.hpp) + if(LLFIO_INCLUDE_DIR) + set(LLFIO_INC "${LLFIO_INCLUDE_DIR}") + endif() +endif() + +if(NOT TARGET llfio) + add_library(llfio INTERFACE IMPORTED GLOBAL) + target_include_directories(llfio SYSTEM INTERFACE "${LLFIO_INC}") + if(WIN32 AND NOT use_sys) + target_include_directories(llfio SYSTEM INTERFACE + "${CMAKE_CURRENT_LIST_DIR}/llfio/include/llfio/ntkernel-error-category/include") + endif() +endif() diff --git a/3rdparty/outcome.cmake b/3rdparty/outcome.cmake new file mode 100644 index 0000000000..4bd973249d --- /dev/null +++ b/3rdparty/outcome.cmake @@ -0,0 +1,13 @@ +score_use_system(use_sys outcome) +set(OUTCOME_INC "${CMAKE_CURRENT_LIST_DIR}/outcome/include") +if(use_sys) + find_path(OUTCOME_INCLUDE_DIR outcome/outcome.hpp) + if(OUTCOME_INCLUDE_DIR) + set(OUTCOME_INC "${OUTCOME_INCLUDE_DIR}") + endif() +endif() + +if(NOT TARGET outcome) + add_library(outcome INTERFACE IMPORTED GLOBAL) + target_include_directories(outcome SYSTEM INTERFACE "${OUTCOME_INC}") +endif() diff --git a/3rdparty/phantomstyle.cmake b/3rdparty/phantomstyle.cmake new file mode 100644 index 0000000000..a73a2a0e75 --- /dev/null +++ b/3rdparty/phantomstyle.cmake @@ -0,0 +1,9 @@ +add_library(phantomstyle STATIC + "${CMAKE_CURRENT_LIST_DIR}/phantomstyle/src/phantom/phantomcolor.cpp" + "${CMAKE_CURRENT_LIST_DIR}/phantomstyle/src/phantom/phantomstyle.cpp" +) +target_include_directories(phantomstyle SYSTEM PUBLIC + "${CMAKE_CURRENT_LIST_DIR}/phantomstyle/src") +target_link_libraries(phantomstyle PUBLIC + ${QT_PREFIX}::Core ${QT_PREFIX}::Gui ${QT_PREFIX}::Widgets) +set_target_properties(phantomstyle PROPERTIES UNITY_BUILD 0) diff --git a/3rdparty/quickcpplib.cmake b/3rdparty/quickcpplib.cmake new file mode 100644 index 0000000000..7f5fe0a1de --- /dev/null +++ b/3rdparty/quickcpplib.cmake @@ -0,0 +1,13 @@ +score_use_system(use_sys quickcpplib) +set(QUICKCPPLIB_INC "${CMAKE_CURRENT_LIST_DIR}/quickcpplib/include") +if(use_sys) + find_path(QUICKCPPLIB_INCLUDE_DIR quickcpplib/config.hpp) + if(QUICKCPPLIB_INCLUDE_DIR) + set(QUICKCPPLIB_INC "${QUICKCPPLIB_INCLUDE_DIR}") + endif() +endif() + +if(NOT TARGET quickcpplib) + add_library(quickcpplib INTERFACE IMPORTED GLOBAL) + target_include_directories(quickcpplib SYSTEM INTERFACE "${QUICKCPPLIB_INC}") +endif() diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index c7d4466637..284958cb25 100755 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -59,9 +59,6 @@ set(SRCS "${CMAKE_CURRENT_SOURCE_DIR}/Application.hpp" "${CMAKE_CURRENT_SOURCE_DIR}/Application.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp" - - "${3RDPARTY_FOLDER}/phantomstyle/src/phantom/phantomcolor.cpp" - "${3RDPARTY_FOLDER}/phantomstyle/src/phantom/phantomstyle.cpp" ) if(EMSCRIPTEN) @@ -75,11 +72,10 @@ endif() ossia_set_visibility(${APPNAME}) -target_include_directories(${APPNAME} PRIVATE "${3RDPARTY_FOLDER}/phantomstyle/src") - target_link_libraries(${APPNAME} PUBLIC score_lib_base + phantomstyle ${QT_PREFIX}::CorePrivate ) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 4179b1a691..560dbb557e 100755 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -609,12 +609,6 @@ endif() target_include_directories(score_lib_base SYSTEM PUBLIC "${3RDPARTY_FOLDER}") target_include_directories(score_lib_base SYSTEM PUBLIC "${3RDPARTY_FOLDER}/zipdownloader/src") target_include_directories(score_lib_base SYSTEM PUBLIC "${OSSIA_3RDPARTY_FOLDER}/rnd/include") -target_include_directories(score_lib_base SYSTEM PRIVATE "${3RDPARTY_FOLDER}/quickcpplib/include") -target_include_directories(score_lib_base SYSTEM PRIVATE "${3RDPARTY_FOLDER}/outcome/include") -target_include_directories(score_lib_base SYSTEM PRIVATE "${3RDPARTY_FOLDER}/llfio/include") -if(WIN32) - target_include_directories(score_lib_base SYSTEM PRIVATE "${3RDPARTY_FOLDER}/llfio/include/llfio/ntkernel-error-category/include") -endif() target_link_libraries(score_lib_base PUBLIC @@ -627,6 +621,10 @@ target_link_libraries(score_lib_base magic_enum::magic_enum Eigen3::Eigen xtensor + PRIVATE + outcome + llfio + quickcpplib ) if(TARGET ${QT_PREFIX}::Svg) diff --git a/src/plugins/score-plugin-analysis/CMakeLists.txt b/src/plugins/score-plugin-analysis/CMakeLists.txt index 84b4840c62..0aa5439e09 100644 --- a/src/plugins/score-plugin-analysis/CMakeLists.txt +++ b/src/plugins/score-plugin-analysis/CMakeLists.txt @@ -31,26 +31,23 @@ add_library( score_plugin_analysis.hpp score_plugin_analysis.cpp +) +add_library(Gist STATIC "${3RDPARTY_FOLDER}/Gist/src/CoreFrequencyDomainFeatures.cpp" - "${3RDPARTY_FOLDER}/Gist/src/CoreFrequencyDomainFeatures.h" "${3RDPARTY_FOLDER}/Gist/src/CoreTimeDomainFeatures.cpp" - "${3RDPARTY_FOLDER}/Gist/src/CoreTimeDomainFeatures.h" "${3RDPARTY_FOLDER}/Gist/src/Gist.cpp" - "${3RDPARTY_FOLDER}/Gist/src/Gist.h" "${3RDPARTY_FOLDER}/Gist/src/MFCC.cpp" - "${3RDPARTY_FOLDER}/Gist/src/MFCC.h" "${3RDPARTY_FOLDER}/Gist/src/OnsetDetectionFunction.cpp" - "${3RDPARTY_FOLDER}/Gist/src/OnsetDetectionFunction.h" "${3RDPARTY_FOLDER}/Gist/src/WindowFunctions.cpp" - "${3RDPARTY_FOLDER}/Gist/src/WindowFunctions.h" "${3RDPARTY_FOLDER}/Gist/src/Yin.cpp" - "${3RDPARTY_FOLDER}/Gist/src/Yin.h" ) +target_compile_definitions(Gist PUBLIC USE_OSSIA_FFT=1) +target_include_directories(Gist SYSTEM PUBLIC "${3RDPARTY_FOLDER}/Gist/src") +target_link_libraries(Gist PUBLIC ossia) +set_target_properties(Gist PROPERTIES UNITY_BUILD 0) -target_compile_definitions(score_plugin_analysis PRIVATE USE_OSSIA_FFT=1) -target_include_directories(score_plugin_analysis PRIVATE "${3RDPARTY_FOLDER}/Gist/src") -target_link_libraries(score_plugin_analysis PUBLIC score_plugin_engine score_plugin_avnd) +target_link_libraries(score_plugin_analysis PUBLIC score_plugin_engine score_plugin_avnd Gist) if(OSSIA_ENABLE_KFR AND TARGET kfr) link_whole_archive(score_plugin_analysis PRIVATE kfr) link_whole_archive(score_plugin_analysis PRIVATE kfr_dsp) diff --git a/src/plugins/score-plugin-threedim/CMakeLists.txt b/src/plugins/score-plugin-threedim/CMakeLists.txt index cf29d7946f..7522834ffb 100644 --- a/src/plugins/score-plugin-threedim/CMakeLists.txt +++ b/src/plugins/score-plugin-threedim/CMakeLists.txt @@ -36,7 +36,7 @@ add_library( "${3RDPARTY_FOLDER}/libssynth/src/ssynth/MiniParser.cpp" "${3RDPARTY_FOLDER}/libssynth/src/ssynth/RandomStreams.cpp") target_include_directories(ssynth SYSTEM - PRIVATE "${3RDPARTY_FOLDER}/libssynth/src") + PUBLIC "${3RDPARTY_FOLDER}/libssynth/src") target_link_libraries(ssynth PRIVATE "${QT_PREFIX}::Core" "${QT_PREFIX}::Gui" "${QT_PREFIX}::Xml" score_lib_base) @@ -45,6 +45,20 @@ if(NOT MSVC) target_compile_options(ssynth PRIVATE -w) endif() +add_library(miniply STATIC "${3RDPARTY_FOLDER}/miniply/miniply.cpp") +target_include_directories(miniply SYSTEM PUBLIC "${3RDPARTY_FOLDER}/miniply") +set_target_properties(miniply PROPERTIES UNITY_BUILD 0) + +add_library(mikktspace STATIC "${3RDPARTY_FOLDER}/mikktspace/mikktspace.c") +target_include_directories(mikktspace SYSTEM PUBLIC "${3RDPARTY_FOLDER}/mikktspace") +set_target_properties(mikktspace PROPERTIES UNITY_BUILD 0) + +add_library(vcglib INTERFACE IMPORTED GLOBAL) +target_include_directories(vcglib SYSTEM INTERFACE "${3RDPARTY_FOLDER}/vcglib") + +add_library(opengametools INTERFACE IMPORTED GLOBAL) +target_include_directories(opengametools SYSTEM INTERFACE "${3RDPARTY_FOLDER}/opengametools/src") + # threedim addon add_library( score_plugin_threedim @@ -115,8 +129,6 @@ add_library( Threedim/Splat/GaussianSplatNode.hpp Threedim/Splat/GaussianSplatNode.cpp - "${3RDPARTY_FOLDER}/miniply/miniply.cpp" - "${3RDPARTY_FOLDER}/mikktspace/mikktspace.c" score_plugin_threedim.hpp score_plugin_threedim.cpp) @@ -125,15 +137,7 @@ setup_score_plugin(score_plugin_threedim) score_generate_command_list_file(score_plugin_threedim "Threedim/RenderPipeline/Process.hpp") -target_include_directories( - score_plugin_threedim SYSTEM - PRIVATE - "${3RDPARTY_FOLDER}/libssynth/src" - "${3RDPARTY_FOLDER}/vcglib" - "${3RDPARTY_FOLDER}/miniply" - "${3RDPARTY_FOLDER}/mikktspace" - "${3RDPARTY_FOLDER}/opengametools/src") - target_link_libraries( score_plugin_threedim PRIVATE score_plugin_engine score_plugin_avnd - score_plugin_gfx fmt::fmt ssynth Eigen3::Eigen) + score_plugin_gfx fmt::fmt ssynth Eigen3::Eigen + miniply mikktspace vcglib opengametools) From 28ebd8c4d3fc0cd7e85db54cce32e2deacd4d214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Mon, 22 Jun 2026 01:57:03 -0400 Subject: [PATCH 04/10] 3rdparty: move plugin-vendored libs into 3rdparty/.cmake ssynth, miniply, mikktspace, vcglib, opengametools and Gist are now defined in 3rdparty/*.cmake like the other dependencies; the threedim and analysis plugins include() them. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/gist.cmake | 13 +++++ 3rdparty/mikktspace.cmake | 3 ++ 3rdparty/miniply.cmake | 3 ++ 3rdparty/opengametools.cmake | 2 + 3rdparty/ssynth.cmake | 29 +++++++++++ 3rdparty/vcglib.cmake | 2 + .../score-plugin-analysis/CMakeLists.txt | 14 +----- .../score-plugin-threedim/CMakeLists.txt | 49 ++----------------- 8 files changed, 58 insertions(+), 57 deletions(-) create mode 100644 3rdparty/gist.cmake create mode 100644 3rdparty/mikktspace.cmake create mode 100644 3rdparty/miniply.cmake create mode 100644 3rdparty/opengametools.cmake create mode 100644 3rdparty/ssynth.cmake create mode 100644 3rdparty/vcglib.cmake diff --git a/3rdparty/gist.cmake b/3rdparty/gist.cmake new file mode 100644 index 0000000000..7b6521deb3 --- /dev/null +++ b/3rdparty/gist.cmake @@ -0,0 +1,13 @@ +add_library(Gist STATIC + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/CoreFrequencyDomainFeatures.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/CoreTimeDomainFeatures.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/Gist.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/MFCC.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/OnsetDetectionFunction.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/WindowFunctions.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Gist/src/Yin.cpp" +) +target_compile_definitions(Gist PUBLIC USE_OSSIA_FFT=1) +target_include_directories(Gist SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/Gist/src") +target_link_libraries(Gist PUBLIC ossia) +set_target_properties(Gist PROPERTIES UNITY_BUILD 0) diff --git a/3rdparty/mikktspace.cmake b/3rdparty/mikktspace.cmake new file mode 100644 index 0000000000..5c1d370864 --- /dev/null +++ b/3rdparty/mikktspace.cmake @@ -0,0 +1,3 @@ +add_library(mikktspace STATIC "${CMAKE_CURRENT_LIST_DIR}/mikktspace/mikktspace.c") +target_include_directories(mikktspace SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/mikktspace") +set_target_properties(mikktspace PROPERTIES UNITY_BUILD 0) diff --git a/3rdparty/miniply.cmake b/3rdparty/miniply.cmake new file mode 100644 index 0000000000..88cc09046d --- /dev/null +++ b/3rdparty/miniply.cmake @@ -0,0 +1,3 @@ +add_library(miniply STATIC "${CMAKE_CURRENT_LIST_DIR}/miniply/miniply.cpp") +target_include_directories(miniply SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/miniply") +set_target_properties(miniply PROPERTIES UNITY_BUILD 0) diff --git a/3rdparty/opengametools.cmake b/3rdparty/opengametools.cmake new file mode 100644 index 0000000000..478bd7cecf --- /dev/null +++ b/3rdparty/opengametools.cmake @@ -0,0 +1,2 @@ +add_library(opengametools INTERFACE IMPORTED GLOBAL) +target_include_directories(opengametools SYSTEM INTERFACE "${CMAKE_CURRENT_LIST_DIR}/opengametools/src") diff --git a/3rdparty/ssynth.cmake b/3rdparty/ssynth.cmake new file mode 100644 index 0000000000..6aaa17d106 --- /dev/null +++ b/3rdparty/ssynth.cmake @@ -0,0 +1,29 @@ +add_library( + ssynth STATIC + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Parser/EisenParser.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Parser/Preprocessor.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Parser/Tokenizer.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/Action.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/AmbiguousRule.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/Builder.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/CustomRule.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/PrimitiveRule.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/RuleSet.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/State.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/Transformation.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/Rendering/TemplateRenderer.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Model/Rendering/ObjRenderer.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/ColorPool.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/ColorUtils.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/Logging.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/MiniParser.cpp" + "${CMAKE_CURRENT_LIST_DIR}/libssynth/src/ssynth/RandomStreams.cpp") +target_include_directories(ssynth SYSTEM + PUBLIC "${CMAKE_CURRENT_LIST_DIR}/libssynth/src") + +target_link_libraries(ssynth PRIVATE "${QT_PREFIX}::Core" "${QT_PREFIX}::Gui" + "${QT_PREFIX}::Xml" score_lib_base) + +if(NOT MSVC) + target_compile_options(ssynth PRIVATE -w) +endif() diff --git a/3rdparty/vcglib.cmake b/3rdparty/vcglib.cmake new file mode 100644 index 0000000000..d30625fe12 --- /dev/null +++ b/3rdparty/vcglib.cmake @@ -0,0 +1,2 @@ +add_library(vcglib INTERFACE IMPORTED GLOBAL) +target_include_directories(vcglib SYSTEM INTERFACE "${CMAKE_CURRENT_LIST_DIR}/vcglib") diff --git a/src/plugins/score-plugin-analysis/CMakeLists.txt b/src/plugins/score-plugin-analysis/CMakeLists.txt index 0aa5439e09..c1097a2a4c 100644 --- a/src/plugins/score-plugin-analysis/CMakeLists.txt +++ b/src/plugins/score-plugin-analysis/CMakeLists.txt @@ -33,19 +33,7 @@ add_library( score_plugin_analysis.cpp ) -add_library(Gist STATIC - "${3RDPARTY_FOLDER}/Gist/src/CoreFrequencyDomainFeatures.cpp" - "${3RDPARTY_FOLDER}/Gist/src/CoreTimeDomainFeatures.cpp" - "${3RDPARTY_FOLDER}/Gist/src/Gist.cpp" - "${3RDPARTY_FOLDER}/Gist/src/MFCC.cpp" - "${3RDPARTY_FOLDER}/Gist/src/OnsetDetectionFunction.cpp" - "${3RDPARTY_FOLDER}/Gist/src/WindowFunctions.cpp" - "${3RDPARTY_FOLDER}/Gist/src/Yin.cpp" -) -target_compile_definitions(Gist PUBLIC USE_OSSIA_FFT=1) -target_include_directories(Gist SYSTEM PUBLIC "${3RDPARTY_FOLDER}/Gist/src") -target_link_libraries(Gist PUBLIC ossia) -set_target_properties(Gist PROPERTIES UNITY_BUILD 0) +include("${3RDPARTY_FOLDER}/gist.cmake") target_link_libraries(score_plugin_analysis PUBLIC score_plugin_engine score_plugin_avnd Gist) if(OSSIA_ENABLE_KFR AND TARGET kfr) diff --git a/src/plugins/score-plugin-threedim/CMakeLists.txt b/src/plugins/score-plugin-threedim/CMakeLists.txt index 7522834ffb..a620efa07b 100644 --- a/src/plugins/score-plugin-threedim/CMakeLists.txt +++ b/src/plugins/score-plugin-threedim/CMakeLists.txt @@ -14,50 +14,11 @@ endif() find_package(${QT_VERSION} REQUIRED COMPONENTS Xml) -# libssynth -add_library( - ssynth STATIC - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/EisenParser.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/Preprocessor.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/Tokenizer.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Action.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/AmbiguousRule.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Builder.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/CustomRule.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/PrimitiveRule.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/RuleSet.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/State.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Transformation.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Rendering/TemplateRenderer.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Rendering/ObjRenderer.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/ColorPool.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/ColorUtils.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/Logging.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/MiniParser.cpp" - "${3RDPARTY_FOLDER}/libssynth/src/ssynth/RandomStreams.cpp") -target_include_directories(ssynth SYSTEM - PUBLIC "${3RDPARTY_FOLDER}/libssynth/src") - -target_link_libraries(ssynth PRIVATE "${QT_PREFIX}::Core" "${QT_PREFIX}::Gui" - "${QT_PREFIX}::Xml" score_lib_base) - -if(NOT MSVC) - target_compile_options(ssynth PRIVATE -w) -endif() - -add_library(miniply STATIC "${3RDPARTY_FOLDER}/miniply/miniply.cpp") -target_include_directories(miniply SYSTEM PUBLIC "${3RDPARTY_FOLDER}/miniply") -set_target_properties(miniply PROPERTIES UNITY_BUILD 0) - -add_library(mikktspace STATIC "${3RDPARTY_FOLDER}/mikktspace/mikktspace.c") -target_include_directories(mikktspace SYSTEM PUBLIC "${3RDPARTY_FOLDER}/mikktspace") -set_target_properties(mikktspace PROPERTIES UNITY_BUILD 0) - -add_library(vcglib INTERFACE IMPORTED GLOBAL) -target_include_directories(vcglib SYSTEM INTERFACE "${3RDPARTY_FOLDER}/vcglib") - -add_library(opengametools INTERFACE IMPORTED GLOBAL) -target_include_directories(opengametools SYSTEM INTERFACE "${3RDPARTY_FOLDER}/opengametools/src") +include("${3RDPARTY_FOLDER}/ssynth.cmake") +include("${3RDPARTY_FOLDER}/miniply.cmake") +include("${3RDPARTY_FOLDER}/mikktspace.cmake") +include("${3RDPARTY_FOLDER}/vcglib.cmake") +include("${3RDPARTY_FOLDER}/opengametools.cmake") # threedim addon add_library( From 6ab2ef45eb635cc87c8c36d651fe23df4e7f5280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Mon, 22 Jun 2026 02:05:07 -0400 Subject: [PATCH 05/10] 3rdparty: graceful vendored fallback for optional system deps snappy, shmdata, sh4lt, suil and wiiuse now build the vendored copy when the system package is requested but not found, instead of failing. Bumps libossia (wiiuse). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/libossia | 2 +- 3rdparty/sh4lt.cmake | 4 +++- 3rdparty/shmdata.cmake | 4 +++- 3rdparty/snappy.cmake | 4 +++- 3rdparty/suil.cmake | 5 ----- cmake/modules/FindSuil.cmake | 8 +++++--- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/3rdparty/libossia b/3rdparty/libossia index f18f8d4782..9b348d1445 160000 --- a/3rdparty/libossia +++ b/3rdparty/libossia @@ -1 +1 @@ -Subproject commit f18f8d478263ac15ed24a0d00ef79c1387f9808d +Subproject commit 9b348d14455a1b4d568f9fb713e092aadfbdf90f diff --git a/3rdparty/sh4lt.cmake b/3rdparty/sh4lt.cmake index 2a7dd2c7df..202d600081 100644 --- a/3rdparty/sh4lt.cmake +++ b/3rdparty/sh4lt.cmake @@ -9,7 +9,9 @@ endif() score_use_system(use_sys sh4lt) if(use_sys) find_package(sh4lt GLOBAL) -else() +endif() + +if(NOT TARGET sh4lt) add_library(sh4lt STATIC "${CMAKE_CURRENT_LIST_DIR}/sh4lt/sh4lt/c/cfollower.cpp" "${CMAKE_CURRENT_LIST_DIR}/sh4lt/sh4lt/c/clogger.cpp" diff --git a/3rdparty/shmdata.cmake b/3rdparty/shmdata.cmake index beff20a4ce..1858639ef4 100644 --- a/3rdparty/shmdata.cmake +++ b/3rdparty/shmdata.cmake @@ -9,7 +9,9 @@ endif() score_use_system(use_sys shmdata) if(use_sys) find_package(shmdata GLOBAL) -else() +endif() + +if(NOT TARGET shmdata) add_library(shmdata STATIC "${CMAKE_CURRENT_LIST_DIR}/shmdata/shmdata/cfollower.cpp" "${CMAKE_CURRENT_LIST_DIR}/shmdata/shmdata/clogger.cpp" diff --git a/3rdparty/snappy.cmake b/3rdparty/snappy.cmake index 5812357d5c..162938f440 100644 --- a/3rdparty/snappy.cmake +++ b/3rdparty/snappy.cmake @@ -1,7 +1,9 @@ score_use_system(use_sys Snappy) if(use_sys) find_package(Snappy GLOBAL CONFIG) -else() +endif() + +if(NOT TARGET Snappy::snappy AND NOT TARGET snappy) set(SNAPPY_BUILD_TESTS OFF) set(SNAPPY_BUILD_BENCHMARKS OFF) set(SNAPPY_INSTALL OFF) diff --git a/3rdparty/suil.cmake b/3rdparty/suil.cmake index 84f2c6cc72..07daeef47e 100644 --- a/3rdparty/suil.cmake +++ b/3rdparty/suil.cmake @@ -1,8 +1,3 @@ -score_use_system(use_sys Suil) -if(use_sys) - return() -endif() - if(NOT LV2_PATH) return() endif() diff --git a/cmake/modules/FindSuil.cmake b/cmake/modules/FindSuil.cmake index 9e4e49a241..0a7cef8c59 100644 --- a/cmake/modules/FindSuil.cmake +++ b/cmake/modules/FindSuil.cmake @@ -11,7 +11,6 @@ find_path( suil-0 ) -set(Suil_NAMES suil suil-0) find_library(Suil_LIBRARY NAMES suil @@ -23,16 +22,19 @@ find_library(Suil_LIBRARY if(Suil_INCLUDE_DIR AND Suil_LIBRARY) set(Suil_FOUND TRUE) endif() -if(UNIX AND NOT APPLE) +if(UNIX AND NOT APPLE AND Suil_FOUND) get_filename_component(Suil_FOLDER "${Suil_LIBRARY}" DIRECTORY) if(NOT ((EXISTS "${Suil_FOLDER}/libsuil_x11_in_qt6.so") OR (EXISTS "${Suil_FOLDER}/suil-0/libsuil_x11_in_qt6.so"))) unset(Suil_INCLUDE_DIR) unset(Suil_LIBRARY) unset(Suil_FOUND) - include("${3RDPARTY_FOLDER}/suil.cmake") endif() endif() +if(NOT Suil_FOUND) + include("${3RDPARTY_FOLDER}/suil.cmake") +endif() + include(FindPackageHandleStandardArgs) find_package_handle_standard_args( Suil DEFAULT_MSG From 08e447c989b87bbc01c426e726350edd1c5e6c6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Mon, 22 Jun 2026 02:27:45 -0400 Subject: [PATCH 06/10] 3rdparty: point libossia submodule at master + wiiuse fallback libossia #903 was merged; re-point at master (granular overrides) plus the wiiuse graceful-fallback follow-up (libossia #904) instead of the orphaned pre-merge branch commit. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/libossia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/libossia b/3rdparty/libossia index 9b348d1445..a095e34aab 160000 --- a/3rdparty/libossia +++ b/3rdparty/libossia @@ -1 +1 @@ -Subproject commit 9b348d14455a1b4d568f9fb713e092aadfbdf90f +Subproject commit a095e34aabb5211250657476f9b363f18fa4e7a9 From ff6b02b67babd609d15423990c91d995c841f00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Mon, 22 Jun 2026 03:14:59 -0400 Subject: [PATCH 07/10] 3rdparty: bump libossia to master (includes wiiuse fallback) libossia #904 merged; point submodule at libossia master HEAD so the reference is reachable from master. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/libossia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/libossia b/3rdparty/libossia index a095e34aab..50286cb65d 160000 --- a/3rdparty/libossia +++ b/3rdparty/libossia @@ -1 +1 @@ -Subproject commit a095e34aabb5211250657476f9b363f18fa4e7a9 +Subproject commit 50286cb65d5421fb5737ee9a1c68a323d5e8e146 From 7e48ee0cd894f6009e2df009a6d20bfb3c9883a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Mon, 22 Jun 2026 12:53:44 -0400 Subject: [PATCH 08/10] 3rdparty: bump libossia with Abseil-unity + wiiuse fixes Points at the libossia fixes branch (ossia/libossia#905) so score builds clean against current libossia master (unity Abseil + system wiiuse fallback). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/libossia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/libossia b/3rdparty/libossia index 50286cb65d..2794df37ca 160000 --- a/3rdparty/libossia +++ b/3rdparty/libossia @@ -1 +1 @@ -Subproject commit 50286cb65d5421fb5737ee9a1c68a323d5e8e146 +Subproject commit 2794df37ca87a5d7569d59229312290793bd2ddc From fe7c1e3ffaf1c63e6cdad5d09159dd9339ef96ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Tue, 23 Jun 2026 06:47:08 -0400 Subject: [PATCH 09/10] 3rdparty: bump libossia to master (Abseil-unity + wiiuse fixes) libossia #905 merged; point submodule at libossia master HEAD. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/libossia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/libossia b/3rdparty/libossia index 2794df37ca..b335062f52 160000 --- a/3rdparty/libossia +++ b/3rdparty/libossia @@ -1 +1 @@ -Subproject commit 2794df37ca87a5d7569d59229312290793bd2ddc +Subproject commit b335062f524775ad9a5ef094eec5bdcb8fd20e8d From 1e14e42048fadac90c4f49a3029bdcfd910096da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Tue, 23 Jun 2026 06:47:08 -0400 Subject: [PATCH 10/10] 3rdparty: allow system override for miniply, mikktspace, vcglib, opengametools Give the relocated standalone deps the same tri-state OSSIA_USE_SYSTEM_ find path + vendored fallback as the others, instead of vendored-only. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01S5akSKFxSnxVz3RtLyU9QN --- 3rdparty/mikktspace.cmake | 19 ++++++++++++++++--- 3rdparty/miniply.cmake | 19 ++++++++++++++++--- 3rdparty/opengametools.cmake | 15 +++++++++++++-- 3rdparty/vcglib.cmake | 15 +++++++++++++-- 4 files changed, 58 insertions(+), 10 deletions(-) diff --git a/3rdparty/mikktspace.cmake b/3rdparty/mikktspace.cmake index 5c1d370864..145cd88510 100644 --- a/3rdparty/mikktspace.cmake +++ b/3rdparty/mikktspace.cmake @@ -1,3 +1,16 @@ -add_library(mikktspace STATIC "${CMAKE_CURRENT_LIST_DIR}/mikktspace/mikktspace.c") -target_include_directories(mikktspace SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/mikktspace") -set_target_properties(mikktspace PROPERTIES UNITY_BUILD 0) +score_use_system(use_sys mikktspace) +if(use_sys) + find_path(MIKKTSPACE_INCLUDE_DIR mikktspace.h) + find_library(MIKKTSPACE_LIBRARY NAMES mikktspace) + if(MIKKTSPACE_INCLUDE_DIR AND MIKKTSPACE_LIBRARY) + add_library(mikktspace INTERFACE IMPORTED GLOBAL) + target_include_directories(mikktspace SYSTEM INTERFACE "${MIKKTSPACE_INCLUDE_DIR}") + target_link_libraries(mikktspace INTERFACE "${MIKKTSPACE_LIBRARY}") + endif() +endif() + +if(NOT TARGET mikktspace) + add_library(mikktspace STATIC "${CMAKE_CURRENT_LIST_DIR}/mikktspace/mikktspace.c") + target_include_directories(mikktspace SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/mikktspace") + set_target_properties(mikktspace PROPERTIES UNITY_BUILD 0) +endif() diff --git a/3rdparty/miniply.cmake b/3rdparty/miniply.cmake index 88cc09046d..44f1bf39c9 100644 --- a/3rdparty/miniply.cmake +++ b/3rdparty/miniply.cmake @@ -1,3 +1,16 @@ -add_library(miniply STATIC "${CMAKE_CURRENT_LIST_DIR}/miniply/miniply.cpp") -target_include_directories(miniply SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/miniply") -set_target_properties(miniply PROPERTIES UNITY_BUILD 0) +score_use_system(use_sys miniply) +if(use_sys) + find_path(MINIPLY_INCLUDE_DIR miniply.h) + find_library(MINIPLY_LIBRARY NAMES miniply) + if(MINIPLY_INCLUDE_DIR AND MINIPLY_LIBRARY) + add_library(miniply INTERFACE IMPORTED GLOBAL) + target_include_directories(miniply SYSTEM INTERFACE "${MINIPLY_INCLUDE_DIR}") + target_link_libraries(miniply INTERFACE "${MINIPLY_LIBRARY}") + endif() +endif() + +if(NOT TARGET miniply) + add_library(miniply STATIC "${CMAKE_CURRENT_LIST_DIR}/miniply/miniply.cpp") + target_include_directories(miniply SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/miniply") + set_target_properties(miniply PROPERTIES UNITY_BUILD 0) +endif() diff --git a/3rdparty/opengametools.cmake b/3rdparty/opengametools.cmake index 478bd7cecf..c9368b9bc4 100644 --- a/3rdparty/opengametools.cmake +++ b/3rdparty/opengametools.cmake @@ -1,2 +1,13 @@ -add_library(opengametools INTERFACE IMPORTED GLOBAL) -target_include_directories(opengametools SYSTEM INTERFACE "${CMAKE_CURRENT_LIST_DIR}/opengametools/src") +score_use_system(use_sys opengametools) +set(OPENGAMETOOLS_INC "${CMAKE_CURRENT_LIST_DIR}/opengametools/src") +if(use_sys) + find_path(OPENGAMETOOLS_INCLUDE_DIR ogt_vox.h) + if(OPENGAMETOOLS_INCLUDE_DIR) + set(OPENGAMETOOLS_INC "${OPENGAMETOOLS_INCLUDE_DIR}") + endif() +endif() + +if(NOT TARGET opengametools) + add_library(opengametools INTERFACE IMPORTED GLOBAL) + target_include_directories(opengametools SYSTEM INTERFACE "${OPENGAMETOOLS_INC}") +endif() diff --git a/3rdparty/vcglib.cmake b/3rdparty/vcglib.cmake index d30625fe12..cad449fef5 100644 --- a/3rdparty/vcglib.cmake +++ b/3rdparty/vcglib.cmake @@ -1,2 +1,13 @@ -add_library(vcglib INTERFACE IMPORTED GLOBAL) -target_include_directories(vcglib SYSTEM INTERFACE "${CMAKE_CURRENT_LIST_DIR}/vcglib") +score_use_system(use_sys vcglib) +set(VCGLIB_INC "${CMAKE_CURRENT_LIST_DIR}/vcglib") +if(use_sys) + find_path(VCGLIB_INCLUDE_DIR vcg/complex/complex.h) + if(VCGLIB_INCLUDE_DIR) + set(VCGLIB_INC "${VCGLIB_INCLUDE_DIR}") + endif() +endif() + +if(NOT TARGET vcglib) + add_library(vcglib INTERFACE IMPORTED GLOBAL) + target_include_directories(vcglib SYSTEM INTERFACE "${VCGLIB_INC}") +endif()