mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2024-11-13 00:04:10 +00:00
Merge pull request #969 from FluidSynth/cmake-modernization
CMake Modernizations
This commit is contained in:
commit
6b96c19b01
18 changed files with 522 additions and 416 deletions
|
@ -17,10 +17,15 @@ jobs:
|
|||
- job: macOS
|
||||
strategy:
|
||||
matrix:
|
||||
UnixLibs:
|
||||
imageName: 'macos-11'
|
||||
CMakeFlags: '-Denable-framework=0'
|
||||
10_15:
|
||||
imageName: 'macOS-10.15'
|
||||
CMakeFlags: ''
|
||||
11_0:
|
||||
imageName: 'macos-11'
|
||||
CMakeFlags: ''
|
||||
|
||||
pool:
|
||||
vmImage: $(imageName)
|
||||
|
@ -37,7 +42,7 @@ jobs:
|
|||
set -ex
|
||||
mkdir build && cd build
|
||||
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
|
||||
cmake -Werror=dev -DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 ..
|
||||
cmake -Werror=dev -DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) $(CMakeFlags) -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 ..
|
||||
make -j3
|
||||
displayName: 'Compile fluidsynth'
|
||||
- script: |
|
||||
|
|
476
CMakeLists.txt
476
CMakeLists.txt
|
@ -19,13 +19,16 @@
|
|||
|
||||
# CMake based build system. Pedro Lopez-Cabanillas <plcl@users.sf.net>
|
||||
|
||||
cmake_minimum_required ( VERSION 3.1.0 ) # because of CMAKE_C_STANDARD
|
||||
cmake_minimum_required ( VERSION 3.13 )
|
||||
# 3.1 because of CMAKE_C_STANDARD
|
||||
# 3.11 because COMPATIBILITY SameMinorVersion in CMakePackageConfigHelpers
|
||||
# 3.13.5 because it is the latest supported in Windows XP
|
||||
|
||||
if(POLICY CMP0075)
|
||||
if(POLICY CMP0075) # CMake version 3.13.5 warns when the policy is not set or value is OLD
|
||||
cmake_policy(SET CMP0075 NEW)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0091)
|
||||
if(POLICY CMP0091) # new in CMake 3.15, defaults to OLD
|
||||
cmake_policy(SET CMP0091 NEW)
|
||||
endif()
|
||||
|
||||
|
@ -59,7 +62,6 @@ set ( LIB_VERSION_INFO
|
|||
|
||||
# Options disabled by default
|
||||
option ( enable-coverage "enable gcov code coverage" off )
|
||||
option ( enable-debug "enable debugging (default=no)" off )
|
||||
option ( enable-floats "enable type float instead of double for DSP samples" off )
|
||||
option ( enable-fpe-check "enable Floating Point Exception checks and debug messages" off )
|
||||
option ( enable-portaudio "compile PortAudio support" off )
|
||||
|
@ -86,7 +88,6 @@ option ( enable-wasapi "compile Windows WASAPI support (if it is available)" on
|
|||
option ( enable-waveout "compile Windows WaveOut support (if it is available)" on )
|
||||
option ( enable-winmidi "compile Windows MIDI support (if it is available)" on )
|
||||
option ( enable-sdl2 "compile SDL2 audio support (if it is available)" on )
|
||||
option ( enable-pkgconfig "use pkg-config to locate fluidsynth's (mostly optional) dependencies" on )
|
||||
option ( enable-pulseaudio "compile PulseAudio support (if it is available)" on )
|
||||
option ( enable-pipewire "compile PipeWire support (if it is available)" on )
|
||||
option ( enable-readline "compile readline lib line editing (if it is available)" on )
|
||||
|
@ -114,20 +115,6 @@ if ( CMAKE_SYSTEM MATCHES "OS2" )
|
|||
set ( enable-ipv6 off )
|
||||
endif ( CMAKE_SYSTEM MATCHES "OS2" )
|
||||
|
||||
# Initialize the library directory name suffix.
|
||||
if (NOT MINGW AND NOT MSVC AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly")
|
||||
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
set ( _init_lib_suffix "64" )
|
||||
else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
set ( _init_lib_suffix "" )
|
||||
endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
else ()
|
||||
set ( _init_lib_suffix "" )
|
||||
endif()
|
||||
set ( LIB_SUFFIX ${_init_lib_suffix} CACHE STRING
|
||||
"library directory name suffix (32/64/nothing)" )
|
||||
mark_as_advanced ( LIB_SUFFIX )
|
||||
|
||||
# the default C standard to use for all targets
|
||||
set(CMAKE_C_STANDARD 90)
|
||||
|
||||
|
@ -135,6 +122,7 @@ set(CMAKE_C_STANDARD 90)
|
|||
set(CMAKE_CXX_STANDARD 98)
|
||||
|
||||
# whether to use gnu extensions
|
||||
set(CMAKE_C_EXTENSIONS ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
# Compile with position independent code if the user requested a shared lib, i.e. no PIC if static requested.
|
||||
|
@ -151,11 +139,11 @@ if ( NOT OS2 )
|
|||
endif ( NOT OS2 )
|
||||
|
||||
# enforce visibility control for all types of cmake targets
|
||||
if ( POLICY CMP0063 )
|
||||
if ( POLICY CMP0063 ) # since version 3.3, CMake version 3.21.2 warns when the policy is not set and uses OLD behavior.
|
||||
cmake_policy ( SET CMP0063 NEW )
|
||||
endif ( POLICY CMP0063 )
|
||||
|
||||
# Default install directory names
|
||||
# Default install directory names, some provided by GNUInstallDirs
|
||||
include ( DefaultDirs )
|
||||
|
||||
# Basic C library checks
|
||||
|
@ -190,6 +178,7 @@ if ( NOT HAVE_LONG_LONG AND NOT MSVC)
|
|||
message ( FATAL_ERROR "Your compiler does not support intrinsic type 'long long'. Unable to compile fluidsynth." )
|
||||
endif ()
|
||||
|
||||
include ( CMakePrintHelpers ) # for cmake_print_properties() and cmake_print_variables()
|
||||
include ( TestInline )
|
||||
include ( TestVLA )
|
||||
include ( TestBigEndian )
|
||||
|
@ -375,7 +364,7 @@ unset ( MACOSX_FRAMEWORK CACHE )
|
|||
if ( CMAKE_SYSTEM MATCHES "Darwin" )
|
||||
set ( DARWIN 1 )
|
||||
set ( CMAKE_INSTALL_NAME_DIR
|
||||
${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} )
|
||||
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} )
|
||||
if ( enable-coreaudio )
|
||||
check_include_file ( CoreAudio/AudioHardware.h COREAUDIO_FOUND )
|
||||
if ( COREAUDIO_FOUND )
|
||||
|
@ -418,17 +407,15 @@ if ( enable-profiling )
|
|||
|
||||
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPT_FLAGS}" )
|
||||
|
||||
if ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.6.0" )
|
||||
find_program( CLANG_TIDY
|
||||
NAMES "clang-tidy"
|
||||
DOC "Path to clang-tidy executable" )
|
||||
find_program( CLANG_TIDY
|
||||
NAMES "clang-tidy"
|
||||
DOC "Path to clang-tidy executable" )
|
||||
|
||||
if ( CLANG_TIDY )
|
||||
message ( STATUS "Found clang-tidy at ${CLANG_TIDY}" )
|
||||
execute_process ( COMMAND ${CLANG_TIDY} "--version" )
|
||||
set ( CMAKE_C_CLANG_TIDY ${CLANG_TIDY} )
|
||||
endif ( CLANG_TIDY )
|
||||
endif ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.6.0" )
|
||||
if ( CLANG_TIDY )
|
||||
message ( STATUS "Found clang-tidy at ${CLANG_TIDY}" )
|
||||
execute_process ( COMMAND ${CLANG_TIDY} "--version" )
|
||||
set ( CMAKE_C_CLANG_TIDY ${CLANG_TIDY} )
|
||||
endif ( CLANG_TIDY )
|
||||
|
||||
endif ( enable-profiling )
|
||||
|
||||
|
@ -446,11 +433,6 @@ if ( enable-fpe-check AND NOT APPLE AND NOT WIN32 )
|
|||
set ( FPE_CHECK 1 )
|
||||
endif ( enable-fpe-check AND NOT APPLE AND NOT WIN32 )
|
||||
|
||||
if ( enable-debug )
|
||||
set ( CMAKE_BUILD_TYPE "Debug" CACHE STRING
|
||||
"Choose the build type, options: Debug Release RelWithDebInfo MinSizeRel" FORCE )
|
||||
endif ( enable-debug )
|
||||
|
||||
if ( NOT CMAKE_BUILD_TYPE )
|
||||
set ( CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||
"Choose the build type, options: Debug Release RelWithDebInfo MinSizeRel" FORCE )
|
||||
|
@ -493,210 +475,207 @@ if ( ASTYLE )
|
|||
)
|
||||
endif(ASTYLE)
|
||||
|
||||
if(NOT enable-pkgconfig)
|
||||
find_package ( PkgConfig REQUIRED )
|
||||
|
||||
FIND_LIBRARY( GLIB_LIB NAMES glib glib-2.0 PATH GLIB_LIBRARY_DIR )
|
||||
FIND_LIBRARY( GTHREAD_LIB NAMES gthread gthread-2.0 PATH GTHREAD_LIBRARY_DIR )
|
||||
FIND_PATH( GLIBH_DIR glib.h PATH GLIB_INCLUDE_DIR )
|
||||
FIND_PATH( GLIBCONF_DIR glibconfig.h PATH GLIBCONF_INCLUDE_DIR )
|
||||
# Mandatory libraries: glib and gthread
|
||||
pkg_check_modules ( GLIB REQUIRED glib-2.0>=2.6.5 gthread-2.0>=2.6.5 IMPORTED_TARGET )
|
||||
list( APPEND PC_REQUIRES_PRIV "glib-2.0" "gthread-2.0")
|
||||
|
||||
IF( GLIB_LIB MATCHES "GLIB_LIB-NOTFOUND" OR
|
||||
GTHREAD_LIB MATCHES "GTHREAD_LIB-NOTFOUND" OR
|
||||
GLIBH_DIR MATCHES "GLIBH_DIR-NOTFOUND" OR
|
||||
GLIBCONF_DIR MATCHES "GLIBCONF_DIR-NOTFOUND")
|
||||
message( WARNING "Not sure if I found GLIB, continuing anyway.")
|
||||
ENDIF()
|
||||
if ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" )
|
||||
message ( WARNING "Your version of glib is very old. This may cause problems with fluidsynth's sample cache on Windows. Consider updating to glib 2.26 or newer!" )
|
||||
endif ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" )
|
||||
|
||||
SET( GLIB_INCLUDE_DIRS ${GLIBH_DIR} ${GLIBCONF_DIR} )
|
||||
SET( GLIB_LIBRARIES ${GLIB_LIB} ${GTHREAD_LIB} )
|
||||
include ( PkgConfigHelpers ) # has unset_pkg_config()
|
||||
|
||||
message( STATUS "GLIB_INCLUDE_DIRS: " ${GLIB_INCLUDE_DIRS} )
|
||||
message( STATUS "GLIB_LIBRARIES: " ${GLIB_LIBRARIES} )
|
||||
|
||||
else(NOT enable-pkgconfig)
|
||||
|
||||
find_package ( PkgConfig REQUIRED )
|
||||
|
||||
# Mandatory libraries: glib and gthread
|
||||
pkg_check_modules ( GLIB REQUIRED glib-2.0>=2.6.5 gthread-2.0>=2.6.5 )
|
||||
list( APPEND PC_REQUIRES_PRIV "glib-2.0" "gthread-2.0")
|
||||
|
||||
if ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" )
|
||||
message ( WARNING "Your version of glib is very old. This may cause problems with fluidsynth's sample cache on Windows. Consider updating to glib 2.26 or newer!" )
|
||||
endif ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" )
|
||||
|
||||
include ( UnsetPkgConfig )
|
||||
|
||||
# Optional features
|
||||
unset ( LIBSNDFILE_SUPPORT CACHE )
|
||||
unset ( LIBSNDFILE_HASVORBIS CACHE )
|
||||
if ( enable-libsndfile )
|
||||
pkg_check_modules ( LIBSNDFILE sndfile>=1.0.0 )
|
||||
set ( LIBSNDFILE_SUPPORT ${LIBSNDFILE_FOUND} )
|
||||
if ( LIBSNDFILE_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "sndfile")
|
||||
message (DEBUG "LIBSNDFILE_STATIC_LIBRARIES: ${LIBSNDFILE_STATIC_LIBRARIES}")
|
||||
message (DEBUG "LIBSNDFILE_STATIC_LINK_LIBRARIES: ${LIBSNDFILE_STATIC_LINK_LIBRARIES}")
|
||||
message (DEBUG "LIBSNDFILE_STATIC_LDFLAGS: ${LIBSNDFILE_STATIC_LDFLAGS}")
|
||||
message (DEBUG "LIBSNDFILE_STATIC_LDFLAGS_OTHER: ${LIBSNDFILE_STATIC_LDFLAGS_OTHER}")
|
||||
if ( LIBSNDFILE_STATIC_LIBRARIES MATCHES "vorbis" OR
|
||||
LIBSNDFILE_STATIC_LDFLAGS MATCHES "vorbis" OR
|
||||
LIBSNDFILE_STATIC_LDFLAGS_OTHER MATCHES "vorbis" )
|
||||
set ( LIBSNDFILE_HASVORBIS 1 )
|
||||
else ()
|
||||
message ( NOTICE "Seems like libsndfile was compiled without OGG/Vorbis support." )
|
||||
endif ()
|
||||
endif ( LIBSNDFILE_SUPPORT )
|
||||
else ( enable-libsndfile )
|
||||
# Optional features
|
||||
unset ( LIBSNDFILE_SUPPORT CACHE )
|
||||
unset ( LIBSNDFILE_HASVORBIS CACHE )
|
||||
if ( enable-libsndfile )
|
||||
pkg_check_modules ( LIBSNDFILE sndfile>=1.0.0 IMPORTED_TARGET )
|
||||
set ( LIBSNDFILE_SUPPORT ${LIBSNDFILE_FOUND} )
|
||||
if ( LIBSNDFILE_SUPPORT )
|
||||
#[[ cmake_print_variables (
|
||||
LIBSNDFILE_STATIC_LIBRARIES
|
||||
LIBSNDFILE_STATIC_LINK_LIBRARIES
|
||||
LIBSNDFILE_STATIC_LDFLAGS
|
||||
LIBSNDFILE_STATIC_LDFLAGS_OTHER ) ]]
|
||||
list( APPEND PC_REQUIRES_PRIV "sndfile")
|
||||
if ( LIBSNDFILE_STATIC_LIBRARIES MATCHES "vorbis" OR
|
||||
LIBSNDFILE_STATIC_LDFLAGS MATCHES "vorbis" OR
|
||||
LIBSNDFILE_STATIC_LDFLAGS_OTHER MATCHES "vorbis" )
|
||||
set ( LIBSNDFILE_HASVORBIS 1 )
|
||||
else ()
|
||||
message ( NOTICE "Seems like libsndfile was compiled without OGG/Vorbis support." )
|
||||
endif ()
|
||||
#[[ cmake_print_properties( TARGETS PkgConfig::LIBSNDFILE
|
||||
PROPERTIES
|
||||
INTERFACE_COMPILE_OPTIONS
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
INTERFACE_LINK_OPTIONS
|
||||
INTERFACE_LINK_LIBRARIES ) ]]
|
||||
sanitize_target_dirs(PkgConfig::LIBSNDFILE)
|
||||
endif ( LIBSNDFILE_SUPPORT )
|
||||
else ( enable-libsndfile )
|
||||
unset_pkg_config ( LIBSNDFILE )
|
||||
unset_pkg_config ( LIBSNDFILE_VORBIS )
|
||||
endif ( enable-libsndfile )
|
||||
endif ( enable-libsndfile )
|
||||
|
||||
unset ( PULSE_SUPPORT CACHE )
|
||||
if ( enable-pulseaudio )
|
||||
pkg_check_modules ( PULSE libpulse-simple>=0.9.8 )
|
||||
unset ( PULSE_SUPPORT CACHE )
|
||||
if ( enable-pulseaudio )
|
||||
pkg_check_modules ( PULSE libpulse-simple>=0.9.8 IMPORTED_TARGET )
|
||||
set ( PULSE_SUPPORT ${PULSE_FOUND} )
|
||||
if ( PULSE_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "libpulse-simple")
|
||||
list( APPEND PC_REQUIRES_PRIV "libpulse-simple")
|
||||
endif ( PULSE_SUPPORT )
|
||||
else ( enable-pulseaudio )
|
||||
else ( enable-pulseaudio )
|
||||
unset_pkg_config ( PULSE )
|
||||
endif ( enable-pulseaudio )
|
||||
endif ( enable-pulseaudio )
|
||||
|
||||
unset ( ALSA_SUPPORT CACHE )
|
||||
if ( enable-alsa )
|
||||
pkg_check_modules ( ALSA alsa>=0.9.1 )
|
||||
unset ( ALSA_SUPPORT CACHE )
|
||||
if ( enable-alsa )
|
||||
pkg_check_modules ( ALSA alsa>=0.9.1 IMPORTED_TARGET )
|
||||
set ( ALSA_SUPPORT ${ALSA_FOUND} )
|
||||
if ( ALSA_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "alsa")
|
||||
list( APPEND PC_REQUIRES_PRIV "alsa")
|
||||
endif ( ALSA_SUPPORT )
|
||||
else ( enable-alsa )
|
||||
else ( enable-alsa )
|
||||
unset_pkg_config ( ALSA )
|
||||
endif ( enable-alsa )
|
||||
endif ( enable-alsa )
|
||||
|
||||
unset ( PORTAUDIO_SUPPORT CACHE )
|
||||
if ( enable-portaudio )
|
||||
pkg_check_modules ( PORTAUDIO portaudio-2.0>=19 )
|
||||
unset ( PORTAUDIO_SUPPORT CACHE )
|
||||
if ( enable-portaudio )
|
||||
pkg_check_modules ( PORTAUDIO portaudio-2.0>=19 IMPORTED_TARGET )
|
||||
set ( PORTAUDIO_SUPPORT ${PORTAUDIO_FOUND} )
|
||||
if ( PORTAUDIO_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "portaudio-2.0")
|
||||
list( APPEND PC_REQUIRES_PRIV "portaudio-2.0")
|
||||
endif ()
|
||||
else ( enable-portaudio )
|
||||
else ( enable-portaudio )
|
||||
unset_pkg_config ( PORTAUDIO )
|
||||
endif ( enable-portaudio )
|
||||
endif ( enable-portaudio )
|
||||
|
||||
unset ( JACK_SUPPORT CACHE )
|
||||
if ( enable-jack )
|
||||
pkg_check_modules ( JACK jack )
|
||||
unset ( JACK_SUPPORT CACHE )
|
||||
if ( enable-jack )
|
||||
pkg_check_modules ( JACK jack IMPORTED_TARGET )
|
||||
set ( JACK_SUPPORT ${JACK_FOUND} )
|
||||
if ( JACK_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "jack")
|
||||
endif ()
|
||||
else ( enable-jack )
|
||||
if (JACK_SUPPORT)
|
||||
sanitize_target_dirs(PkgConfig::JACK)
|
||||
list( APPEND PC_REQUIRES_PRIV "jack")
|
||||
endif()
|
||||
else ( enable-jack )
|
||||
unset_pkg_config ( JACK )
|
||||
endif ( enable-jack )
|
||||
endif ( enable-jack )
|
||||
|
||||
unset ( PIPEWIRE_SUPPORT CACHE )
|
||||
if ( enable-pipewire )
|
||||
pkg_check_modules ( PIPEWIRE libpipewire-0.3 )
|
||||
unset ( PIPEWIRE_SUPPORT CACHE )
|
||||
if ( enable-pipewire )
|
||||
pkg_check_modules ( PIPEWIRE libpipewire-0.3 IMPORTED_TARGET )
|
||||
set ( PIPEWIRE_SUPPORT ${PIPEWIRE_FOUND} )
|
||||
else ( enable-pipewire )
|
||||
if ( PIPEWIRE_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "libpipewire-0.3")
|
||||
endif()
|
||||
else ( enable-pipewire )
|
||||
unset_pkg_config ( PIPEWIRE )
|
||||
endif ( enable-pipewire )
|
||||
endif ( enable-pipewire )
|
||||
|
||||
unset ( LASH_SUPPORT CACHE )
|
||||
if ( enable-lash )
|
||||
pkg_check_modules ( LASH lash-1.0>=0.3 )
|
||||
unset ( LASH_SUPPORT CACHE )
|
||||
if ( enable-lash )
|
||||
pkg_check_modules ( LASH lash-1.0>=0.3 IMPORTED_TARGET )
|
||||
if ( LASH_FOUND )
|
||||
set ( LASH_SUPPORT 1 )
|
||||
add_definitions ( -DHAVE_LASH )
|
||||
sanitize_target_dirs(PkgConfig::LASH)
|
||||
list( APPEND PC_REQUIRES_PRIV "lash-1.0")
|
||||
endif ( LASH_FOUND )
|
||||
else ( enable-lash )
|
||||
else ( enable-lash )
|
||||
unset_pkg_config ( LASH )
|
||||
remove_definitions( -DHAVE_LASH )
|
||||
endif ( enable-lash )
|
||||
endif ( enable-lash )
|
||||
|
||||
unset ( SYSTEMD_SUPPORT CACHE )
|
||||
if ( enable-systemd )
|
||||
pkg_check_modules ( SYSTEMD libsystemd )
|
||||
set ( SYSTEMD_SUPPORT ${SYSTEMD_FOUND} )
|
||||
if ( SYSTEMD_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "libsystemd")
|
||||
endif ( SYSTEMD_SUPPORT )
|
||||
else ( enable-systemd )
|
||||
unset_pkg_config ( SYSTEMD )
|
||||
endif ( enable-systemd )
|
||||
unset ( SYSTEMD_SUPPORT CACHE )
|
||||
if ( enable-systemd )
|
||||
pkg_check_modules ( SYSTEMD libsystemd IMPORTED_TARGET )
|
||||
set ( SYSTEMD_SUPPORT ${SYSTEMD_FOUND} )
|
||||
if ( SYSTEMD_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "libsystemd")
|
||||
endif ( SYSTEMD_SUPPORT )
|
||||
else ( enable-systemd )
|
||||
unset_pkg_config ( SYSTEMD )
|
||||
endif ( enable-systemd )
|
||||
|
||||
unset ( DBUS_SUPPORT CACHE )
|
||||
if ( enable-dbus )
|
||||
pkg_check_modules ( DBUS dbus-1>=1.0.0 )
|
||||
set ( DBUS_SUPPORT ${DBUS_FOUND} )
|
||||
if ( DBUS_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "dbus-1")
|
||||
endif ()
|
||||
else ( enable-dbus )
|
||||
unset ( DBUS_SUPPORT CACHE )
|
||||
if ( enable-dbus )
|
||||
pkg_check_modules ( DBUS dbus-1>=1.0.0 IMPORTED_TARGET )
|
||||
set ( DBUS_SUPPORT ${DBUS_FOUND} )
|
||||
if ( DBUS_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "dbus-1")
|
||||
endif ()
|
||||
else ( enable-dbus )
|
||||
unset_pkg_config ( DBUS )
|
||||
endif ( enable-dbus )
|
||||
endif ( enable-dbus )
|
||||
|
||||
unset ( LADSPA_SUPPORT CACHE )
|
||||
if ( enable-ladspa )
|
||||
check_include_file ( ladspa.h LADSPA_SUPPORT )
|
||||
if ( LADSPA_SUPPORT )
|
||||
pkg_check_modules ( GMODULE REQUIRED gmodule-2.0>=2.6.5 )
|
||||
set ( LADSPA 1 )
|
||||
list( APPEND PC_REQUIRES_PRIV "gmodule-2.0")
|
||||
endif ( LADSPA_SUPPORT )
|
||||
endif ( enable-ladspa )
|
||||
unset ( LADSPA_SUPPORT CACHE )
|
||||
if ( enable-ladspa )
|
||||
check_include_file ( ladspa.h LADSPA_SUPPORT )
|
||||
if ( LADSPA_SUPPORT )
|
||||
pkg_check_modules ( GMODULE REQUIRED gmodule-2.0>=2.6.5 IMPORTED_TARGET )
|
||||
set ( LADSPA 1 )
|
||||
list( APPEND PC_REQUIRES_PRIV "gmodule-2.0")
|
||||
endif ( LADSPA_SUPPORT )
|
||||
endif ( enable-ladspa )
|
||||
|
||||
unset ( LIBINSTPATCH_SUPPORT CACHE )
|
||||
if ( enable-libinstpatch )
|
||||
pkg_check_modules ( LIBINSTPATCH libinstpatch-1.0>=1.1.0 )
|
||||
set ( LIBINSTPATCH_SUPPORT ${LIBINSTPATCH_FOUND} )
|
||||
if ( LIBINSTPATCH_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "libinstpatch-1.0")
|
||||
endif (LIBINSTPATCH_SUPPORT )
|
||||
endif ( enable-libinstpatch )
|
||||
unset ( LIBINSTPATCH_SUPPORT CACHE )
|
||||
if ( enable-libinstpatch )
|
||||
pkg_check_modules ( LIBINSTPATCH libinstpatch-1.0>=1.1.0 IMPORTED_TARGET )
|
||||
set ( LIBINSTPATCH_SUPPORT ${LIBINSTPATCH_FOUND} )
|
||||
if ( LIBINSTPATCH_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "libinstpatch-1.0")
|
||||
#[[ cmake_print_properties( TARGETS PkgConfig::LIBINSTPATCH
|
||||
PROPERTIES
|
||||
INTERFACE_COMPILE_OPTIONS
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
INTERFACE_LINK_DIRECTORIES
|
||||
INTERFACE_LINK_OPTIONS
|
||||
INTERFACE_LINK_LIBRARIES ) ]]
|
||||
sanitize_target_dirs(PkgConfig::LIBINSTPATCH)
|
||||
endif (LIBINSTPATCH_SUPPORT )
|
||||
endif ( enable-libinstpatch )
|
||||
|
||||
unset ( SDL2_SUPPORT CACHE )
|
||||
if ( enable-sdl2 )
|
||||
pkg_check_modules ( SDL2 sdl2 )
|
||||
set ( SDL2_SUPPORT ${SDL2_FOUND} )
|
||||
if ( SDL2_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "sdl2")
|
||||
endif ( SDL2_SUPPORT )
|
||||
else ( enable-sdl2 )
|
||||
unset_pkg_config ( SDL2 )
|
||||
endif ( enable-sdl2 )
|
||||
unset ( SDL2_SUPPORT CACHE )
|
||||
if ( enable-sdl2 )
|
||||
pkg_check_modules ( SDL2 sdl2 IMPORTED_TARGET )
|
||||
set ( SDL2_SUPPORT ${SDL2_FOUND} )
|
||||
if ( SDL2_SUPPORT )
|
||||
list( APPEND PC_REQUIRES_PRIV "sdl2")
|
||||
endif ( SDL2_SUPPORT )
|
||||
else ( enable-sdl2 )
|
||||
unset_pkg_config ( SDL2 )
|
||||
endif ( enable-sdl2 )
|
||||
|
||||
unset ( OBOE_SUPPORT CACHE )
|
||||
if ( enable-oboe )
|
||||
pkg_check_modules ( OBOE oboe-1.0 )
|
||||
if ( OBOE_FOUND )
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set ( OBOE_SUPPORT 1 )
|
||||
list( APPEND PC_REQUIRES_PRIV "oboe-1.0")
|
||||
endif ( OBOE_FOUND )
|
||||
endif ( enable-oboe )
|
||||
unset ( OBOE_SUPPORT CACHE )
|
||||
if ( enable-oboe )
|
||||
pkg_check_modules ( OBOE oboe-1.0 IMPORTED_TARGET )
|
||||
if ( OBOE_FOUND )
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set ( OBOE_SUPPORT 1 )
|
||||
list( APPEND PC_REQUIRES_PRIV "oboe-1.0")
|
||||
endif ( OBOE_FOUND )
|
||||
endif ( enable-oboe )
|
||||
|
||||
unset ( WITH_READLINE CACHE )
|
||||
unset ( READLINE_LIBS CACHE )
|
||||
if ( enable-readline )
|
||||
pkg_check_modules ( READLINE readline )
|
||||
if ( READLINE_FOUND )
|
||||
list( APPEND PC_REQUIRES_PRIV "readline")
|
||||
else ( READLINE_FOUND )
|
||||
find_package ( READLINE )
|
||||
set ( READLINE_FOUND ${HAVE_READLINE} )
|
||||
endif ( READLINE_FOUND )
|
||||
if ( READLINE_FOUND )
|
||||
set ( WITH_READLINE 1 )
|
||||
set ( READLINE_LIBS ${READLINE_LIBRARIES} )
|
||||
endif ( READLINE_FOUND )
|
||||
endif ( enable-readline )
|
||||
|
||||
endif(NOT enable-pkgconfig)
|
||||
unset ( WITH_READLINE CACHE )
|
||||
unset ( READLINE_LIBS CACHE )
|
||||
if ( enable-readline )
|
||||
pkg_check_modules ( READLINE readline QUIET IMPORTED_TARGET )
|
||||
if ( READLINE_FOUND )
|
||||
list( APPEND PC_REQUIRES_PRIV "readline")
|
||||
else ( READLINE_FOUND )
|
||||
find_package ( READLINE )
|
||||
set ( READLINE_FOUND ${HAVE_READLINE} )
|
||||
endif ( READLINE_FOUND )
|
||||
if ( READLINE_FOUND )
|
||||
set ( WITH_READLINE 1 )
|
||||
set ( READLINE_LIBS ${READLINE_LIBRARIES} )
|
||||
endif ( READLINE_FOUND )
|
||||
endif ( enable-readline )
|
||||
|
||||
unset ( AUFILE_SUPPORT CACHE )
|
||||
if ( enable-aufile )
|
||||
|
@ -741,18 +720,18 @@ endif ( enable-threads )
|
|||
|
||||
unset ( HAVE_OPENMP CACHE )
|
||||
find_package ( OpenMP QUIET )
|
||||
if (enable-openmp AND ( OpenMP_FOUND OR OpenMP_C_FOUND ) )
|
||||
message(STATUS "Found OpenMP ${OpenMP_C_SPEC_DATE}")
|
||||
# require at least OMP 4.0
|
||||
if ( ( NOT OpenMP_C_SPEC_DATE LESS "201307" ) OR NOT ( OpenMP_C_VERSION VERSION_LESS "4.0" ) )
|
||||
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
|
||||
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
|
||||
|
||||
# include dir and library link seems to be required for Xcode 12.5 (issue #917)
|
||||
include_directories ( SYSTEM ${OpenMP_C_INCLUDE_DIRS} )
|
||||
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}" )
|
||||
set ( LIBFLUID_LIBS "${OpenMP_C_LIBRARIES};${LIBFLUID_LIBS}" )
|
||||
set ( HAVE_OPENMP 1 )
|
||||
if ( OpenMP_FOUND OR OpenMP_C_FOUND )
|
||||
message(STATUS "Found OpenMP version: ${OpenMP_C_VERSION} date: ${OpenMP_C_SPEC_DATE}")
|
||||
if ( TARGET OpenMP::OpenMP_C AND (( NOT OpenMP_C_SPEC_DATE LESS "201307" ) OR NOT ( OpenMP_C_VERSION VERSION_LESS "4.0" )) )
|
||||
#[[ cmake_print_properties( TARGETS OpenMP::OpenMP_C
|
||||
PROPERTIES
|
||||
INTERFACE_COMPILE_OPTIONS
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
INTERFACE_LINK_OPTIONS
|
||||
INTERFACE_LINK_LIBRARIES ) ]]
|
||||
set ( HAVE_OPENMP 1 )
|
||||
else()
|
||||
message(STATUS " OpenMP version is not supported. Feature disabled.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -834,22 +813,6 @@ endif ( HAVE_SOCKLEN_T )
|
|||
configure_file ( ${CMAKE_SOURCE_DIR}/src/config.cmake
|
||||
${CMAKE_BINARY_DIR}/config.h )
|
||||
|
||||
# Setup linker directories NOW, as the command will apply only to targets created after it has been called.
|
||||
link_directories (
|
||||
${GLIB_LIBRARY_DIRS}
|
||||
${LASH_LIBRARY_DIRS}
|
||||
${JACK_LIBRARY_DIRS}
|
||||
${PIPEWIRE_LIBRARY_DIRS}
|
||||
${ALSA_LIBRARY_DIRS}
|
||||
${PULSE_LIBRARY_DIRS}
|
||||
${PORTAUDIO_LIBRARY_DIRS}
|
||||
${LIBSNDFILE_LIBRARY_DIRS}
|
||||
${DBUS_LIBRARY_DIRS}
|
||||
${SDL2_LIBRARY_DIRS}
|
||||
${OBOE_LIBRARY_DIRS}
|
||||
${LIBINSTPATCH_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
# required to allow ctest to be called from top-level build directory
|
||||
ENABLE_TESTING()
|
||||
|
||||
|
@ -861,46 +824,45 @@ add_subdirectory ( doc )
|
|||
# pkg-config support
|
||||
set ( prefix "${CMAKE_INSTALL_PREFIX}" )
|
||||
set ( exec_prefix "\${prefix}" )
|
||||
if ( IS_ABSOLUTE "${LIB_INSTALL_DIR}" )
|
||||
set ( libdir "${LIB_INSTALL_DIR}" )
|
||||
if ( IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}" )
|
||||
set ( libdir "${CMAKE_INSTALL_LIBDIR}" )
|
||||
else ()
|
||||
set ( libdir "\${exec_prefix}/${LIB_INSTALL_DIR}" )
|
||||
set ( libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}" )
|
||||
endif ()
|
||||
if ( IS_ABSOLUTE "${INCLUDE_INSTALL_DIR}" )
|
||||
set ( includedir "${INCLUDE_INSTALL_DIR}" )
|
||||
if ( IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}" )
|
||||
set ( includedir "${CMAKE_INSTALL_INCLUDEDIR}" )
|
||||
else ()
|
||||
set ( includedir "\${prefix}/${INCLUDE_INSTALL_DIR}" )
|
||||
set ( includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}" )
|
||||
endif ()
|
||||
|
||||
if ( CMAKE_VERSION VERSION_EQUAL "3.12.0" OR CMAKE_VERSION VERSION_GREATER "3.12.0" )
|
||||
# retrieve all the private libs we depend on
|
||||
get_target_property ( LIBS_PRIVATE libfluidsynth INTERFACE_LINK_LIBRARIES)
|
||||
# make a copy
|
||||
set ( LIBS_PRIVATE_WITH_PATH ${LIBS_PRIVATE} )
|
||||
generate_pkgconfig_spec(fluidsynth.pc.in ${CMAKE_BINARY_DIR}/fluidsynth.pc libfluidsynth-OBJ)
|
||||
|
||||
# this matches any path and any flag entries (starting with '-')
|
||||
set ( LIB_LIST_REGEX "(^(.+)\/([^\/]+)$)|(^\-.*$)" )
|
||||
# remove all entries from the list which are specified by path and which already have -l
|
||||
list ( FILTER LIBS_PRIVATE EXCLUDE REGEX ${LIB_LIST_REGEX} )
|
||||
# include only entries specifed by path
|
||||
list ( FILTER LIBS_PRIVATE_WITH_PATH INCLUDE REGEX ${LIB_LIST_REGEX} )
|
||||
# Exported targets for cmake: find_package(FluidSynth)
|
||||
# when installed, use CMAKE_PREFIX_PATH=fluidsynth-prefix;...
|
||||
# to use the build directory directly set the FluidSynth_DIR variable instead.
|
||||
|
||||
# prepend the linker flag to all entries except the ones that already have it
|
||||
list ( TRANSFORM LIBS_PRIVATE PREPEND "-l")
|
||||
list ( JOIN LIBS_PRIVATE " " LIBS_PRIVATE_JOINED )
|
||||
list ( JOIN LIBS_PRIVATE_WITH_PATH " " LIBS_PRIVATE_WITH_PATH_JOINED )
|
||||
# targets in the build directory
|
||||
export(EXPORT FluidSynthTargets
|
||||
FILE "${CMAKE_CURRENT_BINARY_DIR}/FluidSynthTargets.cmake"
|
||||
NAMESPACE FluidSynth::
|
||||
)
|
||||
|
||||
list ( JOIN PC_REQUIRES_PRIV " " PC_REQUIRES_PRIV_JOINED )
|
||||
else ()
|
||||
set ( LIBS_PRIVATE "" )
|
||||
set ( LIBS_PRIVATE_WITH_PATH "" )
|
||||
message ( DEPRECATION "Your version of CMake is old. A complete pkg-config file can not created. Get cmake 3.13.3 or newer." )
|
||||
endif ( CMAKE_VERSION VERSION_EQUAL "3.12.0" OR CMAKE_VERSION VERSION_GREATER "3.12.0" )
|
||||
include(CMakePackageConfigHelpers) # SameMinorVersion requires CMake 3.11
|
||||
write_basic_package_version_file(
|
||||
FluidSynthConfigVersion.cmake
|
||||
VERSION ${VERSION}
|
||||
COMPATIBILITY SameMinorVersion
|
||||
)
|
||||
|
||||
configure_file ( fluidsynth.pc.in
|
||||
${CMAKE_BINARY_DIR}/fluidsynth.pc IMMEDIATE @ONLY )
|
||||
install ( FILES ${CMAKE_BINARY_DIR}/fluidsynth.pc
|
||||
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
|
||||
# Here, configure_file() is used instead of the more orthodox macro
|
||||
# configure_package_config_file() because the latter does not
|
||||
# support generating a config.cmake file for both the installed
|
||||
# package and for using the build directory directly.
|
||||
configure_file(FluidSynthConfig.cmake.in FluidSynthConfig.cmake @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/FluidSynthConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/FluidSynthConfigVersion.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/fluidsynth
|
||||
)
|
||||
|
||||
# Extra targets for Unix build environments
|
||||
if ( UNIX )
|
||||
|
|
10
FluidSynthConfig.cmake.in
Normal file
10
FluidSynthConfig.cmake.in
Normal file
|
@ -0,0 +1,10 @@
|
|||
# for the find_dependency() macro:
|
||||
# include(CMakeFindDependencyMacro)
|
||||
# it has the same syntax as find_package:
|
||||
# find_dependency(MYDEP REQUIRED)
|
||||
|
||||
# define variables for configuration options:
|
||||
# set(network-enabled @enable-network@)
|
||||
|
||||
# finally, include the targets file
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/FluidSynthTargets.cmake")
|
|
@ -1,12 +1,15 @@
|
|||
# Provides install directory variables as defined by the GNU Coding Standards
|
||||
include ( GNUInstallDirs )
|
||||
|
||||
# Several directory names used by FluidSynth to install files
|
||||
# the variable names are similar to the KDE4 build system
|
||||
|
||||
# DEFAULT_SOUNDFONT - automatically loaded in some use cases
|
||||
if ( WIN32 )
|
||||
set (DEFAULT_SOUNDFONT "C:\\\\soundfonts\\\\default.sf2" CACHE STRING
|
||||
set (DEFAULT_SOUNDFONT "C:\\\\ProgramData\\\\soundfonts\\\\default.sf2" CACHE STRING
|
||||
"Default soundfont file")
|
||||
else ( WIN32 )
|
||||
set (DEFAULT_SOUNDFONT "${CMAKE_INSTALL_PREFIX}/share/soundfonts/default.sf2" CACHE STRING
|
||||
set (DEFAULT_SOUNDFONT "${CMAKE_INSTALL_FULL_DATADIR}/soundfonts/default.sf2" CACHE STRING
|
||||
"Default soundfont file")
|
||||
endif ( WIN32 )
|
||||
mark_as_advanced (DEFAULT_SOUNDFONT)
|
||||
|
@ -21,72 +24,28 @@ set (FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING
|
|||
"The install dir for framework bundles")
|
||||
mark_as_advanced (FRAMEWORK_INSTALL_DIR)
|
||||
|
||||
# BIN_INSTALL_DIR - the directory where executables will be installed
|
||||
set (BIN_INSTALL_DIR "bin" CACHE STRING "The install dir for executables")
|
||||
mark_as_advanced (BIN_INSTALL_DIR)
|
||||
|
||||
# SBIN_INSTALL_DIR - the directory where system executables will be installed
|
||||
set (SBIN_INSTALL_DIR "sbin" CACHE STRING
|
||||
"The install dir for system executables")
|
||||
mark_as_advanced (SBIN_INSTALL_DIR)
|
||||
|
||||
# LIB_INSTALL_DIR - the directory where libraries will be installed
|
||||
set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE STRING "The install dir for libraries")
|
||||
mark_as_advanced (LIB_INSTALL_DIR)
|
||||
|
||||
# INCLUDE_INSTALL_DIR - the install dir for header files
|
||||
set (INCLUDE_INSTALL_DIR "include" CACHE STRING "The install dir for headers")
|
||||
mark_as_advanced (INCLUDE_INSTALL_DIR)
|
||||
|
||||
# DATA_INSTALL_DIR - the base install directory for data files
|
||||
set (DATA_INSTALL_DIR "share" CACHE STRING
|
||||
"The base install dir for data files")
|
||||
mark_as_advanced (DATA_INSTALL_DIR)
|
||||
|
||||
# DOC_INSTALL_DIR - the install dir for documentation
|
||||
set (DOC_INSTALL_DIR "share/doc" CACHE STRING
|
||||
"The install dir for documentation")
|
||||
mark_as_advanced (DOC_INSTALL_DIR)
|
||||
|
||||
# INFO_INSTALL_DIR - the info install dir
|
||||
set (INFO_INSTALL_DIR "share/info" CACHE STRING "The info install dir")
|
||||
mark_as_advanced (INFO_INSTALL_DIR)
|
||||
|
||||
# MAN_INSTALL_DIR - the man pages install dir
|
||||
if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly")
|
||||
set (MAN_INSTALL_DIR "man/man1" CACHE STRING "The man pages install dir")
|
||||
else()
|
||||
set (MAN_INSTALL_DIR "share/man/man1" CACHE STRING "The man pages install dir")
|
||||
endif()
|
||||
mark_as_advanced (MAN_INSTALL_DIR)
|
||||
|
||||
# SYSCONF_INSTALL_DIR - the config file install dir
|
||||
set (SYSCONF_INSTALL_DIR "/etc" CACHE PATH
|
||||
"The sysconfig install dir")
|
||||
mark_as_advanced (SYSCONF_INSTALL_DIR)
|
||||
|
||||
# XDG_APPS_INSTALL_DIR - the XDG apps dir, where .desktop files are installed
|
||||
set (XDG_APPS_INSTALL_DIR "share/applications" CACHE STRING "The XDG apps dir")
|
||||
set (XDG_APPS_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/applications" CACHE STRING "The XDG apps dir")
|
||||
mark_as_advanced (XDG_APPS_INSTALL_DIR)
|
||||
|
||||
# XDG_MIME_INSTALL_DIR - the XDG mimetypes install dir
|
||||
set (XDG_MIME_INSTALL_DIR "share/mime/packages" CACHE STRING
|
||||
set (XDG_MIME_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/mime/packages" CACHE STRING
|
||||
"The install dir for the xdg mimetypes")
|
||||
mark_as_advanced (XDG_MIME_INSTALL_DIR)
|
||||
|
||||
|
||||
# DBUS_INTERFACES_INSTALL_DIR - the directory where dbus interfaces are
|
||||
# installed
|
||||
set (DBUS_INTERFACES_INSTALL_DIR "share/dbus-1/interfaces" CACHE STRING
|
||||
set (DBUS_INTERFACES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/dbus-1/interfaces" CACHE STRING
|
||||
"The dbus interfaces install dir")
|
||||
mark_as_advanced (DBUS_INTERFACES_INSTALL_DIR)
|
||||
|
||||
# DBUS_SERVICES_INSTALL_DIR - the directory where dbus services are installed
|
||||
set (DBUS_SERVICES_INSTALL_DIR "share/dbus-1/services" CACHE STRING
|
||||
set (DBUS_SERVICES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/dbus-1/services" CACHE STRING
|
||||
"The dbus services install dir")
|
||||
mark_as_advanced (DBUS_SERVICES_INSTALL_DIR)
|
||||
|
||||
# DBUS_SYSTEM_SERVICES_INSTALL_DIR - the directory where dbus system services
|
||||
# are installed
|
||||
set (DBUS_SYSTEM_SERVICES_INSTALL_DIR "share/dbus-1/system-services"
|
||||
set (DBUS_SYSTEM_SERVICES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/dbus-1/system-services"
|
||||
CACHE STRING "The dbus system services install dir")
|
||||
mark_as_advanced (DBUS_SYSTEM_SERVICES_INSTALL_DIR)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
macro ( ADD_FLUID_TEST _test )
|
||||
ADD_EXECUTABLE(${_test} ${_test}.c $<TARGET_OBJECTS:libfluidsynth-OBJ> )
|
||||
add_executable( ${_test} ${_test}.c )
|
||||
|
||||
# only build this unit test when explicitly requested by "make check"
|
||||
set_target_properties(${_test} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
|
@ -8,7 +8,7 @@ macro ( ADD_FLUID_TEST _test )
|
|||
if ( FLUID_CPPFLAGS )
|
||||
set_target_properties ( ${_test} PROPERTIES COMPILE_FLAGS ${FLUID_CPPFLAGS} )
|
||||
endif ( FLUID_CPPFLAGS )
|
||||
TARGET_LINK_LIBRARIES(${_test} $<TARGET_PROPERTY:libfluidsynth,INTERFACE_LINK_LIBRARIES>)
|
||||
target_link_libraries( ${_test} libfluidsynth-OBJ )
|
||||
|
||||
# use the local include path to look for fluidsynth.h, as we cannot be sure fluidsynth is already installed
|
||||
target_include_directories(${_test}
|
||||
|
@ -16,7 +16,7 @@ macro ( ADD_FLUID_TEST _test )
|
|||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include> # include auto generated headers
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include> # include "normal" public (sub-)headers
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src> # include private headers
|
||||
$<TARGET_PROPERTY:libfluidsynth,INCLUDE_DIRECTORIES> # include all other header search paths needed by libfluidsynth (esp. glib)
|
||||
$<TARGET_PROPERTY:libfluidsynth-OBJ,INCLUDE_DIRECTORIES> # include all other header search paths needed by libfluidsynth (esp. glib)
|
||||
)
|
||||
|
||||
# add the test to ctest
|
||||
|
@ -28,7 +28,7 @@ macro ( ADD_FLUID_TEST _test )
|
|||
endmacro ( ADD_FLUID_TEST )
|
||||
|
||||
macro ( ADD_FLUID_TEST_UTIL _util )
|
||||
ADD_EXECUTABLE(${_util} ${_util}.c $<TARGET_OBJECTS:libfluidsynth-OBJ> )
|
||||
add_executable( ${_util} ${_util}.c )
|
||||
|
||||
# only build this unit test when explicitly requested by "make check"
|
||||
set_target_properties(${_util} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
|
@ -40,7 +40,7 @@ macro ( ADD_FLUID_TEST_UTIL _util )
|
|||
if ( FLUID_CPPFLAGS )
|
||||
set_target_properties ( ${_util} PROPERTIES COMPILE_FLAGS ${FLUID_CPPFLAGS} )
|
||||
endif ( FLUID_CPPFLAGS )
|
||||
TARGET_LINK_LIBRARIES(${_util} $<TARGET_PROPERTY:libfluidsynth,INTERFACE_LINK_LIBRARIES>)
|
||||
target_link_libraries( ${_util} libfluidsynth-OBJ )
|
||||
|
||||
# use the local include path to look for fluidsynth.h, as we cannot be sure fluidsynth is already installed
|
||||
target_include_directories(${_util}
|
||||
|
@ -48,7 +48,7 @@ macro ( ADD_FLUID_TEST_UTIL _util )
|
|||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include> # include auto generated headers
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include> # include "normal" public (sub-)headers
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src> # include private headers
|
||||
$<TARGET_PROPERTY:libfluidsynth,INCLUDE_DIRECTORIES> # include all other header search paths needed by libfluidsynth (esp. glib)
|
||||
$<TARGET_PROPERTY:libfluidsynth-OBJ,INCLUDE_DIRECTORIES> # include all other header search paths needed by libfluidsynth (esp. glib)
|
||||
)
|
||||
|
||||
# append the current unit test to check-target as dependency
|
||||
|
|
75
cmake_admin/PkgConfigHelpers.cmake
Normal file
75
cmake_admin/PkgConfigHelpers.cmake
Normal file
|
@ -0,0 +1,75 @@
|
|||
macro ( sanitize_property_dirs target property )
|
||||
set(_cleandirs)
|
||||
get_target_property(_dirs ${target} ${property})
|
||||
if(_dirs)
|
||||
foreach(_d IN LISTS _dirs)
|
||||
if(EXISTS ${_d})
|
||||
list(APPEND _cleandirs ${_d})
|
||||
else()
|
||||
message(DEBUG "removing spurious directory ${_d} from property ${property} of target ${target}")
|
||||
endif()
|
||||
endforeach()
|
||||
set_property(TARGET ${target} PROPERTY ${property} ${_cleandirs})
|
||||
endif()
|
||||
endmacro ( sanitize_property_dirs )
|
||||
|
||||
macro ( sanitize_target_dirs target )
|
||||
if (TARGET ${target})
|
||||
message(DEBUG "performing sanitize_target_dirs(${target})")
|
||||
sanitize_property_dirs( ${target} INTERFACE_INCLUDE_DIRECTORIES )
|
||||
sanitize_property_dirs( ${target} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES )
|
||||
sanitize_property_dirs( ${target} INTERFACE_LINK_DIRECTORIES )
|
||||
endif()
|
||||
endmacro ( sanitize_target_dirs )
|
||||
|
||||
macro ( generate_pkgconfig_spec template outfile target )
|
||||
#message(DEBUG "generate_pkgconfig_spec: ${outfile} from template: ${template}")
|
||||
if (TARGET ${target})
|
||||
# retrieve all the private libs we depend on
|
||||
get_target_property (_libs ${target} INTERFACE_LINK_LIBRARIES)
|
||||
set(_cleanlibs)
|
||||
foreach(_lib IN LISTS _libs)
|
||||
if (TARGET ${_lib})
|
||||
# All the imported PkgConfig target are explicitly added to PC_REQUIRES_PRIV.
|
||||
# Do not duplicate them into the Libs.private section, as they will be already part of Requires.private
|
||||
else()
|
||||
list(APPEND _cleanlibs ${_lib})
|
||||
endif()
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES _cleanlibs)
|
||||
set (LIBS_PRIVATE ${_cleanlibs})
|
||||
# make a copy
|
||||
set ( LIBS_PRIVATE_WITH_PATH ${LIBS_PRIVATE} )
|
||||
|
||||
# this matches any path and any flag entries (starting with '-')
|
||||
set ( LIB_LIST_REGEX "(^(.+)\/([^\/]+)$)|(^\-.*$)" )
|
||||
# remove all entries from the list which are specified by path and which already have -l
|
||||
list ( FILTER LIBS_PRIVATE EXCLUDE REGEX ${LIB_LIST_REGEX} )
|
||||
# include only entries specifed by path
|
||||
list ( FILTER LIBS_PRIVATE_WITH_PATH INCLUDE REGEX ${LIB_LIST_REGEX} )
|
||||
|
||||
# prepend the linker flag to all entries except the ones that already have it
|
||||
list ( TRANSFORM LIBS_PRIVATE PREPEND "-l")
|
||||
list ( JOIN LIBS_PRIVATE " " LIBS_PRIVATE_JOINED )
|
||||
list ( JOIN LIBS_PRIVATE_WITH_PATH " " LIBS_PRIVATE_WITH_PATH_JOINED )
|
||||
|
||||
list ( JOIN PC_REQUIRES_PRIV " " PC_REQUIRES_PRIV_JOINED )
|
||||
|
||||
configure_file ( ${template} ${outfile} IMMEDIATE @ONLY)
|
||||
endif()
|
||||
endmacro ( generate_pkgconfig_spec )
|
||||
|
||||
macro ( unset_pkg_config _prefix )
|
||||
unset ( ${_prefix}_VERSION CACHE )
|
||||
unset ( ${_prefix}_PREFIX CACHE )
|
||||
unset ( ${_prefix}_CFLAGS CACHE )
|
||||
unset ( ${_prefix}_CFLAGS_OTHER CACHE )
|
||||
unset ( ${_prefix}_LDFLAGS CACHE )
|
||||
unset ( ${_prefix}_LDFLAGS_OTHER CACHE )
|
||||
unset ( ${_prefix}_LIBRARIES CACHE )
|
||||
unset ( ${_prefix}_INCLUDEDIR CACHE )
|
||||
unset ( ${_prefix}_INCLUDE_DIRS CACHE )
|
||||
unset ( ${_prefix}_LIBDIR CACHE )
|
||||
unset ( ${_prefix}_LIBRARY_DIRS CACHE )
|
||||
unset ( __pkg_config_checked_${_prefix} CACHE )
|
||||
endmacro ( unset_pkg_config )
|
|
@ -1,14 +0,0 @@
|
|||
macro ( unset_pkg_config _prefix )
|
||||
unset ( ${_prefix}_VERSION CACHE )
|
||||
unset ( ${_prefix}_PREFIX CACHE )
|
||||
unset ( ${_prefix}_CFLAGS CACHE )
|
||||
unset ( ${_prefix}_CFLAGS_OTHER CACHE )
|
||||
unset ( ${_prefix}_LDFLAGS CACHE )
|
||||
unset ( ${_prefix}_LDFLAGS_OTHER CACHE )
|
||||
unset ( ${_prefix}_LIBRARIES CACHE )
|
||||
unset ( ${_prefix}_INCLUDEDIR CACHE )
|
||||
unset ( ${_prefix}_INCLUDE_DIRS CACHE )
|
||||
unset ( ${_prefix}_LIBDIR CACHE )
|
||||
unset ( ${_prefix}_LIBRARY_DIRS CACHE )
|
||||
unset ( __pkg_config_checked_${_prefix} CACHE )
|
||||
endmacro ( unset_pkg_config )
|
|
@ -31,12 +31,6 @@ else ( JACK_SUPPORT )
|
|||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} JACK: no\n" )
|
||||
endif ( JACK_SUPPORT )
|
||||
|
||||
if ( PIPEWIRE_SUPPORT )
|
||||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PipeWire: yes\n" )
|
||||
else ( PIPEWIRE_SUPPORT )
|
||||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PipeWire: no\n" )
|
||||
endif ( PIPEWIRE_SUPPORT )
|
||||
|
||||
if ( MIDISHARE_SUPPORT )
|
||||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} MidiShare: yes\n" )
|
||||
else ( MIDISHARE_SUPPORT )
|
||||
|
@ -67,6 +61,12 @@ else ( OSS_SUPPORT )
|
|||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OSS: no\n" )
|
||||
endif ( OSS_SUPPORT )
|
||||
|
||||
if ( PIPEWIRE_SUPPORT )
|
||||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PipeWire: yes\n" )
|
||||
else ( PIPEWIRE_SUPPORT )
|
||||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PipeWire: no\n" )
|
||||
endif ( PIPEWIRE_SUPPORT )
|
||||
|
||||
if ( PORTAUDIO_SUPPORT )
|
||||
set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PortAudio: yes\n" )
|
||||
else ( PORTAUDIO_SUPPORT )
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
debian/tmp/usr/include/*
|
||||
debian/tmp/usr/lib*/*.so
|
||||
debian/tmp/usr/lib*/pkgconfig/*.pc
|
||||
debian/tmp/usr/lib/*/*.so
|
||||
debian/tmp/usr/lib/*/pkgconfig/*.pc
|
||||
debian/tmp/usr/lib/*/cmake/fluidsynth/*.cmake
|
||||
|
|
|
@ -1 +1 @@
|
|||
debian/tmp/usr/lib*/lib*.so.*
|
||||
debian/tmp/usr/lib/*/lib*.so.*
|
||||
|
|
|
@ -26,7 +26,7 @@ config.status: CMakeLists.txt
|
|||
dh_testdir
|
||||
|
||||
# Add here commands to configure the package.
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib .
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr .
|
||||
|
||||
build: build-stamp
|
||||
build-stamp: config.status
|
||||
|
|
|
@ -5,4 +5,4 @@ Binary: fluidsynth, libfluidsynth1, libfluidsynth-dev
|
|||
Maintainer: Rui Nuno Capela <rncbc@rncbc.org>
|
||||
Architecture: any
|
||||
Standards-Version: 3.7.2
|
||||
Build-Depends: debhelper (>= 5.0.0), cmake, pkg-config, libdb-dev, libjack-dev, libasound2-dev, libsndfile-dev, libglib2.0-dev
|
||||
Build-Depends: debhelper (>= 5.0.0), cmake (>= 3.13.0), pkg-config, libdb-dev, libjack-dev, libasound2-dev, libsndfile-dev, libglib2.0-dev
|
||||
|
|
|
@ -32,7 +32,7 @@ Group: Productivity/Multimedia/Sound/Midi
|
|||
Url: http://www.fluidsynth.org/
|
||||
Source: https://github.com/FluidSynth/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||
Source1000: baselibs.conf
|
||||
BuildRequires: cmake >= 3.1.0
|
||||
BuildRequires: cmake >= 3.13.0
|
||||
BuildRequires: gcc-c++
|
||||
%if 0%{?is_opensuse}
|
||||
BuildRequires: ladspa-devel
|
||||
|
@ -133,8 +133,10 @@ ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
|
|||
|
||||
%files devel
|
||||
%{_libdir}/lib*.so
|
||||
%{_includedir}/*
|
||||
%dir %{_libdir}/cmake/%{name}
|
||||
%{_libdir}/cmake/%{name}/*.cmake
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
%{_includedir}/*
|
||||
|
||||
%files -n libfluidsynth3
|
||||
%{_libdir}/lib*.so.*
|
||||
|
|
|
@ -45,7 +45,7 @@ endif ( DOXYGEN_FOUND )
|
|||
|
||||
if ( UNIX )
|
||||
install ( FILES fluidsynth.1
|
||||
DESTINATION ${MAN_INSTALL_DIR} )
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
|
||||
endif ( UNIX )
|
||||
|
||||
add_subdirectory ( examples )
|
||||
|
|
|
@ -11,7 +11,7 @@ target_compile_options ( fluidsynth-assetloader
|
|||
PRIVATE -Wall
|
||||
PRIVATE "$<$<CONFIG:DEBUG>:-Werror>") # Only include -Werror when building debug config
|
||||
|
||||
include_directories ( ../../../include )
|
||||
target_include_directories ( fluidsynth-assetloader PRIVATE ../../../include )
|
||||
|
||||
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L../../../dist/${ANDROID_ABI} -lfluidsynth" )
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ Type=notify
|
|||
NotifyAccess=main
|
||||
EnvironmentFile=@FLUID_DAEMON_ENV_FILE@
|
||||
EnvironmentFile=-%h/.config/fluidsynth
|
||||
ExecStart=@CMAKE_INSTALL_PREFIX@/@BIN_INSTALL_DIR@/fluidsynth -is $OTHER_OPTS $SOUND_FONT
|
||||
ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/fluidsynth -is $OTHER_OPTS $SOUND_FONT
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
|
|
@ -19,42 +19,14 @@
|
|||
|
||||
# CMake based build system. Pedro Lopez-Cabanillas <plcl@users.sf.net>
|
||||
|
||||
include_directories (
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_SOURCE_DIR}/src/drivers
|
||||
${CMAKE_SOURCE_DIR}/src/synth
|
||||
${CMAKE_SOURCE_DIR}/src/rvoice
|
||||
${CMAKE_SOURCE_DIR}/src/midi
|
||||
${CMAKE_SOURCE_DIR}/src/utils
|
||||
${CMAKE_SOURCE_DIR}/src/sfloader
|
||||
${CMAKE_SOURCE_DIR}/src/bindings
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_BINARY_DIR}/include
|
||||
)
|
||||
|
||||
include_directories (
|
||||
SYSTEM
|
||||
${GLIB_INCLUDE_DIRS}
|
||||
${PTHREADS_INCLUDE_DIR}
|
||||
${SDL2_INCLUDE_DIR}
|
||||
${LIBINSTPATCH_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
# ************ library ************
|
||||
|
||||
if ( READLINE_SUPPORT )
|
||||
include_directories ( ${READLINE_INCLUDE_DIR} )
|
||||
endif ( READLINE_SUPPORT )
|
||||
|
||||
if ( PULSE_SUPPORT )
|
||||
set ( fluid_pulse_SOURCES drivers/fluid_pulse.c )
|
||||
include_directories ( ${PULSE_INCLUDE_DIRS} )
|
||||
endif ( PULSE_SUPPORT )
|
||||
|
||||
if ( ALSA_SUPPORT )
|
||||
set ( fluid_alsa_SOURCES drivers/fluid_alsa.c )
|
||||
include_directories ( ${ALSA_INCLUDE_DIRS} )
|
||||
endif ( ALSA_SUPPORT )
|
||||
|
||||
if ( COREAUDIO_SUPPORT )
|
||||
|
@ -67,12 +39,10 @@ endif ( COREMIDI_SUPPORT )
|
|||
|
||||
if ( DBUS_SUPPORT )
|
||||
set ( fluid_dbus_SOURCES bindings/fluid_rtkit.c bindings/fluid_rtkit.h )
|
||||
include_directories ( ${DBUS_INCLUDE_DIRS} )
|
||||
endif ( DBUS_SUPPORT )
|
||||
|
||||
if ( JACK_SUPPORT )
|
||||
set ( fluid_jack_SOURCES drivers/fluid_jack.c )
|
||||
include_directories ( ${JACK_INCLUDE_DIRS} )
|
||||
endif ( JACK_SUPPORT )
|
||||
|
||||
if ( PIPEWIRE_SUPPORT )
|
||||
|
@ -82,7 +52,6 @@ endif ( PIPEWIRE_SUPPORT )
|
|||
|
||||
if ( PORTAUDIO_SUPPORT )
|
||||
set ( fluid_portaudio_SOURCES drivers/fluid_portaudio.c )
|
||||
include_directories ( ${PORTAUDIO_INCLUDE_DIRS} )
|
||||
endif ( PORTAUDIO_SUPPORT )
|
||||
|
||||
if ( DSOUND_SUPPORT )
|
||||
|
@ -103,7 +72,6 @@ endif ( WINMIDI_SUPPORT )
|
|||
|
||||
if ( SDL2_SUPPORT )
|
||||
set ( fluid_sdl2_SOURCES drivers/fluid_sdl2.c )
|
||||
include_directories ( ${SDL2_INCLUDE_DIRS} )
|
||||
endif ( SDL2_SUPPORT )
|
||||
|
||||
if ( OSS_SUPPORT )
|
||||
|
@ -112,25 +80,14 @@ endif ( OSS_SUPPORT )
|
|||
|
||||
if ( LASH_SUPPORT )
|
||||
set ( fluid_lash_SOURCES bindings/fluid_lash.c bindings/fluid_lash.h )
|
||||
include_directories ( ${LASH_INCLUDE_DIRS})
|
||||
endif ( LASH_SUPPORT )
|
||||
|
||||
if ( SYSTEMD_SUPPORT )
|
||||
include_directories ( ${SYSTEMD_INCLUDE_DIRS})
|
||||
endif ( SYSTEMD_SUPPORT )
|
||||
|
||||
if ( DART_SUPPORT )
|
||||
set ( fluid_dart_SOURCES drivers/fluid_dart.c )
|
||||
include_directories ( ${DART_INCLUDE_DIRS} )
|
||||
endif ( DART_SUPPORT )
|
||||
|
||||
if ( LIBSNDFILE_SUPPORT )
|
||||
include_directories ( ${LIBSNDFILE_INCLUDE_DIRS} )
|
||||
endif ( LIBSNDFILE_SUPPORT )
|
||||
|
||||
if ( MIDISHARE_SUPPORT )
|
||||
set ( fluid_midishare_SOURCES drivers/fluid_midishare.c )
|
||||
include_directories ( ${MidiShare_INCLUDE_DIRS} )
|
||||
endif ( MIDISHARE_SUPPORT )
|
||||
|
||||
if ( AUFILE_SUPPORT )
|
||||
|
@ -143,12 +100,10 @@ endif ( LIBINSTPATCH_SUPPORT )
|
|||
|
||||
if ( OPENSLES_SUPPORT )
|
||||
set ( fluid_opensles_SOURCES drivers/fluid_opensles.c )
|
||||
include_directories ( ${OpenSLES_INCLUDE_DIRS} )
|
||||
endif ( OPENSLES_SUPPORT )
|
||||
|
||||
if ( OBOE_SUPPORT )
|
||||
set ( fluid_oboe_SOURCES drivers/fluid_oboe.cpp )
|
||||
include_directories ( ${OBOE_INCLUDE_DIRS} )
|
||||
endif ( OBOE_SUPPORT )
|
||||
|
||||
set ( config_SOURCES ${CMAKE_BINARY_DIR}/config.h )
|
||||
|
@ -302,6 +257,20 @@ add_library ( libfluidsynth-OBJ OBJECT
|
|||
${VersionFilesOutputVariable}
|
||||
)
|
||||
|
||||
target_include_directories ( libfluidsynth-OBJ PRIVATE
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_BINARY_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_SOURCE_DIR}/src/drivers
|
||||
${CMAKE_SOURCE_DIR}/src/synth
|
||||
${CMAKE_SOURCE_DIR}/src/rvoice
|
||||
${CMAKE_SOURCE_DIR}/src/midi
|
||||
${CMAKE_SOURCE_DIR}/src/utils
|
||||
${CMAKE_SOURCE_DIR}/src/sfloader
|
||||
${CMAKE_SOURCE_DIR}/src/bindings
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
)
|
||||
|
||||
if ( LIBFLUID_CPPFLAGS )
|
||||
set_target_properties ( libfluidsynth-OBJ
|
||||
PROPERTIES COMPILE_FLAGS ${LIBFLUID_CPPFLAGS} )
|
||||
|
@ -354,30 +323,113 @@ else ( MACOSX_FRAMEWORK )
|
|||
)
|
||||
endif ( MACOSX_FRAMEWORK )
|
||||
|
||||
target_link_libraries ( libfluidsynth
|
||||
${GLIB_LIBRARIES}
|
||||
${GMODULE_LIBRARIES}
|
||||
${LASH_LIBRARIES}
|
||||
${JACK_LIBRARIES}
|
||||
${PIPEWIRE_LIBRARIES}
|
||||
${ALSA_LIBRARIES}
|
||||
${PULSE_LIBRARIES}
|
||||
${PORTAUDIO_LIBRARIES}
|
||||
${LIBSNDFILE_LIBRARIES}
|
||||
${SDL2_LIBRARIES}
|
||||
${DBUS_LIBRARIES}
|
||||
${READLINE_LIBS}
|
||||
# Since CMake 3.12, OBJECT libraries can be linked to with target_link_libraries().
|
||||
# See https://cmake.org/cmake/help/latest/command/target_link_libraries.html#linking-object-libraries
|
||||
# Object Libraries may "link" to other libraries to get usage requirements,
|
||||
# but since they do not have a link step nothing is done with their object files.
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC
|
||||
${DART_LIBS}
|
||||
${COREAUDIO_LIBS}
|
||||
${COREMIDI_LIBS}
|
||||
${WINDOWS_LIBS}
|
||||
${MidiShare_LIBS}
|
||||
${OpenSLES_LIBS}
|
||||
${OBOE_LIBRARIES}
|
||||
${LIBFLUID_LIBS}
|
||||
${LIBINSTPATCH_LIBRARIES}
|
||||
)
|
||||
|
||||
if ( TARGET OpenMP::OpenMP_C AND HAVE_OPENMP )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC OpenMP::OpenMP_C )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::GLIB )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::GLIB )
|
||||
else()
|
||||
target_include_directories ( libfluidsynth-OBJ PUBLIC ${GLIB_INCLUDE_DIRS} )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC ${GLIB_LIBRARIES} )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::LIBSNDFILE AND LIBSNDFILE_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::LIBSNDFILE )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::PULSE AND PULSE_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::PULSE )
|
||||
endif()
|
||||
|
||||
if ( ALSA_SUPPORT )
|
||||
if ( TARGET PkgConfig::ALSA )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::ALSA )
|
||||
else()
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC ALSA::ALSA )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::PORTAUDIO AND PORTAUDIO_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::PORTAUDIO )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::JACK AND JACK_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::JACK )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::PIPEWIRE AND PIPEWIRE_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::PIPEWIRE )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::LASH AND LASH_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::LASH )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::DBUS AND DBUS_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::DBUS )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::GMODULE AND LADSPA_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::GMODULE )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::LIBINSTPATCH AND LIBINSTPATCH_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::LIBINSTPATCH )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::SDL2 AND SDL2_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::SDL2 )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::OBOE AND OBOE_SUPPORT )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::OBOE )
|
||||
endif()
|
||||
|
||||
if ( WITH_READLINE )
|
||||
if ( TARGET PkgConfig::READLINE )
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC PkgConfig::READLINE )
|
||||
else()
|
||||
target_link_libraries ( libfluidsynth-OBJ PUBLIC ${READLINE_LIBRARIES} )
|
||||
target_include_directories ( libfluidsynth-OBJ PUBLIC ${READLINE_INCLUDE_DIR} )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ( DART_SUPPORT )
|
||||
target_include_directories ( libfluidsynth-OBJ PUBLIC ${DART_INCLUDE_DIRS} )
|
||||
endif ( DART_SUPPORT )
|
||||
|
||||
if ( MIDISHARE_SUPPORT )
|
||||
target_include_directories ( libfluidsynth-OBJ PUBLIC ${MidiShare_INCLUDE_DIRS} )
|
||||
endif ( MIDISHARE_SUPPORT )
|
||||
|
||||
if ( OPENSLES_SUPPORT )
|
||||
target_include_directories ( libfluidsynth-OBJ PUBLIC ${OpenSLES_INCLUDE_DIRS} )
|
||||
endif ( OPENSLES_SUPPORT )
|
||||
|
||||
# This doesn't install any object file at all!
|
||||
# it is only a trick for exporting targets
|
||||
install( TARGETS libfluidsynth-OBJ
|
||||
EXPORT FluidSynthTargets
|
||||
OBJECTS )
|
||||
|
||||
# Here are applied/linked the OBJECT library dependencies
|
||||
target_link_libraries ( libfluidsynth PRIVATE libfluidsynth-OBJ )
|
||||
|
||||
# ************ CLI program ************
|
||||
|
||||
set ( fluidsynth_SOURCES fluidsynth.c )
|
||||
|
@ -398,28 +450,82 @@ if ( FLUID_CPPFLAGS )
|
|||
PROPERTIES COMPILE_FLAGS ${FLUID_CPPFLAGS} )
|
||||
endif ( FLUID_CPPFLAGS )
|
||||
|
||||
target_link_libraries ( fluidsynth
|
||||
target_include_directories ( fluidsynth PRIVATE
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_BINARY_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/src/bindings
|
||||
${CMAKE_SOURCE_DIR}/src/midi
|
||||
${CMAKE_SOURCE_DIR}/src/rvoice
|
||||
${CMAKE_SOURCE_DIR}/src/sfloader
|
||||
${CMAKE_SOURCE_DIR}/src/synth
|
||||
${CMAKE_SOURCE_DIR}/src/utils
|
||||
${CMAKE_SOURCE_DIR}/src/
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
)
|
||||
|
||||
target_link_libraries ( fluidsynth PRIVATE
|
||||
libfluidsynth
|
||||
${SYSTEMD_LIBRARIES}
|
||||
${FLUID_LIBS}
|
||||
)
|
||||
|
||||
if ( TARGET OpenMP::OpenMP_C AND HAVE_OPENMP )
|
||||
target_link_libraries ( fluidsynth PRIVATE OpenMP::OpenMP_C )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::SYSTEMD AND SYSTEMD_SUPPORT )
|
||||
target_link_libraries ( fluidsynth PRIVATE PkgConfig::SYSTEMD )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::GLIB ) # because g_file_test()
|
||||
target_link_libraries ( fluidsynth PRIVATE PkgConfig::GLIB )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::SDL2 AND SDL2_SUPPORT ) # because SDL_Init() etc.
|
||||
target_link_libraries ( fluidsynth PRIVATE PkgConfig::SDL2 )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::LIBINSTPATCH AND LIBINSTPATCH_SUPPORT )
|
||||
target_link_libraries ( fluidsynth PRIVATE PkgConfig::LIBINSTPATCH )
|
||||
endif()
|
||||
|
||||
if ( TARGET PkgConfig::LASH AND LASH_SUPPORT )
|
||||
target_link_libraries ( fluidsynth PRIVATE PkgConfig::LASH )
|
||||
endif()
|
||||
|
||||
if ( MACOSX_FRAMEWORK )
|
||||
install ( TARGETS fluidsynth libfluidsynth
|
||||
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
|
||||
EXPORT FluidSynthTargets
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
|
||||
ARCHIVE DESTINATION ${FRAMEWORK_INSTALL_DIR}
|
||||
)
|
||||
else ( MACOSX_FRAMEWORK )
|
||||
install ( TARGETS fluidsynth libfluidsynth
|
||||
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
|
||||
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
|
||||
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
|
||||
PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/fluidsynth
|
||||
EXPORT FluidSynthTargets
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/fluidsynth
|
||||
)
|
||||
install ( FILES ${public_main_HEADER} DESTINATION ${INCLUDE_INSTALL_DIR} )
|
||||
install ( FILES ${public_main_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
|
||||
endif ( MACOSX_FRAMEWORK )
|
||||
|
||||
# Exported targets.
|
||||
|
||||
# build_interface: for the libfluidsynth target when imported from the build directory.
|
||||
# install_interface: for the target when imported from the installed directory.
|
||||
target_include_directories(libfluidsynth PUBLIC
|
||||
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/;${PROJECT_BINARY_DIR}/include/>"
|
||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||
)
|
||||
|
||||
# installation of the exported targets
|
||||
install(EXPORT FluidSynthTargets
|
||||
FILE FluidSynthTargets.cmake
|
||||
NAMESPACE FluidSynth::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/fluidsynth
|
||||
)
|
||||
|
||||
# ******* Auto Generated Lookup Tables ******
|
||||
|
||||
include(ExternalProject)
|
||||
|
|
|
@ -21,14 +21,14 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
|||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../)
|
||||
|
||||
# Add the executable that generates the table
|
||||
add_executable( make_tables
|
||||
make_tables.c
|
||||
gen_conv.c
|
||||
gen_rvoice_dsp.c)
|
||||
|
||||
target_include_directories( make_tables PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../ )
|
||||
|
||||
if ( WIN32 )
|
||||
add_definitions ( -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS )
|
||||
else ( WIN32 )
|
||||
|
|
Loading…
Reference in a new issue