More cmake updates

Added install target (this is mainly for Linux)
Added mod-nyq-bench

More to come...
This commit is contained in:
Leland Lucius 2020-02-06 01:17:20 -06:00
parent 54ba4e9b8a
commit f0e3ee2cde
9 changed files with 155 additions and 51 deletions

View File

@ -213,21 +213,24 @@ macro( def_vars )
set( _PUBDIR "${CMAKE_CURRENT_BINARY_DIR}/public" )
endmacro()
# And define the non-context dependent paths
set( _EXEDIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
# Define the non-install and executable destinations
set( _DEST "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
if( CMAKE_BUILD_TYPE )
set( _EXEDIR "${_EXEDIR}/${CMAKE_BUILD_TYPE}" )
set( _DEST "${_DEST}/${CMAKE_BUILD_TYPE}" )
endif()
set( _EXEDIR "${_DEST}" )
# On the Mac, make it the content directory
# Adjust them for the Mac
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( _EXEDIR "${_EXEDIR}/Audacity.app/Contents" )
set( _DEST "${_DEST}/Audacity.app/Contents" )
set( _EXEDIR "${_DEST}/Macos" )
endif()
set( _MODDIR "${_EXEDIR}/modules" )
set( _PREFIX "${CMAKE_INSTALL_PREFIX}" )
set( _LIBDIR "${CMAKE_INSTALL_LIBDIR}/audacity" )
set( _RPATH "\$ORIGIN/../${_LIBDIR}" )
set( _DATADIR "${CMAKE_INSTALL_DATADIR}" )
set( _PKGDATA "${_DATADIR}/audacity" )
# Helper to organize sources into folders for the IDEs
macro( organize_source root prefix sources )
@ -301,6 +304,7 @@ endmacro()
# Add our children
add_subdirectory( "cmake-proxies" )
add_subdirectory( "help" )
add_subdirectory( "images" )
add_subdirectory( "locale" )
add_subdirectory( "nyquist" )
add_subdirectory( "plug-ins" )

View File

@ -29,9 +29,8 @@ list( APPEND LIBRARIES
set_target_properties( ${TARGET}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY_DEBUG "${_MODDIR}"
LIBRARY_OUTPUT_DIRECTORY_RELEASE "${_MODDIR}"
LIBRARY_OUTPUT_DIRECTORY "${_MODDIR}"
LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${_DEST}/modules"
LIBRARY_OUTPUT_DIRECTORY "${_DEST}/modules"
PREFIX ""
FOLDER "lib-src"
)

View File

@ -32,9 +32,8 @@ list( APPEND LIBRARIES
set_target_properties( ${TARGET}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY_DEBUG "${_MODDIR}"
LIBRARY_OUTPUT_DIRECTORY_RELEASE "${_MODDIR}"
LIBRARY_OUTPUT_DIRECTORY "${_MODDIR}"
LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${_DEST}/modules"
LIBRARY_OUTPUT_DIRECTORY "${_DEST}/modules"
PREFIX ""
FOLDER "lib-src"
)

View File

@ -1,15 +1,17 @@
set( TARGET manual )
set( TARGET_ROOT ${topdir}/help )
set( TARGET_ROOT ${topdir}/manual )
message( STATUS "========== Configuring ${TARGET} ==========" )
def_vars()
set( host "alphamanual.audacityteam.org" )
set( src "https://${host}/man" )
set( dst "$<TARGET_FILE_DIR:Audacity>/help/manual" )
set( script_dir "${top_dir}/scripts/mw2html_audacity" )
set( dst "${_DEST}/help/manual" )
set( script_dir "${topdir}/scripts/mw2html_audacity" )
set( script "mw2html.py" )
set( out_dir "${CMAKE_CURRENT_BINARY_DIR}" )
set( out_dir "${_INTDIR}" )
set( out "${out_dir}/${host}/index.html" )
if( CMAKE_SYSTEM_NAME MATCHES "Windows" )
@ -43,4 +45,13 @@ add_custom_command(
)
add_custom_target( ${TARGET} DEPENDS "${out}" )
add_dependencies( ${TARGET} Audacity )
if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" )
install( DIRECTORY "${dst}" OPTIONAL
DESTINATION "${_DATADIR}/audacity/help" )
install( FILES "${_SRCDIR}/audacity.1"
DESTINATION "${_DATADIR}/man/man.1" )
install( FILES "${_SRCDIR}/audacity.appdata.xml"
DESTINATION "${_DATADIR}/appdata" )
endif()

26
images/CMakeLists.txt Executable file
View File

@ -0,0 +1,26 @@
set( TARGET images )
set( TARGET_ROOT ${topdir}/images )
message( STATUS "========== Configuring ${TARGET} ==========" )
def_vars()
# This isn't really a target...
list( APPEND PIXMAPS
${_SRCDIR}/gnome-mime-application-x-audacity-project.xpm
${_SRCDIR}/icons/16x16/audacity16.xpm
${_SRCDIR}/icons/32x32/audacity32.xpm
${_SRCDIR}/icons/48x48/audacity.xpm
)
if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" )
install( FILES "${_SRCDIR}/audacity.svg"
DESTINATION "${_DATADIR}/icons/hicolor/scalable/apps" )
install( DIRECTORY "${_SRCDIR}/icons/"
DESTINATION "${_DATADIR}/icons/hicolor" )
install( FILES ${PIXMAPS}
DESTINATION "${_DATADIR}/pixmaps" )
endif()

View File

@ -128,16 +128,24 @@ if( NOT DEFINED msgfmt )
return()
endif()
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( locale "${_DEST}/Resources" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Linux" )
set( locale "${_DEST}/locale" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( locale "${_DEST}/Languanges" )
endif()
set( OUTPUTS )
foreach( source ${SOURCES} )
get_filename_component( lang "${source}" NAME_WE )
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( dst "${_EXEDIR}/Resources/${lang}.lproj" )
set( dst "${locale}/${lang}.lproj" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Linux" )
set( dst "${_EXEDIR}/locale/${lang}/LC_MESSAGES" )
set( dst "${locale}/${lang}/LC_MESSAGES" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( dst "${_EXEDIR}/Languanges/${lang}" )
set( dst "${locale}/${lang}" )
endif()
set( po "${_SRCDIR}/${source}" )
@ -160,7 +168,7 @@ foreach( source ${SOURCES} )
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
add_custom_command(
COMMAND
${CMAKE_COMMAND} -E make_directory "${_EXEDIR}/Resources/en.lproj"
${CMAKE_COMMAND} -E make_directory "${_DEST}/Resources/en.lproj"
OUTPUT
"${mo}"
APPEND
@ -172,3 +180,8 @@ endforeach()
add_custom_target( "${TARGET}" ALL DEPENDS ${OUTPUTS} SOURCES "${SOURCES}" )
if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" )
install( DIRECTORY ${locale}/
TYPE LOCALE )
endif()

View File

@ -55,13 +55,13 @@ list( APPEND SOURCES
foreach( source ${SOURCES} )
set( src "${_SRCDIR}/${source}" )
set( dst "${_EXEDIR}/${TARGET}/${source}" )
set( dst "${_DEST}/${TARGET}/${source}" )
add_custom_command(
DEPENDS
"${src}"
COMMAND
${CMAKE_COMMAND} -E make_directory "${_EXEDIR}/${TARGET}"
${CMAKE_COMMAND} -E make_directory "${_DEST}/${TARGET}"
COMMAND
${CMAKE_COMMAND} -E copy "${src}" "${dst}"
OUTPUT
@ -73,3 +73,8 @@ endforeach()
add_custom_target( ${TARGET} ALL DEPENDS ${OUTPUTS} SOURCES ${SOURCES} )
if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" )
install( DIRECTORY "${_DEST}/${TARGET}"
DESTINATION "${_PKGDATA}" )
endif()

View File

@ -39,13 +39,13 @@ list( APPEND SOURCES
foreach( source ${SOURCES} )
set( src "${_SRCDIR}/${source}" )
set( dst "${_EXEDIR}/${TARGET}/${source}" )
set( dst "${_DEST}/${TARGET}/${source}" )
add_custom_command(
DEPENDS
"${src}"
COMMAND
${CMAKE_COMMAND} -E make_directory "${_EXEDIR}/${TARGET}"
${CMAKE_COMMAND} -E make_directory "${_DEST}/${TARGET}"
COMMAND
${CMAKE_COMMAND} -E copy "${src}" "${dst}"
OUTPUT
@ -57,3 +57,8 @@ endforeach()
add_custom_target( ${TARGET} ALL DEPENDS ${OUTPUTS} SOURCES ${SOURCES} )
if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" )
install( DIRECTORY "${_DEST}/${TARGET}"
DESTINATION "${_PKGDATA}" )
endif()

View File

@ -1025,6 +1025,7 @@ set( HAVE_GTK ${GTK_FOUND} )
set( DISABLE_DYNAMIC_LOADING_FFMPEG ${disable_dynamic_loading} )
if( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( _EXE "Audacity" )
set_directory_properties(
PROPERTIES
@ -1061,18 +1062,19 @@ if( CMAKE_SYSTEM_NAME MATCHES "Windows" )
set( wxlibs "${CMAKE_BINARY_DIR}" )
endif()
file( TO_NATIVE_PATH ${_EXEDIR} exedir )
file( TO_NATIVE_PATH ${_DEST} dest )
add_custom_command(
TARGET
${TARGET}
COMMAND
XCOPY "*.dll" ${exedir} /I /R /Y
XCOPY "*.dll" ${dest} /I /R /Y
WORKING_DIRECTORY
"${wxlibs}/lib/vc_dll"
POST_BUILD
)
elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( _EXE "Audacity" )
# Handle Audio Units option
option( enable_audiounits "Enable Audio Unit plug-in support" ON )
@ -1132,15 +1134,17 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set( AUDACITY_INFO_VERSION ${AUDACITY_VERSION}.${AUDACITY_RELEASE}.${AUDACITY_REVISION}.${AUDACITY_MODLEVEL} )
# Copy the wxWidgets libraries into the bundle
add_custom_command(
TARGET
${TARGET}
COMMAND
sh -c "TARGET_BUILD_DIR=${_EXEDIR} EXECUTABLE_PATH=MacOS/Audacity FRAMEWORKS_FOLDER_PATH=Frameworks ${topdir}/mac/scripts/install_wxlibs.sh"
WORKING_DIRECTORY
${CMAKE_BINARY_DIR}/lib
POST_BUILD
)
if( "${CMAKE_GENERATOR}" MATCHES "Xcode" )
add_custom_command(
TARGET
${TARGET}
COMMAND
sh -c "TARGET_BUILD_DIR=${_DEST} EXECUTABLE_PATH=${_EXEDIR}/${_EXE} FRAMEWORKS_FOLDER_PATH=Frameworks ${topdir}/mac/scripts/install_wxlibs.sh"
# WORKING_DIRECTORY
# ${CMAKE_BINARY_DIR}/lib
POST_BUILD
)
endif()
# Define the Wrapper target
add_executable( Wrapper )
@ -1157,9 +1161,8 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
set_target_properties(
"Wrapper"
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${_EXEDIR}/MacOS"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${_EXEDIR}/MacOS"
RUNTIME_OUTPUT_DIRECTORY "${_EXEDIR}/MacOS"
RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${_EXEDIR}"
RUNTIME_OUTPUT_DIRECTORY "${_EXEDIR}"
)
organize_source( "${WRAPPER_ROOT}" "mac" "${WRAPPER_SOURCES}" )
@ -1167,6 +1170,7 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
target_sources( "Wrapper" PRIVATE ${WRAPPER_SOURCES} )
elseif( CMAKE_SYSTEM_NAME MATCHES "Linux" )
set( _EXE "audacity" )
# Add additional library requirements
list( APPEND LIBRARIES
@ -1180,9 +1184,30 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Linux" )
set( HAVE_VISIBILITY 1 )
configure_file( audacity_config.h.in private/configunix.h )
# Create the MIMETYPES list (must be a better way...)
if( USE_FFMPEG)
list( APPEND MIMETYPES "audio/aac;audio/ac3;audio/mp4;audio/x-ms-wma;video/mpeg" )
endif()
if( USE_LIBFLAC)
list( APPEND MIMETYPES "audio/flac;audio/x-flac" )
endif()
if( USE_LIBMAD )
list( APPEND MIMETYPES "audio/mpeg" )
endif()
if( USE_SNDFILE )
list( APPEND MIMETYPES "audio/basic;audio/x-aiff;audio/x-wav" )
endif()
if( USE_LIBOGG AND USE_LIBVORBIS )
list( APPEND MIMETYPES "application/ogg;audio/x-vorbis+ogg" )
endif()
# Create the desktop file
set( AUDACITY_NAME "${_EXE}" )
configure_file( audacity.desktop.in ${_INTDIR}/audacity.desktop )
# Create the script to copy required wxWidgets libraries
file( WRITE "${_INTDIR}/copy_libs.sh"
"for lib in \$(ldd ${_EXEDIR}/Audacity | awk '/libwx/{print \$1}')
"for lib in \$(ldd ${_EXEDIR}/${_EXE} | awk '/libwx/{print \$1}')
do
echo \${lib}
ldd ${WXWIN}/lib/\${lib} | awk '/libwx/{print \$1}'
@ -1203,6 +1228,14 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Linux" )
endif()
set_target_properties(
${TARGET}
PROPERTIES
# Want a lowercase executable
RUNTIME_OUTPUT_NAME_${CMAKE_BUILD_TYPE} audacity
RUNTIME_OUTPUT_NAME ${_EXE}
)
find_package (Git)
if (GIT_FOUND)
execute_process(
@ -1222,17 +1255,6 @@ if (GIT_FOUND)
)
endif()
install(
TARGETS
${TARGET}
CONFIGURATIONS
"" Debug Release RelWithDebInfo RelWithDebInfo
RUNTIME DESTINATION
${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION
${CMAKE_INSTALL_BINDIR}
)
organize_source( "${TARGET_ROOT}/.." "include" "${HEADERS}" )
organize_source( "${TARGET_ROOT}/../win" "win" "${RESOURCES}" )
organize_source( "${TARGET_ROOT}" "src" "${SOURCES}" )
@ -1245,3 +1267,23 @@ target_link_options( "${TARGET}" PRIVATE ${LDFLAGS} )
target_link_libraries( ${TARGET} PRIVATE ${LIBRARIES} )
target_precompile_headers( ${TARGET} PRIVATE ${PRECOMP} )
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}/${_EXE}" "${_EXEDIR}/Wrapper"
DESTINATION "${CMAKE_INSTALL_BINDIR}/Audacity.app/Contents/MacOS" )
else()
install( PROGRAMS "${_EXEDIR}/${_EXE}"
TYPE BIN )
install( FILES "${_INTDIR}/audacity.desktop"
DESTINATION "${_DATADIR}/applications" )
install( FILES "${topdir}/LICENSE.txt" "${topdir}/README.txt"
DESTINATION "${_DATADIR}/doc" )
install( FILES "${_SRCDIR}/audacity.xml"
DESTINATION "${_DATADIR}/mime/packages" )
install( FILES "${topdir}/presets/EQDefaultCurves.xml"
DESTINATION "${_PKGDATA}" )
endif()
endif()