diff --git a/CMakeLists.txt b/CMakeLists.txt index 037b8c25be878525f1a43384f528e6fb4b922520..664a789b597aaee13eee8eca5ec7db1eb85b2f7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,82 +22,81 @@ set(Nootka_VERSION_FULL "${Nootka_VERSION}.${Nootka_VERSION_PATCH}") message(STATUS "\n${PROJECT_NAME}-${Nootka_VERSION_FULL}\n") set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/src) -set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/src) -if (UNIX AND NOT APPLE) # config with version number is generated once on developer platform - configure_file(${CMAKE_SOURCE_DIR}/src/nootkaconfig.h.in ${CMAKE_SOURCE_DIR}/src/core/nootkaconfig.h) +if(UNIX AND NOT APPLE) # config with version number is generated once on developer platform + configure_file(${CMAKE_SOURCE_DIR}/src/nootkaconfig.h.in ${CMAKE_SOURCE_DIR}/src/core/nootkaconfig.h) endif (UNIX AND NOT APPLE) -if (APPLE) - install( CODE " - execute_process( - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/nootka.app/Contents) - ") -endif (APPLE) +if(APPLE) + install(CODE " + execute_process( + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/nootka.app/Contents) + " + ) +endif () ########################################################################### #INSTALLATION ########################################################################### if(WIN32) - set(PACKAGE_ARCHITECTURE x86) - option(COPY_GCC_LIBS "Copy compiler specific libraries during install target" ON) + set(PACKAGE_ARCHITECTURE x86) + option(COPY_GCC_LIBS "Copy compiler specific libraries during install target" ON) endif(WIN32) -if(APPLE) +if(APPLE) # TODO: Apple Silicon set(PACKAGE_ARCHITECTURE x86_64) endif(APPLE) if(NOT PACKAGE_ARCHITECTURE) - find_program(DPKG_CMD dpkg) - if(NOT DPKG_CMD) - find_program(RPM_CMD rpm) - if(NOT RPM_CMD) -# message(STATUS "Can not find any program to determine architecture, default to i386.") -# set(PACKAGE_ARCHITECTURE i386) - execute_process(COMMAND uname -m - OUTPUT_VARIABLE PACKAGE_ARCHITECTURE - OUTPUT_STRIP_TRAILING_WHITESPACE + find_program(DPKG_CMD dpkg) + if (DPKG_CMD) + execute_process(COMMAND + "${DPKG_CMD}" --print-architecture + OUTPUT_VARIABLE PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE ) - else(NOT RPM_CMD) - execute_process(COMMAND "${RPM_CMD}" --eval %_target_cpu - OUTPUT_VARIABLE PACKAGE_ARCHITECTURE - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - set(RPM_CMD_FOUND TRUE) - endif(NOT RPM_CMD) - else(NOT DPKG_CMD) - execute_process(COMMAND "${DPKG_CMD}" --print-architecture - OUTPUT_VARIABLE PACKAGE_ARCHITECTURE - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - add_definitions(-D_FORTIFY_SOURCE=2) # for lintian DEB_BUILD_HARDENING_FORTIFY - endif(NOT DPKG_CMD) -endif(NOT PACKAGE_ARCHITECTURE) + else() + find_program(RPM_CMD rpm) + if (RPM_CMD) + execute_process(COMMAND + "${RPM_CMD}" --eval %_target_cpu + OUTPUT_VARIABLE PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + set(RPM_CMD_FOUND TRUE) + else() + execute_process(COMMAND + uname -m + OUTPUT_VARIABLE PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + endif() +endif() message(STATUS "Architecture is ${PACKAGE_ARCHITECTURE}") + if (NOT DPKG_CMD) unset(DPKG_CMD) -endif (NOT DPKG_CMD) +endif () add_subdirectory(src) if(WIN32) set(INS_PREF ".") -else(WIN32) - if (APPLE) - set(INS_PREF "nootka.app/Contents/Resources") - else(APPLE) - set(INS_PREF "share/nootka") - endif(APPLE) -endif(WIN32) - +else() + if (APPLE) + set(INS_PREF "nootka.app/Contents/Resources") + else() + set(INS_PREF "share/nootka") + endif() +endif() if(APPLE) - install(FILES "${CMAKE_SOURCE_DIR}/picts/nootka.icns" DESTINATION "${INS_PREF}") # icns for mac - install(FILES "${CMAKE_SOURCE_DIR}/picts/nootka-levels.icns" DESTINATION "${INS_PREF}") - install(FILES "${CMAKE_SOURCE_DIR}/picts/nootka-exam.icns" DESTINATION "${INS_PREF}") - install(FILES "${CMAKE_SOURCE_DIR}/packaging/mac/qt.conf" DESTINATION "${INS_PREF}") -endif(APPLE) - + install(FILES "${CMAKE_SOURCE_DIR}/picts/nootka.icns" DESTINATION "${INS_PREF}") # icns for mac + install(FILES "${CMAKE_SOURCE_DIR}/picts/nootka-levels.icns" DESTINATION "${INS_PREF}") + install(FILES "${CMAKE_SOURCE_DIR}/picts/nootka-exam.icns" DESTINATION "${INS_PREF}") + install(FILES "${CMAKE_SOURCE_DIR}/packaging/mac/qt.conf" DESTINATION "${INS_PREF}") +endif() install(FILES changes DESTINATION "${INS_PREF}") file(GLOB ICONS_PNG "${CMAKE_CURRENT_SOURCE_DIR}/picts/*.png") #png-s for all @@ -109,17 +108,17 @@ install(DIRECTORY fonts DESTINATION "${INS_PREF}") install(DIRECTORY "levels/" DESTINATION "${INS_PREF}/levels") if(APPLE OR WIN32) - if (APPLE) - install(FILES LICENSE DESTINATION "${INS_PREF}" RENAME gpl) - else() # specially encoded license file for Windows installer - install(FILES packaging/nsis/LICENSE-utf16le DESTINATION "${INS_PREF}" RENAME gpl) - endif() -endif(APPLE OR WIN32) + if (APPLE) + install(FILES LICENSE DESTINATION "${INS_PREF}" RENAME gpl) + else() # specially encoded license file for Windows installer + install(FILES packaging/nsis/LICENSE-utf16le DESTINATION "${INS_PREF}" RENAME gpl) + endif() +endif() if(APPLE) - file(GLOB MIME_TRANS "${CMAKE_CURRENT_SOURCE_DIR}/packaging/mac/*.lproj" ) - install(DIRECTORY ${MIME_TRANS} DESTINATION ${INS_PREF}) -endif(APPLE) + file(GLOB MIME_TRANS "${CMAKE_CURRENT_SOURCE_DIR}/packaging/mac/*.lproj" ) + install(DIRECTORY ${MIME_TRANS} DESTINATION ${INS_PREF}) +endif() file(GLOB snds "${CMAKE_CURRENT_SOURCE_DIR}/sounds/*.ogg") @@ -159,42 +158,43 @@ if(UNIX AND NOT APPLE) install(FILES picts/hicolor/128x128/mimetypes/nootkalevel.png DESTINATION share/icons/hicolor/128x128/mimetypes/) install(FILES picts/nootka-level.png DESTINATION share/icons/hicolor/256x256/mimetypes/ RENAME nootkalevel.png) install(FILES picts/hicolor/512x512/mimetypes/nootkalevel.png DESTINATION share/icons/hicolor/512x512/mimetypes/) - install( CODE " - execute_process(COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/doc ) - execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/packaging/make-chlog.sh ${Nootka_VERSION_FULL} ${CMAKE_CURRENT_BINARY_DIR}/doc/changelog ${CMAKE_CURRENT_SOURCE_DIR}) - " ) - if (DPKG_CMD) # Debian changelog - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/doc/changelog.Debian.gz" DESTINATION share/doc/nootka) - endif (DPKG_CMD) - install(FILES packaging/debian/copyright DESTINATION share/doc/nootka) - install(FILES packaging/nootka.1.gz DESTINATION share/man/man1) -endif(UNIX AND NOT APPLE) + install(CODE " + execute_process(COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/doc ) + execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/packaging/make-chlog.sh ${Nootka_VERSION_FULL} ${CMAKE_CURRENT_BINARY_DIR}/doc/changelog ${CMAKE_CURRENT_SOURCE_DIR}) + ") + if (DPKG_CMD) # Debian changelog + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/doc/changelog.Debian.gz" DESTINATION share/doc/nootka) + endif () + install(FILES packaging/debian/copyright DESTINATION share/doc/nootka) + install(FILES packaging/nootka.1.gz DESTINATION share/man/man1) +endif() if(WIN32) - get_filename_component(MAKE_DIR "${CMAKE_RC_COMPILER}" DIRECTORY) # it works ether with make and ninja - install(FILES picts/nootka-exam.ico picts/nootka.ico picts/nootka-levels.ico picts/pack.ico picts/logo.bmp picts/logo-left.bmp DESTINATION "${INS_PREF}/picts") #ico - install(FILES packaging/nsis/nootka-utf16.nsi packaging/nsis/fileasoc.nsh ${CMAKE_BINARY_DIR}/nsis/NSIS.definitions.nsh DESTINATION "${INS_PREF}") - install(FILES packaging/nsis/qt.conf DESTINATION "${INS_PREF}") - if (COPY_GCC_LIBS) - install(FILES "${MAKE_DIR}/libgcc_s_dw2-1.dll" "${MAKE_DIR}/libstdc++-6.dll" "${MAKE_DIR}/libwinpthread-1.dll" DESTINATION "${INS_PREF}") - endif() -endif(WIN32) + get_filename_component(MAKE_DIR "${CMAKE_RC_COMPILER}" DIRECTORY) # it works ether with make and ninja + install(FILES picts/nootka-exam.ico picts/nootka.ico picts/nootka-levels.ico picts/pack.ico picts/logo.bmp picts/logo-left.bmp DESTINATION "${INS_PREF}/picts") #ico + install(FILES packaging/nsis/nootka-utf16.nsi packaging/nsis/fileasoc.nsh ${CMAKE_BINARY_DIR}/nsis/NSIS.definitions.nsh DESTINATION "${INS_PREF}") + install(FILES packaging/nsis/qt.conf DESTINATION "${INS_PREF}") + if (COPY_GCC_LIBS) + install(FILES "${MAKE_DIR}/libgcc_s_dw2-1.dll" "${MAKE_DIR}/libstdc++-6.dll" "${MAKE_DIR}/libwinpthread-1.dll" DESTINATION "${INS_PREF}") + endif() +endif() ########################################################################### # uninstall target ########################################################################### configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY +) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake ) -add_subdirectory( lang ) +add_subdirectory(lang) -add_subdirectory( packaging ) # deploy targets, cpack rules +add_subdirectory(packaging) # deploy targets, cpack rules # Uncomment below lines if you want to build any testing executable diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 6d9136f9eb01b223345a406ce2a278180394a372..5c5976b7173ab3f4dbbdfab0657df8cceb6bb0d5 100755 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -1,184 +1,74 @@ ########################################################################################## # CMakeList.txt packaging -########################################################################################## - -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Application to help with learning classical score notation") -set(CPACK_PACKAGE_VENDOR "Nootka") -set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/packaging/nootka-desc") -set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE") - -set(CPACK_PACKAGE_VERSION_MAJOR ${Nootka_VERSION_MAJOR}) -set(CPACK_PACKAGE_VERSION_MINOR ${Nootka_VERSION_MINOR}) -set(CPACK_PACKAGE_VERSION_PATCH ${Nootka_VERSION_PATCH}) -set(CPACK_PACKAGE_VERSION ${Nootka_VERSION_FULL}) - -set(CPACK_PACKAGE_CONTACT "See Look <seelook@gmail.com>") - -set(CPACK_PACKAGE_NAME "nootka") -set(CPACK_PACKAGE_FILE_NAME "nootka_${CPACK_PACKAGE_VERSION}_${PACKAGE_ARCHITECTURE}") - - -########################################################################################## -# cmake/cpack DEB generator -########################################################################################## -set(CPACK_DEBIAN_PACKAGE_NAME "nootka") #default CPACK_PACKAGE_NAME -# message(STATUS ${CPACK_DEBIAN_PACKAGE_NAME} ) -# CPACK_DEBIAN_PACKAGE_VERSION #CPACK_PACKAGE_VERSION -# PACKAGE_ARCHITECTURE #dpkg --print-architecture or i386 -# set(CPACK_DEBIAN_PACKAGE_NAME "nootka" ) - - -if (ENABLE_PULSEAUDIO) - set(DEB_DEPENDS "libpulse0,") -endif (ENABLE_PULSEAUDIO) - -# from Ubuntu 18.04 (Bionic) -set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.27), libqt5gui5 (>= 5.12), zlib1g, libqt5widgets5, libqt5printsupport5, libqt5network5, qttranslations5-l10n, qml-module-qtquick-controls, qml-module-qtquick-controls2, qml-module-qtquick-dialogs, ${DEB_DEPENDS} libfftw3-single3, libvorbisfile3, libsoundtouch1") -#CPACK_DEBIAN_PACKAGE_MAINTAINER #CPACK_PACKAGE_CONTACT -set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Application helps understand the basics of music notation, reading - and practicing playing musical scores. - ​Long story short: the user plays notes (melody) displayed by the app, - which then in real time checks if the note was played correctly. - . - Features: - . - interactive interface to discover the rules of musical notation - exercises with possibility to create own sets - importing melodies from musicxml, using them in exercises - accurate method for detecting sung and played sounds - support for different instruments (guitars, piano, sax, bandoneon) - clefs (treble, bass and others) and grand staff - analyze of results - charts with exercise details - . - https://nootka.sourceforge.io") #CPACK_PACKAGE_DESCRIPTION_SUMMARY -set(CPACK_DEBIAN_PACKAGE_SECTION "science") -# CPACK_DEBIAN_PACKAGE_PRIORITY #optional -set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://nootka.sourceforge.io") -# set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "timidity") -set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/debian/postrm" ) - - -########################################################################################## -# Resume ########################################################## -########################################################################################## - -if (WIN32) - set(CPACK_GENERATOR "NSIS;ZIP") - set(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_SOURCE_DIR}/picts/pack.ico") - -else (WIN32) - if (NOT APPLE) - set(CPACK_STRIP_FILES "nootka") - set(CPACK_GENERATOR "DEB") - set(CPACK_DEB "on") - endif (NOT APPLE) -endif (WIN32) - -include (CPack) - -########################################################################### +# # packaging targets (make src) -########################################################################### +########################################################################################## if(UNIX AND NOT APPLE) - message(STATUS " - To build source package, call: - make src - ") - - add_custom_target(src - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/src/make-src.sh ${Nootka_VERSION_FULL} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR} - ) -ENDIF(UNIX AND NOT APPLE) + message(STATUS + "\nTo build source package, call: + make src\n" + ) + add_custom_target(src + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/src/make-src.sh ${Nootka_VERSION_FULL} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR} + ) +ENDIF() ########################################################################### # installing target (make runinplace) - copy or link necessary files to run Nootka without install ########################################################################### -message(STATUS " - To enable launching nootka without installing, call: - make runinplace - Binary nootka is in src folder, so launch it invoking: ./src/nootka - ") - +message(STATUS + "\nTo enable launching nootka without installing, call: + make runinplace\nBinary nootka is in src folder, so launch it invoking: ./src/nootka\n" +) find_package(Qt6Core) get_target_property(QtCore_location_Release Qt6::Core LOCATION_Release) get_filename_component(QT_BINARY_DIR "${QtCore_location_Release}" DIRECTORY) if(WIN32) - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/nsis/definitions.nsh.in - ${CMAKE_BINARY_DIR}/nsis/NSIS.definitions.nsh - ) - - get_filename_component(VORBIS_DIR "${VORBIS_LIBRARIES}" DIRECTORY) - get_filename_component(MAKE_DIR "${CMAKE_RC_COMPILER}" DIRECTORY) - - add_custom_target(deploy - COMMAND echo "deploying..." - COMMAND ${QT_BINARY_DIR}/windeployqt.exe ${CMAKE_INSTALL_PREFIX}/nootka.exe ${CMAKE_INSTALL_PREFIX}/libNootkaSound.dll --no-translations --no-svg --qmldir "${CMAKE_SOURCE_DIR}/src/qml" - ) - - add_custom_target(runinplace - COMMAND echo - COMMAND echo Copying libraries... - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_BINARY_DIR}/Qt6Core.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_BINARY_DIR}/Qt6Gui.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_BINARY_DIR}/Qt6Widgets.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_BINARY_DIR}/Qt6Network.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_BINARY_DIR}/Qt6PrintSupport.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/src/plugins/platforms - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_BINARY_DIR}/../plugins/platforms/qwindows.dll ${CMAKE_BINARY_DIR}/src/plugins/platforms/. - - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FFTW3_LIBRARIES} ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VORBIS_LIBRARIES} ${CMAKE_BINARY_DIR}/src/. #libvorbisfile.dll - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VORBIS_DIR}/libvorbis.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VORBIS_DIR}/libogg.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MAKE_DIR}/libgcc_s_dw2-1.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MAKE_DIR}/libstdc++-6.dll ${CMAKE_BINARY_DIR}/src/. - COMMAND echo Copying files... - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/gpl ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/changes ${CMAKE_BINARY_DIR}/src/. - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/src/fonts - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/fonts/nootka.ttf ${CMAKE_BINARY_DIR}/src/fonts/. - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/src/picts - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/picts ${CMAKE_BINARY_DIR}/src/picts/. - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/src/lang - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/lang ${CMAKE_BINARY_DIR}/src/lang/. - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/src/sounds - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/sounds ${CMAKE_BINARY_DIR}/src/sounds/. - COMMAND echo - ) -ELSE(WIN32) - if (APPLE) - set(LINK_PATH "${CMAKE_BINARY_DIR}/Resources") - else (APPLE) - set(LINK_PATH "${CMAKE_BINARY_DIR}") - endif (APPLE) - add_custom_target(runinplace - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make-noinstall.sh ${CMAKE_SOURCE_DIR} ${LINK_PATH} - ) -ENDIF(WIN32) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/nsis/definitions.nsh.in + ${CMAKE_BINARY_DIR}/nsis/NSIS.definitions.nsh + ) + + get_filename_component(VORBIS_DIR "${VORBIS_LIBRARIES}" DIRECTORY) + get_filename_component(MAKE_DIR "${CMAKE_RC_COMPILER}" DIRECTORY) + + add_custom_target(deploy + COMMAND echo "deploying..." + COMMAND ${QT_BINARY_DIR}/windeployqt.exe ${CMAKE_INSTALL_PREFIX}/nootka.exe ${CMAKE_INSTALL_PREFIX}/libNootkaSound.dll --no-translations --no-svg --qmldir "${CMAKE_SOURCE_DIR}/src/qml" + ) +else() + if (APPLE) + set(LINK_PATH "${CMAKE_BINARY_DIR}/Resources") + else () + set(LINK_PATH "${CMAKE_BINARY_DIR}") + endif () + add_custom_target(runinplace + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make-noinstall.sh ${CMAKE_SOURCE_DIR} ${LINK_PATH} + ) +endif() if (APPLE) - add_custom_target(deploy - COMMAND echo "deploying..." - COMMAND echo ${QT_BINARY_DIR}/../../bin - COMMAND ${QT_BINARY_DIR}/../../bin/macdeployqt ${CMAKE_INSTALL_PREFIX}/nootka.app -qmldir=${CMAKE_SOURCE_DIR}/src/qml - ) - - add_custom_target(dmg - COMMAND echo "creating dmg image..." - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mac/create-dmg.sh ${Nootka_VERSION_FULL} ${CMAKE_SOURCE_DIR} ${CMAKE_INSTALL_PREFIX} - ) -endif(APPLE) + add_custom_target(deploy + COMMAND echo "deploying..." + COMMAND echo ${QT_BINARY_DIR}/../../bin + COMMAND ${QT_BINARY_DIR}/../../bin/macdeployqt ${CMAKE_INSTALL_PREFIX}/nootka.app -qmldir=${CMAKE_SOURCE_DIR}/src/qml + ) + + add_custom_target(dmg + COMMAND echo "creating dmg image..." + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mac/create-dmg.sh ${Nootka_VERSION_FULL} ${CMAKE_SOURCE_DIR} ${CMAKE_INSTALL_PREFIX} + ) +endif() -if (UNIX AND NOT APPLE) +# if (UNIX AND NOT APPLE) # appimage target # To correctly generate AppImage set install prefix to '/usr' # and when using with older Linux system (i.e. Ubuntu Trusty 14.04) # call # cmake with -DQT_QMAKE_EXECUTABLE=/opt/qtXX/bin/qmake - add_custom_target(appimage - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/appimage/make-appimage.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${QT_QMAKE_EXECUTABLE} ${Nootka_VERSION_FULL} - ) -endif() + # add_custom_target(appimage + # COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/appimage/make-appimage.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${QT_QMAKE_EXECUTABLE} ${Nootka_VERSION_FULL} + # ) +# endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e704b85e9e240f167a2b2e20d80cca4a4522a741..0f94cd27ba5fe01b1ff56e5722203e3a197dce50 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,36 +18,6 @@ if(UNIX AND NOT APPLE) endif(PACKAGE_ARCHITECTURE MATCHES "arm" OR PACKAGE_ARCHITECTURE MATCHES "aarch64") endif(UNIX AND NOT APPLE) - -if(UNIX AND NOT APPLE) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") -# rpath rules - option(OBS_SUSE_QUIRKS "Must be ON for Suse machines in Open Build Services" OFF) - - if (NOT WITH_STATIC_LIB) # no rpaths when Nootka libraries are linked statically - set(NOOTKA_LIB_PATH "${CMAKE_INSTALL_PREFIX}/lib/nootka") - set(CMAKE_SKIP_BUILD_RPATH FALSE) # use, i.e. don't skip the full RPATH for the build tree - if(OBS_SUSE_QUIRKS) - set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - message("Build for Suse OBS") - else(OBS_SUSE_QUIRKS) - set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # when building, don't use the install RPATH already (but later on when installing) - endif(OBS_SUSE_QUIRKS) - set(CMAKE_INSTALL_RPATH "${NOOTKA_LIB_PATH}") - # add the automatically determined parts of the RPATH - # which point to directories outside the build tree to the install RPATH - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) - - # the RPATH to be used when installing, but only if it's not a system directory - list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${NOOTKA_LIB_PATH}" isSystemDir) - if("${isSystemDir}" STREQUAL "-1") - set(CMAKE_INSTALL_RPATH "${NOOTKA_LIB_PATH}") - endif("${isSystemDir}" STREQUAL "-1") - endif (NOT WITH_STATIC_LIB) -endif(UNIX AND NOT APPLE) - if (APPLE) # Mac RPath set(CMAKE_MACOSX_RPATH 1) set(CMAKE_INSTALL_RPATH "@loader_path/../Frameworks") @@ -55,18 +25,15 @@ if (APPLE) # Mac RPath endif (APPLE) if (CMAKE_BUILD_TYPE MATCHES Debug) - add_definitions(-DQT_QML_DEBUG) + add_definitions(-DQT_QML_DEBUG) endif () - -option (WITH_STATIC_LIB "Link Nootka libraries statically - used for AppImage" OFF) - qt_add_executable(nootka WIN32) -add_subdirectory( core ) -add_subdirectory( sound ) +add_subdirectory(core) +add_subdirectory(sound) -include_directories( core sound ) +include_directories(core sound) # nootka executable set(NOOTKA_SRC @@ -120,10 +87,8 @@ set(NOOTKA_SRC nootini/taudioanalyzeitem.cpp ) - option(ENABLE_UPDATER "Enable online checking for new Nootka versions" ON) - if(ENABLE_UPDATER) message(STATUS "check for updates\t\t TRUE") find_package(Qt6Network) @@ -151,8 +116,6 @@ qt_add_resources(NOOTKA_SRC nootka.qrc) include_directories( core/music core/score ) qt_add_qml_module(nootka URI "Nootka.Music" - OUTPUT_DIRECTORY - "${CMAKE_BINARY_DIR}/src" SOURCES core/taction.cpp core/taction.h @@ -211,17 +174,17 @@ target_link_libraries(nootka PUBLIC Qt6::Core5Compat ) -if(UNIX AND NOT APPLE) # Linux path for Nootka binary - install(TARGETS nootka DESTINATION bin) -else(UNIX AND NOT APPLE) - if(WIN32) # Windows - install(TARGETS nootka DESTINATION .) - else(WIN32) # MacOs - install(TARGETS nootka DESTINATION "${CMAKE_INSTALL_PREFIX}/nootka.app/Contents/MacOs") - install( CODE " - execute_process(COMMAND echo copying info.plist ) - execute_process(COMMAND sh ${CMAKE_SOURCE_DIR}/packaging/mac/grabInfo.sh ${Nootka_VERSION_FULL} ${CMAKE_SOURCE_DIR} ${CMAKE_INSTALL_PREFIX} )" - ) - endif(WIN32) -endif(UNIX AND NOT APPLE) +if(UNIX AND NOT APPLE) # Linux path for Nootka binary + install(TARGETS nootka DESTINATION bin) +else() + if(WIN32) # Windows + install(TARGETS nootka DESTINATION .) + else() # MacOs + install(TARGETS nootka DESTINATION "${CMAKE_INSTALL_PREFIX}/nootka.app/Contents/MacOs") + install(CODE " + execute_process(COMMAND echo copying info.plist ) + execute_process(COMMAND sh ${CMAKE_SOURCE_DIR}/packaging/mac/grabInfo.sh ${Nootka_VERSION_FULL} ${CMAKE_SOURCE_DIR} ${CMAKE_INSTALL_PREFIX} )" + ) + endif() +endif()