git: 2fb543ef416f - main - audio/supercollider: prepare for Boost-1.89, do not link with stub Boost::system (+)

From: Dima Panov <fluffy_at_FreeBSD.org>
Date: Tue, 30 Sep 2025 13:56:33 UTC
The branch main has been updated by fluffy:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2fb543ef416f013d31047ed920a6aa2357ecd9d0

commit 2fb543ef416f013d31047ed920a6aa2357ecd9d0
Author:     Dima Panov <fluffy@FreeBSD.org>
AuthorDate: 2025-09-30 13:55:03 +0000
Commit:     Dima Panov <fluffy@FreeBSD.org>
CommitDate: 2025-09-30 13:55:03 +0000

    audio/supercollider: prepare for Boost-1.89, do not link with stub Boost::system (+)
    
    Get rid of overlinking on empty stub library Boost::system, it is header-only since boost-1.70
    Backport of upstream commits from MR7116: https://github.com/supercollider/supercollider/pull/7116
            https://github.com/timblechmann/nova-tt/commit/b497ec33a733c84d53e4295955d1033e0add7dae
            https://github.com/supercollider/supercollider/commit/ee3ce7319fb61676454199cfa7023b804954d31a
    
    With hat: office/boost
---
 audio/supercollider/Makefile          |   3 +-
 audio/supercollider/files/patch-boost | 531 ++++++++++++++++++++++++++++++++++
 2 files changed, 533 insertions(+), 1 deletion(-)

diff --git a/audio/supercollider/Makefile b/audio/supercollider/Makefile
index f7c26016284e..678fc302f9f2 100644
--- a/audio/supercollider/Makefile
+++ b/audio/supercollider/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	supercollider
 DISTVERSION=	3.14.0
+PORTREVISION=	1
 CATEGORIES=	audio
 MASTER_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/releases/download/Version-${DISTVERSION}/
 DISTNAME=	SuperCollider-${DISTVERSION}-Source
@@ -14,7 +15,7 @@ LICENSE_FILE=	${WRKSRC}/COPYING
 BUILD_DEPENDS=	${LOCALBASE}/include/fftw3.h:math/fftw3 \
 		vulkan-headers>0:graphics/vulkan-headers
 
-LIB_DEPENDS=	libboost_system.so:devel/boost-libs \
+LIB_DEPENDS=	libboost_thread.so:devel/boost-libs \
 		libjack.so:audio/jack \
 		libsndfile.so:audio/libsndfile \
 		libfftw3f.so:math/fftw3-float \
diff --git a/audio/supercollider/files/patch-boost b/audio/supercollider/files/patch-boost
new file mode 100644
index 000000000000..b2d41daf6570
--- /dev/null
+++ b/audio/supercollider/files/patch-boost
@@ -0,0 +1,531 @@
+diff --git CMakeLists.txt CMakeLists.txt
+index 1ac592a857f..ee8f6550a98 100644
+--- CMakeLists.txt
++++ CMakeLists.txt
+@@ -123,16 +123,8 @@ endif()
+ 
+ if(WIN32)
+     add_definitions(-DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_WIN32_WINNT=0x0600)
+-
+-    #avoid unnecesary autolink
+-    add_definitions(-DBOOST_DATE_TIME_NO_LIB -DBOOST_ALL_NO_LIB)
+-
+-    # use session manager to set shared memory location, see issue 2409
+-    add_definitions(-DBOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED)
+ endif()
+ 
+-add_definitions(-DBOOST_CHRONO_HEADER_ONLY -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE)
+-
+ 
+ #############################################
+ # Options
+@@ -315,36 +307,32 @@ if (NOT WIN32)
+ endif()
+ 
+ if(SYSTEM_BOOST)
+-    # https://github.com/supercollider/supercollider/issues/4576#issuecomment-531499017
+-    # Boost >= 1.71 ships with its own Boost config file, we ignore it for now.
+-    set(Boost_NO_BOOST_CMAKE ON)
++    # policy CMP0167 is only available from CMake 3.30 on
++    if(POLICY CMP0167)
++        # CMP0167 NEW policy: use Boost-provided BoostConfig.cmake config file
++        # instead of the old FindBoost module
++        cmake_policy(SET CMP0167 NEW)
++    endif()
+     set(Boost_USE_MULTITHREADED ON)
+-    find_package( Boost 1.50.0 COMPONENTS  thread system filesystem program_options regex test_exec_monitor )
++    set(BOOST_COMPONENTS thread program_options regex)
++    if(ENABLE_TESTSUITE)
++        list(APPEND BOOST_COMPONENTS unit_test_framework)
++    endif()
++    find_package(Boost 1.70.0 REQUIRED COMPONENTS ${BOOST_COMPONENTS})
+     if (Boost_FOUND)
+-        # we're specifically setting up the boost libraries here, so we can
+-        # name them
+-        add_library(boost_thread_lib SHARED IMPORTED)
+-        set_property(TARGET boost_thread_lib PROPERTY IMPORTED_LOCATION
+-          ${Boost_THREAD_LIBRARY})
+-        add_library(boost_system_lib SHARED IMPORTED)
+-        set_property(TARGET boost_system_lib PROPERTY IMPORTED_LOCATION
+-          ${Boost_SYSTEM_LIBRARY})
+-        add_library(boost_program_options_lib SHARED IMPORTED)
+-        set_property(TARGET boost_program_options_lib PROPERTY
+-          IMPORTED_LOCATION ${Boost_PROGRAM_OPTIONS_LIBRARY})
+-        add_library(boost_regex_lib SHARED IMPORTED)
+-        set_property(TARGET boost_regex_lib PROPERTY IMPORTED_LOCATION
+-          ${Boost_REGEX_LIBRARY})
+-        add_library(boost_test_exec_monitor_lib SHARED IMPORTED)
+-        set_property(TARGET boost_test_exec_monitor_lib PROPERTY
+-          IMPORTED_LOCATION ${Boost_TEST_EXEC_MONITOR_LIBRARY})
+-        set(boost_include_dirs ${Boost_INCLUDE_DIRS})
+-    else()
+-        message(FATAL_ERROR "Not able to use system boost because none was found.")
++        message(STATUS "Found system Boost in ${Boost_INCLUDE_DIRS}")
+     endif()
+ else()
+-    set(boost_include_dirs ${CMAKE_SOURCE_DIR}/external_libraries/boost)
+-endif()
++	# bundled boost is set up in external_libraries/CMakeLists.txt
++	# here we just set some global definitions
++	if(WIN32)    
++		#avoid unnecesary autolink
++		add_definitions(-DBOOST_DATE_TIME_NO_LIB -DBOOST_ALL_NO_LIB)
++		# use session manager to set shared memory location, see issue 2409
++		add_definitions(-DBOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED)
++	endif()
++	add_definitions(-DBOOST_CHRONO_HEADER_ONLY -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE)
++endif() 
+ 
+ if(SYSTEM_YAMLCPP)
+   find_package(YamlCpp)
+diff --git editors/sc-ide/CMakeLists.txt editors/sc-ide/CMakeLists.txt
+index 1dfddcac2de..df40bce6e08 100644
+--- editors/sc-ide/CMakeLists.txt
++++ editors/sc-ide/CMakeLists.txt
+@@ -338,9 +338,6 @@ target_link_libraries( libscide PUBLIC
+ 
+ target_link_libraries( SuperCollider libscide)
+ 
+-target_link_libraries( libscide PUBLIC boost_system_lib)
+-include_directories(${boost_include_dirs})
+-
+ # This makes sclang/scide work with a Qt installation at a fixed location.
+ set_property(TARGET libscide SuperCollider PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
+ 
+diff --git editors/sc-ide/core/sc_server.cpp editors/sc-ide/core/sc_server.cpp
+index 9f677f5134d..00297c604a6 100644
+--- editors/sc-ide/core/sc_server.cpp
++++ editors/sc-ide/core/sc_server.cpp
+@@ -30,12 +30,10 @@
+ 
+ #include <sstream>
+ #include <iomanip>
+-#include <boost/chrono/chrono_io.hpp>
+ #include <osc/OscReceivedElements.h>
+ #include <osc/OscOutboundPacketStream.h>
+ 
+ using namespace std;
+-using namespace boost::chrono;
+ 
+ namespace ScIDE {
+ 
+diff --git editors/sc-ide/core/sc_server.hpp editors/sc-ide/core/sc_server.hpp
+index 1dd666c67fd..661a460eb49 100644
+--- editors/sc-ide/core/sc_server.hpp
++++ editors/sc-ide/core/sc_server.hpp
+@@ -25,7 +25,6 @@
+ #include <QAction>
+ #include <QProcess>
+ #include <QTimer>
+-#include <boost/chrono/system_clocks.hpp>
+ #include <osc/OscReceivedElements.h>
+ 
+ namespace ScIDE {
+diff --git external_libraries/CMakeLists.txt external_libraries/CMakeLists.txt
+index de464976866..72525f0421c 100644
+--- external_libraries/CMakeLists.txt
++++ external_libraries/CMakeLists.txt
+@@ -13,44 +13,31 @@ endif()
+ 
+ if(NOT SYSTEM_BOOST) # we compile boost ourselves
+ 	message(STATUS "Using bundled boost")
+-	# boost thread
+-	aux_source_directory(boost/libs/thread/src/ boost_thread_src )
++	set(BOOST_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/boost)
++
++	# thread
++	aux_source_directory(boost/libs/thread/src/ boost_thread_src)
+ 
+ 	if(WIN32)
+-		aux_source_directory(boost/libs/thread/src/win32/ boost_thread_platform )
++		aux_source_directory(boost/libs/thread/src/win32/ boost_thread_platform)
+ 	elseif(PTHREADS_FOUND)
+-		aux_source_directory(boost/libs/thread/src/pthread/ boost_thread_platform )
++		aux_source_directory(boost/libs/thread/src/pthread/ boost_thread_platform)
+ 	else()
+ 		message(SEND_ERROR "we need to implement boost_thread")
+ 	endif()
+ 
+-	aux_source_directory(boost/libs/system/src/ boost_system_src )
+-	add_library(boost_system_lib STATIC EXCLUDE_FROM_ALL ${boost_system_src})
+-	target_include_directories(boost_system_lib PUBLIC boost)
+-
+-	aux_source_directory(boost/libs/program_options/src/ boost_program_options_src )
+-	add_library(boost_program_options_lib STATIC EXCLUDE_FROM_ALL ${boost_program_options_src})
+-	target_include_directories(boost_program_options_lib PUBLIC boost)
+-
+-
+-	aux_source_directory(boost/libs/regex/src boost_regex_src)
+-	add_library(boost_regex_lib STATIC EXCLUDE_FROM_ALL ${boost_regex_src})
+-	target_include_directories(boost_regex_lib PUBLIC boost)
+-
+ 	add_library(boost_thread_lib STATIC EXCLUDE_FROM_ALL ${boost_thread_src} ${boost_thread_platform})
+-	target_link_libraries(boost_thread_lib boost_system_lib)
+-#	target_compile_definitions(boost_thread PUBLIC BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS)
+-	target_include_directories(boost_thread_lib PUBLIC boost)
+-	target_compile_definitions(boost_thread_lib PUBLIC BOOST_THREAD_USE_LIB) # for win32
++	target_include_directories(boost_thread_lib PUBLIC ${BOOST_INCLUDE_DIR})
+ 
+ 	if(PTHREADS_FOUND)
+ 		target_include_directories(boost_thread_lib PUBLIC ${PTHREADS_INCLUDE_DIR})
+ 	endif()
++
+ 	if(WIN32)
+-		target_compile_definitions( boost_thread_lib PRIVATE BOOST_THREAD_BUILD_LIB)
++		target_compile_definitions(boost_thread_lib PUBLIC BOOST_THREAD_USE_LIB)
++		target_compile_definitions(boost_thread_lib PRIVATE BOOST_THREAD_BUILD_LIB)
+ 	endif()
+ 
+-
+ 	if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ 		target_compile_options(boost_thread_lib PRIVATE -fPIC)
+ 		target_link_libraries(boost_thread_lib rt)
+@@ -64,15 +51,51 @@ if(NOT SYSTEM_BOOST) # we compile boost ourselves
+ 			APPEND PROPERTY LINK_FLAGS "-flto -flto-report")
+ 	endif()
+ 
++	# program_options
++	aux_source_directory(boost/libs/program_options/src/ boost_program_options_src )
++	add_library(boost_program_options_lib STATIC EXCLUDE_FROM_ALL ${boost_program_options_src})
++	target_include_directories(boost_program_options_lib PUBLIC ${BOOST_INCLUDE_DIR})
++
++	# regex
++	aux_source_directory(boost/libs/regex/src boost_regex_src)
++	add_library(boost_regex_lib STATIC EXCLUDE_FROM_ALL ${boost_regex_src})
++	target_include_directories(boost_regex_lib PUBLIC ${BOOST_INCLUDE_DIR})
++
++	# unit_test_framework
++	aux_source_directory(boost/libs/test/src boost_unit_test_framework_src)
++	add_library(boost_unit_test_framework_lib STATIC EXCLUDE_FROM_ALL ${boost_unit_test_framework_src})
++	target_include_directories(boost_unit_test_framework_lib PUBLIC ${BOOST_INCLUDE_DIR})
++
++	# headers
++	add_library(boost_headers INTERFACE)
++	target_include_directories(boost_headers INTERFACE ${BOOST_INCLUDE_DIR})
++
+ 	set_property( TARGET
+         boost_regex_lib
+         boost_thread_lib
+         boost_program_options_lib
+-        boost_system_lib
++        boost_unit_test_framework_lib
+         PROPERTY FOLDER 3rdparty
+     )
++
++    # add aliases for compliance with system boost
++    add_library(Boost::thread ALIAS boost_thread_lib)
++    add_library(Boost::program_options ALIAS boost_program_options_lib)
++    add_library(Boost::regex ALIAS boost_regex_lib)
++    add_library(Boost::unit_test_framework ALIAS boost_unit_test_framework_lib)
++    add_library(Boost::headers ALIAS boost_headers)
++
+ endif()
+ 
++# add a custom target for boost_sync
++add_library(boost_sync INTERFACE)
++target_include_directories(boost_sync INTERFACE
++    ${CMAKE_CURRENT_SOURCE_DIR}/boost_sync/include
++)
++# Boost::headers comes from either system or bundled boost
++target_link_libraries(boost_sync INTERFACE Boost::headers)
++add_library(Boost::sync ALIAS boost_sync)
++
+ # tlsf
+ add_library(tlsf STATIC EXCLUDE_FROM_ALL "TLSF-2.4.6/src/tlsf.c")
+ target_compile_definitions( tlsf PRIVATE TLSF_STATISTIC=1 )
+@@ -81,7 +104,7 @@ set_property(TARGET tlsf PROPERTY POSITION_INDEPENDENT_CODE TRUE)
+ 
+ #oscpack
+ add_library(oscpack STATIC EXCLUDE_FROM_ALL "oscpack_build.cpp")
+-target_include_directories(oscpack PRIVATE ${boost_include_dirs})
++target_link_libraries(oscpack PUBLIC Boost::headers)
+ target_include_directories(oscpack INTERFACE oscpack_1_1_0 )
+ 
+ if(LTO)
+diff --git external_libraries/nova-tt/nova-tt/spin_lock.hpp external_libraries/nova-tt/nova-tt/spin_lock.hpp
+index 692a8859fb9..b497ec33a73 160000
+--- external_libraries/nova-tt/nova-tt/spin_lock.hpp
++++ external_libraries/nova-tt/nova-tt/spin_lock.hpp
+@@ -22,6 +22,7 @@
+ #define NOVA_TT_SPIN_LOCK_HPP
+ 
+ #include <cassert>
++#include <cstdint>
+ 
+ #include <boost/atomic.hpp>
+ 
+@@ -98,7 +99,7 @@ struct padded_spin_lock:
+     public spin_lock
+ {
+     static const int padding_bytes = 64 - sizeof(spin_lock);
+-    boost::uint8_t padding[padding_bytes];
++    std::uint8_t padding[padding_bytes];
+ };
+ 
+ } /* namespace nova */
+diff --git lang/CMakeLists.txt lang/CMakeLists.txt
+index 561023da45f..fa2365d8b75 100644
+--- lang/CMakeLists.txt
++++ lang/CMakeLists.txt
+@@ -5,8 +5,6 @@ include_directories(${CMAKE_SOURCE_DIR}/include/common
+                     ${CMAKE_SOURCE_DIR}/include/server
+                     ${CMAKE_SOURCE_DIR}/common
+ 
+-                    ${CMAKE_SOURCE_DIR}/external_libraries/boost_sync/include
+-
+                     LangSource
+                     LangPrimSource
+ 
+@@ -244,8 +242,13 @@ if(SC_HIDAPI)
+   endif()
+ endif()
+ 
+-target_link_libraries(libsclang boost_thread_lib boost_system_lib boost_regex_lib boost_program_options_lib)
+-target_include_directories(libsclang PUBLIC ${boost_include_dirs})
++target_link_libraries(
++  libsclang 
++  Boost::thread
++  Boost::program_options
++  Boost::regex
++  Boost::sync
++)
+ 
+ if (SCLANG_SERVER)
+ 	target_link_libraries(libsclang libscsynth)
+diff --git lang/LangSource/PyrInterpreter3.cpp lang/LangSource/PyrInterpreter3.cpp
+index 6393c5cb59c..b8483d24700 100644
+--- lang/LangSource/PyrInterpreter3.cpp
++++ lang/LangSource/PyrInterpreter3.cpp
+@@ -39,8 +39,6 @@
+ #include <string.h>
+ #include <signal.h>
+ 
+-#include <boost/chrono.hpp>
+-
+ #include <float.h>
+ #define kBigBigFloat DBL_MAX
+ #define kSmallSmallFloat DBL_MIN
+diff --git server/CMakeLists.txt server/CMakeLists.txt
+index 05b72d9228d..fb910c7fc38 100644
+--- server/CMakeLists.txt
++++ server/CMakeLists.txt
+@@ -13,7 +13,6 @@ include_directories(${CMAKE_SOURCE_DIR}/external_libraries
+ 					${CMAKE_SOURCE_DIR}/external_libraries/nova-tt
+ 					)
+ 
+-include_directories(${boost_include_dirs})
+ 
+ add_subdirectory(plugins)
+ add_subdirectory(scsynth)
+diff --git server/plugins/CMakeLists.txt server/plugins/CMakeLists.txt
+index 171dfb68685..82d25080ed7 100644
+--- server/plugins/CMakeLists.txt
++++ server/plugins/CMakeLists.txt
+@@ -66,7 +66,8 @@ endif()
+ 
+ foreach(plugin ${plugin_sources})
+ 	string(REPLACE .cpp "" plugin_name ${plugin} )
+-		add_library(${plugin_name} MODULE ${plugin})
++	add_library(${plugin_name} MODULE ${plugin})
++	target_link_libraries(${plugin_name} PRIVATE Boost::headers)
+ 	list(APPEND plugins ${plugin_name})
+ endforeach(plugin)
+ 
+@@ -90,7 +91,7 @@ if(BELA_FOUND)
+     )
+     add_definitions("-DSC_BELA" ${XENOMAI_DEFINITIONS} ${BELA_DEFINITIONS})
+     include_directories(${XENOMAI_INCLUDE_DIRS} ${BELA_INCLUDE_DIRS})
+-    target_link_libraries(BelaUGens ${XENOMAI_LIBRARIES} ${BELA_LIBRARIES})
++    target_link_libraries(BelaUGens PRIVATE ${XENOMAI_LIBRARIES} ${BELA_LIBRARIES})
+ 
+     list(APPEND plugins BelaUGens)
+ endif()
+@@ -100,7 +101,7 @@ if(NOT NO_X11)
+ 		add_library(UIUGens MODULE UIUGens.mm)
+ 	else()
+ 		add_library(UIUGens MODULE UIUGens.cpp)
+-		target_link_libraries(UIUGens ${PTHREADS_LIBRARY})
++		target_link_libraries(UIUGens PRIVATE ${PTHREADS_LIBRARY})
+ 	endif()
+ 
+ 	set(uiugens UIUGens)
+@@ -161,7 +162,7 @@ if(NOT NO_LIBSNDFILE)
+ 			target_compile_definitions(DiskIO_UGens PUBLIC SNDFILE_HAS_MPEG)
+ 		endif()
+ 		target_include_directories(DiskIO_UGens PUBLIC ${SNDFILE_INCLUDE_DIR})
+-		target_link_libraries(DiskIO_UGens ${PTHREADS_LIBRARY} ${SNDFILE_LIBRARIES})
++		target_link_libraries(DiskIO_UGens PRIVATE ${PTHREADS_LIBRARY} ${SNDFILE_LIBRARIES})
+ 		list(APPEND plugins DiskIO_UGens)
+ 	else()
+ 		message(SEND_ERROR "Cannot find libsndfile")
+@@ -179,6 +180,7 @@ if (SUPERNOVA)
+ 	foreach(plugin ${plugin_sources})
+ 		string(REPLACE .cpp "_supernova" plugin_name ${plugin} )
+ 		add_library(${plugin_name} MODULE ${plugin})
++		target_link_libraries(${plugin_name} PRIVATE Boost::headers)
+ 		list(APPEND supernova_plugins ${plugin_name})
+ 	endforeach(plugin)
+ 
+@@ -221,7 +223,7 @@ if (SUPERNOVA)
+ 			add_library(UIUGens_supernova MODULE UIUGens.mm)
+ 		else()
+ 			add_library(UIUGens_supernova MODULE UIUGens.cpp)
+-			target_link_libraries(UIUGens_supernova ${PTHREADS_LIBRARY})
++			target_link_libraries(UIUGens_supernova PRIVATE ${PTHREADS_LIBRARY})
+ 		endif()
+ 		list(APPEND uiugens UIUGens_supernova)
+ 	endif()
+@@ -231,7 +233,7 @@ if (SUPERNOVA)
+ 
+ 		if(SNDFILE_FOUND)
+ 			target_include_directories(DiskIO_UGens_supernova PUBLIC ${SNDFILE_INCLUDE_DIR})
+-      target_link_libraries(DiskIO_UGens_supernova ${SNDFILE_LIBRARIES} ${PTHREADS_LIBRARY} ${MATH_LIBRARY} boost_thread_lib)
++      target_link_libraries(DiskIO_UGens_supernova PRIVATE ${SNDFILE_LIBRARIES} ${PTHREADS_LIBRARY} ${MATH_LIBRARY} Boost::thread)
+ 			list(APPEND supernova_plugins DiskIO_UGens_supernova)
+ 		else()
+ 			message(SEND_ERROR "Cannot find libsndfile")
+@@ -240,22 +242,23 @@ if (SUPERNOVA)
+ endif(SUPERNOVA)
+ 
+ foreach(ugen ${fft_ugens})
+-	target_link_libraries(${ugen} ${PTHREADS_LIBRARY} ${MATH_LIBRARY})
++	target_link_libraries(${ugen} PRIVATE ${PTHREADS_LIBRARY} ${MATH_LIBRARY})
+ 
+ 	if(APPLE)
+-		target_link_libraries(${ugen} "-framework Accelerate")
++		target_link_libraries(${ugen} PRIVATE "-framework Accelerate")
+ 	endif()
+ endforeach()
+ 
+ if(NOT NO_X11)
+ 	foreach(ugen ${uiugens})
+-    target_link_libraries(${ugen} boost_thread_lib)
++    target_link_libraries(${ugen} PRIVATE Boost::thread)
+ 	endforeach()
+ endif()
+ 
+ foreach(plugin ${plugins})
++	target_link_libraries(${plugin} PRIVATE Boost::headers)
+ 	if(WIN32)
+-		target_link_libraries(${plugin} wsock32 ws2_32)
++		target_link_libraries(${plugin} PRIVATE wsock32 ws2_32)
+ 	endif()
+ endforeach()
+ 
+@@ -271,7 +274,7 @@ foreach(plugin ${supernova_plugins})
+ 	target_compile_definitions(${plugin} PUBLIC SUPERNOVA)
+ 
+ 	if (WIN32)
+-		target_link_libraries(${plugin} ws2_32)
++		target_link_libraries(${plugin} PRIVATE ws2_32)
+ 	endif()
+ endforeach()
+ 
+@@ -286,18 +289,18 @@ if(NOT NO_X11)
+ 		include_directories(${X11_Xt_INCLUDE_PATH})
+ 
+ 		foreach (ugen ${uiugens})
+-			target_link_libraries(${ugen} ${X11_X11_LIB})
++			target_link_libraries(${ugen} PRIVATE ${X11_X11_LIB})
+ 		endforeach()
+ 	elseif (APPLE)
+ 		foreach (ugen ${uiugens})
+-			target_link_libraries(${ugen} "-framework CoreServices -framework AppKit")
++			target_link_libraries(${ugen} PRIVATE "-framework CoreServices -framework AppKit")
+ 		endforeach()
+ 	endif()
+ endif()
+ 
+ if (APPLE)
+ 	if(NOT NO_LIBSNDFILE)
+-		target_link_libraries(DiskIO_UGens "-framework CoreServices")
++		target_link_libraries(DiskIO_UGens PRIVATE "-framework CoreServices")
+ 	endif()
+ endif()
+ 
+diff --git server/scsynth/CMakeLists.txt server/scsynth/CMakeLists.txt
+index 0edabde9db1..a176a502170 100644
+--- server/scsynth/CMakeLists.txt
++++ server/scsynth/CMakeLists.txt
+@@ -134,8 +134,6 @@ include_directories(${CMAKE_SOURCE_DIR}/include/common
+                     .
+ )
+ 
+-include_directories (${CMAKE_SOURCE_DIR}/external_libraries/boost_sync/include)
+-
+ if (AUDIOAPI STREQUAL jack)
+ 	list(APPEND scsynth_sources SC_Jack.cpp)
+ 	add_definitions("-DSC_AUDIO_API=SC_AUDIO_API_JACK")
+@@ -175,7 +173,7 @@ endif()
+ 
+ target_compile_definitions(libscsynth PUBLIC  SC_MEMORY_ALIGNMENT=32)
+ 
+-target_link_libraries(libscsynth tlsf)
++target_link_libraries(libscsynth tlsf Boost::sync)
+ 
+ find_library(DL NAMES dl)
+ if(DL)
+@@ -235,7 +233,6 @@ elseif(AUDIOAPI STREQUAL coreaudio)
+ 	target_link_libraries(libscsynth "-framework CoreAudio")
+ endif()
+ 
+-target_include_directories(libscsynth PUBLIC ${boost_include_dirs})
+ 
+ if (WIN32)
+ 	target_link_libraries(libscsynth wsock32 ws2_32 winmm)
+diff --git server/supernova/CMakeLists.txt server/supernova/CMakeLists.txt
+index 7fc9b0bbfa3..288bca8f463 100644
+--- server/supernova/CMakeLists.txt
++++ server/supernova/CMakeLists.txt
+@@ -93,7 +93,7 @@ if(NOT WIN32)
+                PROPERTY OUTPUT_NAME supernova)
+ endif()
+ 
+-target_link_libraries(libsupernova oscpack tlsf ${PTHREADS_LIBRARIES} boost_thread_lib)
++target_link_libraries(libsupernova oscpack tlsf ${PTHREADS_LIBRARIES} Boost::thread Boost::sync)
+ 
+ target_compile_definitions(libsupernova PUBLIC SUPERNOVA)
+ target_include_directories(libsupernova PUBLIC
+@@ -102,8 +102,6 @@ target_include_directories(libsupernova PUBLIC
+                     ${CMAKE_SOURCE_DIR}/common
+                     ${CMAKE_SOURCE_DIR}/include/server
+                     ${CMAKE_SOURCE_DIR}/server/scsynth
+-                    ${CMAKE_SOURCE_DIR}/external_libraries/boost_endian
+-                    ${CMAKE_SOURCE_DIR}/external_libraries/boost_sync/include
+                     ${CMAKE_SOURCE_DIR}/external_libraries/nova-tt
+                     .
+                     )
+@@ -204,8 +202,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+     target_link_libraries(libsupernova rt)
+ endif()
+ 
+-target_link_libraries(libsupernova boost_system_lib boost_program_options_lib)
+-target_include_directories(libsupernova PUBLIC ${boost_include_dirs})
++target_link_libraries(libsupernova Boost::program_options)
+ 
+ if(CMAKE_COMPILER_IS_GNUCXX)
+     if( ${_gcc_version} VERSION_GREATER 5 )
+diff --git testsuite/server/CMakeLists.txt testsuite/server/CMakeLists.txt
+index da19c2e5d62..853830b82da 100644
+--- testsuite/server/CMakeLists.txt
++++ testsuite/server/CMakeLists.txt
+@@ -1,5 +1,5 @@
+ add_library(boost_test STATIC boost_test.cpp)
+-target_include_directories(boost_test PUBLIC ${boost_include_dirs})
++target_link_libraries(boost_test PUBLIC Boost::unit_test_framework)
+ 
+ add_subdirectory(scsynth)
+ if (SUPERNOVA)
+diff --git testsuite/server/supernova/CMakeLists.txt testsuite/server/supernova/CMakeLists.txt
+index 89bbd29233d..4f2cf26a1d3 100644
+--- testsuite/server/supernova/CMakeLists.txt
++++ testsuite/server/supernova/CMakeLists.txt
+@@ -33,7 +33,7 @@ foreach(test ${simple_tests})
+   string(REPLACE .cpp "" test_name ${test} )
+   add_executable(${test_name} ${test})
+ 
+-  target_link_libraries(${test_name} boost_test libsupernova boost_thread_lib)
++  target_link_libraries(${test_name} boost_test libsupernova Boost::thread)
+ 
+   if(LINUX AND CMAKE_COMPILER_IS_CLANG)
+     target_link_libraries(${test_name} atomic)