diff --git a/CMakeLists.txt b/CMakeLists.txt index be2646a05b4287aa0d5e34863cb2c4402af73e68..1a018e367f18cacc73472224fc544f8d3bd22e60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,14 +52,14 @@ if( APPLE ) # Define the OSX compatibility parameters set( CMAKE_OSX_ARCHITECTURES x86_64 CACHE INTERNAL "" ) set( CMAKE_OSX_DEPLOYMENT_TARGET 10.7 CACHE INTERNAL "" ) - set( CMAKE_OSX_SYSROOT macosx CACHE INTERNAL "" ) +# set( CMAKE_OSX_SYSROOT macosx CACHE INTERNAL "" ) set( CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" CACHE INTERNAL "" ) # This prevents a link error when building with the 10.9 or older SDKs set( CMAKE_XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME OFF ) # Shouldn't cmake do this??? - string( APPEND CMAKE_CXX_FLAGS " -stdlib=libc++" ) +# string( APPEND CMAKE_CXX_FLAGS " -stdlib=libc++" ) endif() # Add our module path @@ -74,12 +74,14 @@ set( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake-proxies/cmake-modules) set( CMAKE_CXX_STANDARD 14 ) set( CMAKE_CXX_STANDARD_REQUIRED ON ) -# Use ccache if available -find_program( CCACHE_PROGRAM ccache ) -mark_as_advanced( FORCE CCACHE_PROGRAM ) +# Use ccache if requested +if( ${CMAKE_CXX_COMPILER_LAUNCHER} MATCHES "ccache" ) + set( CCACHE_PROGRAM "${CMAKE_CXX_COMPILER_LAUNCHER}" ) + mark_as_advanced( FORCE CCACHE_PROGRAM ) -if( CCACHE_PROGRAM ) - set_property( GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}" ) +# if( CCACHE_PROGRAM ) +# set_property( GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}" ) +# endif() endif() # Our very own project @@ -203,6 +205,7 @@ if( CMAKE_CONFIGURATION_TYPES ) else() set( _DESTDIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}" ) endif() +set( _DESTDIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) set( _DEST "${_DESTDIR}" ) set( _PREFIX "${CMAKE_INSTALL_PREFIX}" ) diff --git a/src/orig.CMakeLists.txt b/src/CMakeLists.txt index 93dc50c..2a0c014 100644 --- a/src/orig.CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1095,6 +1095,11 @@ list( APPEND LIBRARIES $<$:z> $<$:pthread> ) +if( CMAKE_SYSTEM_NAME MATCHES "Linux" ) + list( APPEND LIBRARIES + PRIVATE + $<$:atomic>) +endif() set( BUILDING_AUDACITY YES ) set( INSTALL_PREFIX "${_PREFIX}" ) @@ -1182,22 +1187,23 @@ if( CMAKE_SYSTEM_NAME MATCHES "Windows" ) POST_BUILD ) elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) - # Bug 2400 workaround - # - # Replaces the SDK version in the built executable with 10.13 to - # prevent high CPU usage and slow drawing on Mojave or newer - check_for_platform_version() - if( PLATFORM_VERSION_SUPPORTED ) - list( APPEND LDFLAGS - PRIVATE - -Wl,-platform_version,macos,10.7,10.13 - ) - else() - list( APPEND LDFLAGS - PRIVATE - -Wl,-sdk_version,10.13 - ) - endif() +## MacPorts will specify the SDK to use itself, thank you very much +# # Bug 2400 workaround +# # +# # Replaces the SDK version in the built executable with 10.13 to +# # prevent high CPU usage and slow drawing on Mojave or newer +# check_for_platform_version() +# if( PLATFORM_VERSION_SUPPORTED ) +# list( APPEND LDFLAGS +# PRIVATE +# -Wl,-platform_version,macos,10.7,10.13 +# ) +# else() +# list( APPEND LDFLAGS +# PRIVATE +# -Wl,-sdk_version,10.13 +# ) +# endif() # Define Mac specific resources list( APPEND MAC_RESOURCES @@ -1240,6 +1246,9 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) "-framework AudioUnit" "-framework CoreAudio" "-framework CoreAudioKit" + "-framework AudioToolbox" + "-framework Cocoa" + "-framework Carbon" ) # Use the Aqua theme @@ -1365,6 +1374,13 @@ source_group( target_sources( ${TARGET} PRIVATE ${HEADERS} ${SOURCES} ${RESOURCES} ${MAC_RESOURCES} ${WIN_RESOURCES} ) target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} ) + +set_property(SOURCE effects/VST/VSTEffect.cpp APPEND PROPERTY COMPILE_DEFINITIONS LIBDIR="${CMAKE_INSTALL_FULL_LIBDIR}") +set_property(SOURCE effects/ladspa/LadspaEffect.cpp APPEND PROPERTY COMPILE_DEFINITIONS LIBDIR="${CMAKE_INSTALL_FULL_LIBDIR}") +set_property(SOURCE effects/lv2/LoadLV2.cpp APPEND PROPERTY COMPILE_DEFINITIONS LIBDIR="${CMAKE_INSTALL_FULL_LIBDIR}") +set_property(SOURCE effects/lv2/LoadLV2.cpp APPEND PROPERTY COMPILE_DEFINITIONS PKGLIBDIR="${PKGLIBDIR}") +set_property(SOURCE export/ExportMP3.cpp APPEND PROPERTY COMPILE_DEFINITIONS LIBDIR="${CMAKE_INSTALL_FULL_LIBDIR}") + target_compile_options( ${TARGET} PRIVATE ${OPTIONS} ) target_include_directories( ${TARGET} PRIVATE ${INCLUDES} ) target_link_options( ${TARGET} PRIVATE ${LDFLAGS} ) @@ -1373,7 +1389,7 @@ target_link_libraries( ${TARGET} PRIVATE ${LIBRARIES} ) # If was have cmake 3.16 or higher, we can use precompiled headers, but # only use them if ccache is not available and the user hasn't disabled # it. -if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" AND NOT CCACHE_PROGRAM ) +if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" ) cmd_option( ${_OPT}use_pch "Use precompiled headers [yes, no]" @@ -1390,10 +1406,9 @@ endif() if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" ) if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) - install( FILES "${_DEST}/Info.plist" - DESTINATION "${CMAKE_INSTALL_BINDIR}/Audacity.app/Contents" ) - install( PROGRAMS "${_EXEDIR}/${AUDACITY_NAME}" "${_EXEDIR}/Wrapper" - DESTINATION "${CMAKE_INSTALL_BINDIR}/Audacity.app/Contents/MacOS" ) + install( TARGETS ${TARGET} + DESTINATION "." + RESOURCE DESTINATION "${_APPDIR}/Resources" ) else() install( PROGRAMS "${_EXEDIR}/${AUDACITY_NAME}" TYPE BIN ) @@ -1403,12 +1418,12 @@ if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" ) FILES_MATCHING PATTERN "*.so" ) install( FILES "${_INTDIR}/audacity.desktop" DESTINATION "${_DATADIR}/applications" ) - install( FILES "${topdir}/LICENSE.txt" "${topdir}/README.txt" - DESTINATION "${_DATADIR}/doc/${AUDACITY_NAME}" ) - install( FILES "${_SRCDIR}/audacity.xml" - DESTINATION "${_DATADIR}/mime/packages" ) - install( FILES "${topdir}/presets/EQDefaultCurves.xml" - DESTINATION "${_PKGDATA}" ) endif() + install( FILES "${topdir}/LICENSE.txt" "${topdir}/README.txt" + DESTINATION "${_DATADIR}/doc/${AUDACITY_NAME}" ) + install( FILES "${_SRCDIR}/audacity.xml" + DESTINATION "${_DATADIR}/mime/packages" ) + install( FILES "${topdir}/presets/EQDefaultCurves.xml" + DESTINATION "${_PKGDATA}" ) endif() diff --git a/cmake-proxies/lv2/orig.CMakeLists.txt b/cmake-proxies/lv2/CMakeLists.txt index 289688e..af8d37a 100644 --- a/cmake-proxies/lv2/orig.CMakeLists.txt +++ b/cmake-proxies/lv2/CMakeLists.txt @@ -150,6 +150,9 @@ macro( bld name packages define sources ) "PkgConfig::${pkg}" ) endforeach() + if( ${name} STREQUAL "suil_qt5_in_cocoa") + list( APPEND libs PRIVATE "-framework Cocoa" ) + endif() if( NOT missing ) list( APPEND DEFINES @@ -187,7 +190,7 @@ if( WIN32 ) 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( LILV_DEFAULT_LV2_PATH "~/Library/Audio/Plug-Ins/LV2:~/.lv2:@PREFIX@/lib/lv2:/Library/Audio/Plug-Ins/LV2" ) set( SUIL_MODULE_DIR "" ) set( SUIL_DIR_SEP "" ) @@ -195,10 +198,18 @@ elseif( APPLE ) set( SUIL_GTK3_LIB_NAME "libgtk-x11-3.0.so.0" ) set( SUIL_MODULE_PREFIX "lib" ) set( SUIL_MODULE_EXT ".dylib" ) + option(audacity_use_suil_qt5 "Whether to build the suil_qt5_in_cocoa GUI library for LV2 plugins" OFF) + if( audacity_use_suil_qt5 ) + pkg_check_modules( QT5 IMPORTED_TARGET "Qt5Widgets >= 5.1.0" ) + bld( "suil_qt5_in_cocoa" + "QT5" + "SUIL_WITH_COCOA_IN_QT5" + "${TARGET_ROOT}/suil/src/cocoa_in_qt5.mm" ) + endif() elseif( UNIX ) set( LILV_PATH_SEP ":" ) set( LILV_DIR_SEP "/" ) - set( LILV_DEFAULT_LV2_PATH "~/.lv2:/usr/lib/lv2:/usr/local/lib/lv2" ) + set( LILV_DEFAULT_LV2_PATH "~/.lv2:@PREFIX@/lib/lv2:/usr/lib/lv2:/usr/local/lib/lv2" ) set( SUIL_MODULE_DIR "" ) set( SUIL_DIR_SEP "" )