mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-05 06:09:47 +02:00
Visual Studio NuGet package handling was redone to correct a chicken and egg situation. (See the nuget_package() function in audacity/CMakeLists.txt. Due to the change in NuGet handling, was finally able to make the Audacity target dependent on several other targets. This ensures the destination directory is populated correctly. Library handling for system packages reworked to ensure the correct libraries are used and to "workaround" an issue where the libraries weren't being included in the link command...no idea why. New way is better anyway. Don't allow a system library for SBSMS since it seems we have a unique (Audacity-only???) version. Don't define wxDEBUG_LEVEL. It's not needed and causes duplicate symbol warnings. A couple of small changes to config files to remove libmad and libsndfile warnings. Do not include serdi.c and sordi.c in the LV2 build. Fix handling of static Lame and linked FFmpeg libs. Use cmake file() instead of gcc/awk to extract version information from Audacity.h for the Mac Info.plist. Use "cmake -E tar" to zip artifacts in github action.
256 lines
7.5 KiB
CMake
256 lines
7.5 KiB
CMake
|
|
add_library( ${TARGET} STATIC )
|
|
|
|
def_vars()
|
|
|
|
list( APPEND SOURCES
|
|
PRIVATE
|
|
|
|
# lilv
|
|
|
|
${TARGET_ROOT}/lilv/src/collections.c
|
|
${TARGET_ROOT}/lilv/src/instance.c
|
|
${TARGET_ROOT}/lilv/src/lib.c
|
|
${TARGET_ROOT}/lilv/src/node.c
|
|
${TARGET_ROOT}/lilv/src/plugin.c
|
|
${TARGET_ROOT}/lilv/src/pluginclass.c
|
|
${TARGET_ROOT}/lilv/src/port.c
|
|
${TARGET_ROOT}/lilv/src/query.c
|
|
${TARGET_ROOT}/lilv/src/scalepoint.c
|
|
${TARGET_ROOT}/lilv/src/state.c
|
|
${TARGET_ROOT}/lilv/src/ui.c
|
|
${TARGET_ROOT}/lilv/src/util.c
|
|
${TARGET_ROOT}/lilv/src/world.c
|
|
${TARGET_ROOT}/lilv/src/zix/tree.c
|
|
|
|
# serd
|
|
|
|
${TARGET_ROOT}/serd/src/byte_source.c
|
|
${TARGET_ROOT}/serd/src/env.c
|
|
${TARGET_ROOT}/serd/src/n3.c
|
|
${TARGET_ROOT}/serd/src/node.c
|
|
${TARGET_ROOT}/serd/src/reader.c
|
|
${TARGET_ROOT}/serd/src/string.c
|
|
${TARGET_ROOT}/serd/src/uri.c
|
|
${TARGET_ROOT}/serd/src/writer.c
|
|
|
|
# sord
|
|
|
|
${TARGET_ROOT}/sord/src/sord.c
|
|
${TARGET_ROOT}/sord/src/sord_validate.c
|
|
${TARGET_ROOT}/sord/src/syntax.c
|
|
${TARGET_ROOT}/sord/src/zix/btree.c
|
|
${TARGET_ROOT}/sord/src/zix/digest.c
|
|
${TARGET_ROOT}/sord/src/zix/hash.c
|
|
|
|
# sratom
|
|
|
|
${TARGET_ROOT}/sratom/src/sratom.c
|
|
|
|
# suil
|
|
|
|
${TARGET_ROOT}/suil/src/host.c
|
|
${TARGET_ROOT}/suil/src/instance.c
|
|
)
|
|
|
|
list( APPEND INCLUDES
|
|
PRIVATE
|
|
${_PRVDIR}
|
|
${TARGET_ROOT}/lilv/src
|
|
${TARGET_ROOT}/lilv/src/zix
|
|
${TARGET_ROOT}/serd/src
|
|
${TARGET_ROOT}/sord/src
|
|
${TARGET_ROOT}/sord/src/zix
|
|
${TARGET_ROOT}/sratom/src
|
|
${TARGET_ROOT}/suil/src
|
|
PUBLIC
|
|
${_PUBDIR}
|
|
${TARGET_ROOT}/lv2
|
|
${TARGET_ROOT}/lilv
|
|
${TARGET_ROOT}/serd
|
|
${TARGET_ROOT}/sord
|
|
${TARGET_ROOT}/sratom
|
|
${TARGET_ROOT}/suil
|
|
)
|
|
|
|
list( APPEND DEFINES
|
|
PRIVATE
|
|
SUIL_INTERNAL
|
|
)
|
|
|
|
list( APPEND HEADERS
|
|
|
|
# lv2
|
|
|
|
${TARGET_ROOT}/lv2/lv2/atom/atom.h
|
|
${TARGET_ROOT}/lv2/lv2/atom/forge.h
|
|
${TARGET_ROOT}/lv2/lv2/atom/util.h
|
|
${TARGET_ROOT}/lv2/lv2/buf-size/buf-size.h
|
|
${TARGET_ROOT}/lv2/lv2/core/attributes.h
|
|
${TARGET_ROOT}/lv2/lv2/core/lv2.h
|
|
${TARGET_ROOT}/lv2/lv2/core/lv2_util.h
|
|
${TARGET_ROOT}/lv2/lv2/data-access/data-access.h
|
|
${TARGET_ROOT}/lv2/lv2/dynmanifest/dynmanifest.h
|
|
${TARGET_ROOT}/lv2/lv2/event/event-helpers.h
|
|
${TARGET_ROOT}/lv2/lv2/event/event.h
|
|
${TARGET_ROOT}/lv2/lv2/instance-access/instance-access.h
|
|
${TARGET_ROOT}/lv2/lv2/log/log.h
|
|
${TARGET_ROOT}/lv2/lv2/log/logger.h
|
|
${TARGET_ROOT}/lv2/lv2/midi/midi.h
|
|
${TARGET_ROOT}/lv2/lv2/morph/morph.h
|
|
${TARGET_ROOT}/lv2/lv2/options/options.h
|
|
${TARGET_ROOT}/lv2/lv2/parameters/parameters.h
|
|
${TARGET_ROOT}/lv2/lv2/patch/patch.h
|
|
${TARGET_ROOT}/lv2/lv2/port-groups/port-groups.h
|
|
${TARGET_ROOT}/lv2/lv2/port-props/port-props.h
|
|
${TARGET_ROOT}/lv2/lv2/presets/presets.h
|
|
${TARGET_ROOT}/lv2/lv2/resize-port/resize-port.h
|
|
${TARGET_ROOT}/lv2/lv2/state/state.h
|
|
${TARGET_ROOT}/lv2/lv2/time/time.h
|
|
${TARGET_ROOT}/lv2/lv2/ui/ui.h
|
|
${TARGET_ROOT}/lv2/lv2/units/units.h
|
|
${TARGET_ROOT}/lv2/lv2/uri-map/uri-map.h
|
|
${TARGET_ROOT}/lv2/lv2/urid/urid.h
|
|
${TARGET_ROOT}/lv2/lv2/worker/worker.h
|
|
)
|
|
|
|
set( src "${TARGET_ROOT}/lv2" )
|
|
set( dst "${_PUBDIR}" )
|
|
set( ns "${dst}/lv2/lv2plug.in/ns" )
|
|
set( stamp "${_INTDIR}/.stamp.lv2" )
|
|
|
|
# Simulate the older directory structure (trailing "/" is important)
|
|
file( MAKE_DIRECTORY "${ns}" )
|
|
file( COPY "${src}/lv2/core/lv2.h" DESTINATION "${dst}" )
|
|
file( COPY "${src}/lv2/" DESTINATION "${ns}/ext" )
|
|
file( COPY "${src}/lv2/" DESTINATION "${ns}/extensions" )
|
|
file( COPY "${src}/lv2/core/" DESTINATION "${ns}/lv2core" )
|
|
|
|
set( LILV_VERSION "0.24.4" )
|
|
set( SERD_VERSION "0.30.2" )
|
|
set( SORD_VERSION "0.16.4" )
|
|
set( SRATOM_VERSION "0.6.4" )
|
|
set( SUIL_VERSION "0.10.6" )
|
|
|
|
set( HAVE_LV2 1 )
|
|
set( HAVE_SERD 1 )
|
|
set( HAVE_SORD 1 )
|
|
set( HAVE_SRATOM 1 )
|
|
|
|
macro( bld name packages define sources )
|
|
set( libs )
|
|
set( missing )
|
|
foreach( pkg ${packages} )
|
|
if( NOT "${${pkg}_FOUND}" )
|
|
set( missing ON )
|
|
break()
|
|
endif()
|
|
|
|
list( APPEND libs
|
|
PRIVATE
|
|
"PkgConfig::${pkg}"
|
|
)
|
|
endforeach()
|
|
|
|
if( NOT missing )
|
|
list( APPEND DEFINES
|
|
PRIVATE
|
|
${define}
|
|
)
|
|
|
|
add_library( ${name} MODULE "${sources}" )
|
|
add_dependencies( ${TARGET} ${name} )
|
|
|
|
set_target_properties( ${name}
|
|
PROPERTIES
|
|
LIBRARY_OUTPUT_DIRECTORY "${_LIBDIR}"
|
|
PREFIX ""
|
|
)
|
|
|
|
organize_source( "${TARGET_ROOT}" "" "${sources}" )
|
|
target_compile_definitions( ${name} PRIVATE SUIL_SHARED ${DEFINES} )
|
|
target_include_directories( ${name} PRIVATE ${INCLUDES} )
|
|
target_link_libraries( ${name} PRIVATE ${libs} )
|
|
endif()
|
|
endmacro()
|
|
|
|
if( WIN32 )
|
|
set( LILV_PATH_SEP ";" )
|
|
set( LILV_DIR_SEP "\\\\" )
|
|
set( LILV_DEFAULT_LV2_PATH "%APPDATA%\\LV2;%COMMONPROGRAMFILES%\\LV2" )
|
|
|
|
set( SUIL_MODULE_DIR "" )
|
|
set( SUIL_DIR_SEP "" )
|
|
set( SUIL_GTK2_LIB_NAME "libgtk-x11-2.0.so.0" )
|
|
set( SUIL_GTK3_LIB_NAME "libgtk-x11-3.0.so.0" )
|
|
set( SUIL_MODULE_PREFIX "" )
|
|
set( SUIL_MODULE_EXT ".dll" )
|
|
elseif( APPLE )
|
|
set( LILV_PATH_SEP ":" )
|
|
set( LILV_DIR_SEP "/" )
|
|
set( LILV_DEFAULT_LV2_PATH "~/Library/Audio/Plug-Ins/LV2:~/.lv2:/usr/local/lib/lv2:/usr/lib/lv2:/Library/Audio/Plug-Ins/LV2" )
|
|
|
|
set( SUIL_MODULE_DIR "" )
|
|
set( SUIL_DIR_SEP "" )
|
|
set( SUIL_GTK2_LIB_NAME "libgtk-x11-2.0.so.0" )
|
|
set( SUIL_GTK3_LIB_NAME "libgtk-x11-3.0.so.0" )
|
|
set( SUIL_MODULE_PREFIX "lib" )
|
|
set( SUIL_MODULE_EXT ".dylib" )
|
|
elseif( UNIX )
|
|
set( LILV_PATH_SEP ":" )
|
|
set( LILV_DIR_SEP "/" )
|
|
set( LILV_DEFAULT_LV2_PATH "~/.lv2:/usr/lib/lv2:/usr/local/lib/lv2" )
|
|
|
|
set( SUIL_MODULE_DIR "" )
|
|
set( SUIL_DIR_SEP "" )
|
|
set( SUIL_GTK2_LIB_NAME "libgtk-x11-2.0.so.0" )
|
|
set( SUIL_GTK3_LIB_NAME "libgtk-x11-3.0.so.0" )
|
|
set( SUIL_MODULE_PREFIX "lib" )
|
|
set( SUIL_MODULE_EXT ".so" )
|
|
|
|
pkg_check_modules( X11 IMPORTED_TARGET "x11" )
|
|
pkg_check_modules( GTK2 IMPORTED_TARGET "gtk+-2.0" )
|
|
pkg_check_modules( GTK3 IMPORTED_TARGET "gtk+-3.0" )
|
|
pkg_check_modules( GTK2X11 IMPORTED_TARGET "gtk+-x11-2.0" )
|
|
pkg_check_modules( GTK3X11 IMPORTED_TARGET "gtk+-x11-3.0" )
|
|
pkg_check_modules( QT4 IMPORTED_TARGET "QtGui >= 4.4.0" )
|
|
pkg_check_modules( QT5 IMPORTED_TARGET "Qt5Widgets >= 5.1.0" )
|
|
|
|
bld( "suil_x11"
|
|
"X11"
|
|
"SUIL_WITH_X11"
|
|
"${TARGET_ROOT}/suil/src/x11.c" )
|
|
bld( "suil_x11_in_gtk2"
|
|
"X11;GTK2X11"
|
|
"SUIL_WITH_X11_IN_GTK2"
|
|
"${TARGET_ROOT}/suil/src/x11_in_gtk2.c" )
|
|
bld( "suil_x11_in_gtk3"
|
|
"X11;GTK3X11"
|
|
"SUIL_WITH_X11_IN_GTK3"
|
|
"${TARGET_ROOT}/suil/src/x11_in_gtk3.c" )
|
|
bld( "suil_qt4_in_gtk2"
|
|
"QT4;GTK2"
|
|
"SUIL_WITH_QT4_IN_GTK2"
|
|
"${TARGET_ROOT}/suil/src/qt4_in_gtk2.cpp" )
|
|
bld( "suil_qt5_in_gtk2"
|
|
"QT5;GTK2"
|
|
"SUIL_WITH_QT5_IN_GTK2"
|
|
"${TARGET_ROOT}/suil/src/qt5_in_gtk.cpp" )
|
|
bld( "suil_qt5_in_gtk3"
|
|
"QT5;GTK3"
|
|
"SUIL_WITH_QT5_IN_GTK3"
|
|
"${TARGET_ROOT}/suil/src/qt5_in_gtk.cpp" )
|
|
endif()
|
|
|
|
configure_file( lilv_config.h.in "${_PRVDIR}/lilv_config.h" )
|
|
configure_file( serd_config.h.in "${_PRVDIR}/serd_config.h" )
|
|
configure_file( sord_config.h.in "${_PRVDIR}/sord_config.h" )
|
|
configure_file( sratom_config.h.in "${_PRVDIR}/sratom_config.h" )
|
|
configure_file( suil_config.h.in "${_PRVDIR}/suil_config.h" )
|
|
|
|
organize_source( "${TARGET_ROOT}" "" "${SOURCES} ${HEADERS}" )
|
|
target_sources( ${TARGET} PRIVATE ${SOURCES} ${HEADERS} )
|
|
target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} )
|
|
target_include_directories( ${TARGET} PRIVATE ${INCLUDES} )
|
|
|