diff --git a/buildscripts/cmake/DeclareModuleSetup.cmake b/buildscripts/cmake/DeclareModuleSetup.cmake index 2f97eeac21c80..7b54be028e80b 100644 --- a/buildscripts/cmake/DeclareModuleSetup.cmake +++ b/buildscripts/cmake/DeclareModuleSetup.cmake @@ -18,13 +18,149 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# - Creates a target and sets up common properties for Muse modules +function(muse_create_module target_name) + set(options NO_QT NO_PCH NO_UNITY STUB) + set(oneValueArgs ALIAS) + cmake_parse_arguments(PARSE_ARGV 1 arg "${options}" "${oneValueArgs}" "") + + # Status message + set(message "Configuring ${target_name}") + if (arg_ALIAS) + set(message "${message} <${arg_ALIAS}>") + endif() + if (arg_STUB) + set(message "${message} [stub]") + endif() + message(STATUS "${message}") + + # Create target + if (NOT arg_NO_QT AND QT_SUPPORT) + # STATIC/SHARED based on BUILD_SHARED_LIBS, which is set in SetupBuildEnvironment.cmake + qt_add_library(${target_name}) + else() + # STATIC/SHARED based on BUILD_SHARED_LIBS, which is set in SetupBuildEnvironment.cmake + add_library(${target_name}) + + set_target_properties(${target_name} PROPERTIES + AUTOMOC OFF + AUTOUIC OFF + AUTORCC OFF + ) + endif() + + # Alias target + if (arg_ALIAS) + add_library(${arg_ALIAS} ALIAS ${target_name}) + endif() + + # Include directories + if (NOT MUSE_FRAMEWORK_PATH) + set(MUSE_FRAMEWORK_PATH ${PROJECT_SOURCE_DIR}) + endif() + + target_include_directories(${target_name} PRIVATE + ${PROJECT_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + + ${PROJECT_SOURCE_DIR}/src + + ${MUSE_FRAMEWORK_PATH} + ${MUSE_FRAMEWORK_PATH}/framework + ${MUSE_FRAMEWORK_PATH}/framework/global + ${MUSE_FRAMEWORK_PATH}/framework/testing/thirdparty/googletest/googletest/include + + # compat + ${MUSE_FRAMEWORK_PATH}/src + ${MUSE_FRAMEWORK_PATH}/src/framework + ${MUSE_FRAMEWORK_PATH}/src/framework/global + ${MUSE_FRAMEWORK_PATH}/src/framework/testing/thirdparty/googletest/googletest/include + # end compat + ) + + # Precompiled header + if (NOT arg_NO_PCH AND MUSE_COMPILE_USE_PCH) + if (${target_name} STREQUAL muse_global) + target_precompile_headers_clang_ccache(${target_name} PRIVATE ${MUSE_FRAMEWORK_PATH}/buildscripts/pch/pch.h) + else() + target_precompile_headers_clang_ccache(${target_name} REUSE_FROM muse_global) + target_compile_definitions(${target_name} PRIVATE muse_global_EXPORTS=1) + set(MODULE_LINK_GLOBAL ON) + endif() + endif() + + # Unity build + if (arg_NO_UNITY) + set_target_properties(${target_name} PROPERTIES UNITY_BUILD OFF) + elseif(MUSE_COMPILE_USE_UNITY) + set_target_properties(${target_name} PROPERTIES UNITY_BUILD ON) + endif() + + # Code coverage + if (MUSE_ENABLE_UNIT_TESTS_CODE_COVERAGE AND MODULE_USE_COVERAGE) + set(COVERAGE_FLAGS -fprofile-arcs -ftest-coverage --coverage) + target_compile_options(${target_name} PRIVATE ${COVERAGE_FLAGS}) + target_link_options(${target_name} PRIVATE -lgcov --coverage -fprofile-arcs -ftest-coverage) + endif() + + # Link with global module + if (NOT ${target_name} STREQUAL muse_global AND MODULE_LINK_GLOBAL) + target_link_libraries(${target_name} PRIVATE muse_global) + endif() +endfunction() + +function(muse_create_qml_module target_name) + set(oneValueArgs FOR) + cmake_parse_arguments(PARSE_ARGV 1 arg "" "${oneValueArgs}" "") + + muse_create_module(${target_name} ${arg_UNPARSED_ARGUMENTS}) + target_link_libraries(${target_name} INTERFACE ${target_name}plugin) + + if (arg_FOR) + get_target_property(_for_dir ${arg_FOR} SOURCE_DIR) + target_include_directories(${target_name} PRIVATE ${_for_dir}) + + target_link_libraries(${target_name} PRIVATE ${arg_FOR}) + endif() +endfunction() + +# - Creates a target and sets up common properties for Muse thirdparty modules +function(muse_create_thirdparty_module target_name) + set(oneValueArgs ALIAS) + cmake_parse_arguments(PARSE_ARGV 1 arg "" "${oneValueArgs}" "") + + # Status message + set(message "Configuring ${target_name}") + if (arg_ALIAS) + set(message "${message} <${arg_ALIAS}>") + endif() + message(STATUS "${message}") + + # Create target + # STATIC/SHARED based on BUILD_SHARED_LIBS, which is set in SetupBuildEnvironment.cmake + add_library(${target_name}) + + set_target_properties(${target_name} PROPERTIES + AUTOMOC OFF + AUTOUIC OFF + AUTORCC OFF + ) + + # Alias target + if (arg_ALIAS) + add_library(${arg_ALIAS} ALIAS ${target_name}) + endif() +endfunction() + +### LEGACY MACROS + ## Declare # declare_module(somename) - set module (target) name ## Setup # set(MODULE somename) - set module (target) name # set(MODULE_ALIAS somename) - set module (target) alias name -# set(MODULE_ROOT ${CMAKE_CURRENT_LIST_DIR}) - set module root # set(MODULE_INCLUDE ...) - set include (by default see below include_directories) # set(MODULE_INCLUDE_PRIVATE ...) - set private include # set(MODULE_DEF ...) - set definitions @@ -49,7 +185,6 @@ macro(declare_module name) set(MODULE ${name}) # just reset all settings unset(MODULE_ALIAS) - unset(MODULE_ROOT) unset(MODULE_INCLUDE) unset(MODULE_DEF) unset(MODULE_SRC) @@ -67,15 +202,6 @@ macro(declare_module name) set(MODULE_USE_COVERAGE ON) endmacro() -macro(declare_thirdparty_module name) - declare_module(${name}) - set(MODULE_USE_QT OFF) - set(MODULE_LINK_GLOBAL OFF) - set(MODULE_USE_PCH OFF) - set(MODULE_USE_COVERAGE OFF) -endmacro() - - macro(add_qml_import_path input_var) if (NOT ${${input_var}} STREQUAL "") set(QML_IMPORT_PATH "$CACHE{QML_IMPORT_PATH}") @@ -98,24 +224,32 @@ function(target_precompile_headers_clang_ccache target) endfunction() macro(setup_module) - if (MODULE_IS_STUB) - message(STATUS "Configuring ${MODULE} <${MODULE_ALIAS}> [stub]") - else() - message(STATUS "Configuring ${MODULE} <${MODULE_ALIAS}>") + set(ARGS) + + if (NOT MODULE_USE_QT) + list(APPEND ARGS NO_QT) endif() - if (MODULE_USE_QT AND QT_SUPPORT) - # STATIC/SHARED based on BUILD_SHARED_LIBS, which is set in SetupBuildEnvironment.cmake - qt_add_library(${MODULE} ${MODULE_SRC}) - else() - # STATIC/SHARED based on BUILD_SHARED_LIBS, which is set in SetupBuildEnvironment.cmake - add_library(${MODULE} ${MODULE_SRC}) + if (MODULE_IS_STUB) + list(APPEND ARGS STUB) endif() if (MODULE_ALIAS) - add_library(${MODULE_ALIAS} ALIAS ${MODULE}) + list(APPEND ARGS ALIAS ${MODULE_ALIAS}) endif() + if (NOT MODULE_USE_PCH) + list(APPEND ARGS NO_PCH) + endif() + + if (NOT MODULE_USE_UNITY) + list(APPEND ARGS NO_UNITY) + endif() + + muse_create_module(${MODULE} ${ARGS}) + + target_sources(${MODULE} PRIVATE ${MODULE_SRC}) + if (MODULE_USE_QT AND QT_SUPPORT) if (MODULE_QRC) qt_add_resources(RCC_SOURCES ${MODULE_QRC}) @@ -126,12 +260,6 @@ macro(setup_module) qt_add_big_resources(RCC_BIG_SOURCES ${MODULE_BIG_QRC}) target_sources(${MODULE} PRIVATE ${RCC_BIG_SOURCES}) endif() - else() - set_target_properties(${MODULE} PROPERTIES - AUTOMOC OFF - AUTOUIC OFF - AUTORCC OFF - ) endif() add_qml_import_path(MODULE_QML_IMPORT) @@ -145,49 +273,9 @@ macro(setup_module) set(MUSE_FRAMEWORK_PATH ${PROJECT_SOURCE_DIR}) endif() - if (MUSE_COMPILE_USE_PCH AND MODULE_USE_PCH) - if (${MODULE} STREQUAL muse_global) - target_precompile_headers_clang_ccache(${MODULE} PRIVATE ${MUSE_FRAMEWORK_PATH}/buildscripts/pch/pch.h) - else() - target_precompile_headers_clang_ccache(${MODULE} REUSE_FROM muse_global) - target_compile_definitions(${MODULE} PRIVATE muse_global_EXPORTS=1) - - set(MODULE_LINK_GLOBAL ON) - endif() - endif() - - if (MUSE_COMPILE_USE_UNITY) - if (MODULE_USE_UNITY) - set_target_properties(${MODULE} PROPERTIES UNITY_BUILD ON) - else() - set_target_properties(${MODULE} PROPERTIES UNITY_BUILD OFF) - endif() - endif() - - target_include_directories(${MODULE} PUBLIC - ${MODULE_INCLUDE} - ) - - target_include_directories(${MODULE} PRIVATE - ${PROJECT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${MODULE_ROOT} - - ${PROJECT_SOURCE_DIR}/src - - ${MUSE_FRAMEWORK_PATH} - ${MUSE_FRAMEWORK_PATH}/framework - ${MUSE_FRAMEWORK_PATH}/framework/global - ${MUSE_FRAMEWORK_PATH}/framework/testing/thirdparty/googletest/googletest/include - - # compat - ${MUSE_FRAMEWORK_PATH}/src - ${MUSE_FRAMEWORK_PATH}/src/framework - ${MUSE_FRAMEWORK_PATH}/src/framework/global - ${MUSE_FRAMEWORK_PATH}/src/framework/testing/thirdparty/googletest/googletest/include - # end compat - - ${MODULE_INCLUDE_PRIVATE} + target_include_directories(${MODULE} + PRIVATE ${MODULE_INCLUDE_PRIVATE} + PUBLIC ${MODULE_INCLUDE} ) target_compile_definitions(${MODULE} PUBLIC @@ -199,18 +287,8 @@ macro(setup_module) ${MODULE_DEF_PRIVATE} ) - if (MUSE_ENABLE_UNIT_TESTS_CODE_COVERAGE AND MODULE_USE_COVERAGE) - set(COVERAGE_FLAGS -fprofile-arcs -ftest-coverage --coverage) - target_compile_options(${MODULE} PRIVATE ${COVERAGE_FLAGS}) - target_link_options(${MODULE} PRIVATE -lgcov --coverage) - endif() - - if (NOT ${MODULE} MATCHES muse_global AND MODULE_LINK_GLOBAL) - target_link_libraries(${MODULE} PRIVATE muse_global) - endif() - target_link_libraries(${MODULE} - PRIVATE ${MODULE_LINK} ${COVERAGE_FLAGS} + PRIVATE ${MODULE_LINK} PUBLIC ${MODULE_LINK_PUBLIC} ) endmacro() diff --git a/buildscripts/cmake/SetupSndFile.cmake b/buildscripts/cmake/SetupSndFile.cmake index 1b9a2d592b518..a0e58e10a309e 100644 --- a/buildscripts/cmake/SetupSndFile.cmake +++ b/buildscripts/cmake/SetupSndFile.cmake @@ -14,9 +14,9 @@ elseif (OS_IS_WASM) set(LIBVORBIS_PATH "" CACHE PATH "Path to libogg sources") set(SNDFILE_INCDIR LIBSND_PATH) - declare_thirdparty_module(sndfile) + muse_create_thirdparty_module(sndfile) - set(MODULE_SRC + target_sources(sndfile PRIVATE ${LIBSND_PATH}/sndfile.c ${LIBSND_PATH}/sndfile.hh ${LIBSND_PATH}/command.c @@ -57,16 +57,14 @@ elseif (OS_IS_WASM) ${LIBVORBIS_PATH}/lib/vorbisfile.c ${LIBVORBIS_PATH}/lib/window.c ${LIBVORBIS_PATH}/lib/synthesis.c - ) + ) - set(MODULE_INCLUDE + target_include_directories(sndfile PRIVATE ${LIBSND_PATH} ${LIBOGG_PATH}/include ${LIBVORBIS_PATH}/include ${LIBVORBIS_PATH}/lib - ) - - setup_module() + ) else() find_package(SndFile) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 367435bd6678a..5d9f02f141747 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -115,6 +115,7 @@ set(LINK_LIB muse::mpe muse::midi muse::learn + muse::learn_qml muse::tours muse::multiinstances muse::cloud @@ -133,7 +134,6 @@ set(LINK_LIB playback preferences preferences_qml - preferences_qmlplugin instrumentsscene musesounds ) diff --git a/src/appshell/qml/HomePage/HomePage.qml b/src/appshell/qml/HomePage/HomePage.qml index f2fd7da3e1689..4c32eec48e13c 100644 --- a/src/appshell/qml/HomePage/HomePage.qml +++ b/src/appshell/qml/HomePage/HomePage.qml @@ -26,7 +26,7 @@ import Muse.UiComponents 1.0 import Muse.Dock 1.0 import Muse.Cloud 1.0 -import Muse.Learn 1.0 +import Muse.Learn import MuseScore.Project 1.0 import MuseScore.MuseSounds 1.0 diff --git a/src/braille/thirdparty/liblouis/CMakeLists.txt b/src/braille/thirdparty/liblouis/CMakeLists.txt index 9dd5b06c872f4..3938087f42422 100644 --- a/src/braille/thirdparty/liblouis/CMakeLists.txt +++ b/src/braille/thirdparty/liblouis/CMakeLists.txt @@ -1,9 +1,9 @@ -declare_thirdparty_module(liblouis) +muse_create_thirdparty_module(liblouis) add_subdirectory(tables) -set(MODULE_DEF - -DTABLESDIR=dataPathPtr # compileTranslationTable.c +target_compile_definitions(liblouis PRIVATE + TABLESDIR=dataPathPtr # compileTranslationTable.c ) set(WIDECHARS_ARE_UCS4 TRUE) # configMS.h @@ -21,7 +21,7 @@ configure_file( @ONLY ) -set(MODULE_SRC +target_sources(liblouis PRIVATE # Alphabetical order please! ${CMAKE_CURRENT_LIST_DIR}/liblouis/commonTranslationFunctions.c ${CMAKE_CURRENT_LIST_DIR}/liblouis/compileTranslationTable.c @@ -36,10 +36,7 @@ set(MODULE_SRC ${CMAKE_CURRENT_LIST_DIR}/liblouis/utils.c ) -set(MODULE_USE_UNITY OFF) -set(MODULE_USE_COVERAGE OFF) +set_target_properties(liblouis PROPERTIES UNITY_BUILD OFF) -setup_module() - -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -w) +target_no_warning(liblouis -Wno-conversion) +target_no_warning(liblouis -w) diff --git a/src/engraving/CMakeLists.txt b/src/engraving/CMakeLists.txt index 3340c19703ed5..436571fd00585 100644 --- a/src/engraving/CMakeLists.txt +++ b/src/engraving/CMakeLists.txt @@ -411,7 +411,6 @@ if (QT_SUPPORT) list(APPEND MODULE_LINK Qt::Quick) endif() -set(MODULE_ROOT ${CMAKE_CURRENT_LIST_DIR}) setup_module() set_property(TARGET ${MODULE} APPEND PROPERTY AUTOMOC_MACRO_NAMES "BEGIN_QT_REGISTERED_ENUM") diff --git a/src/framework/audio/CMakeLists.txt b/src/framework/audio/CMakeLists.txt index b2b459012c28c..481383f700911 100644 --- a/src/framework/audio/CMakeLists.txt +++ b/src/framework/audio/CMakeLists.txt @@ -23,7 +23,6 @@ set(MODULE_ALIAS muse::audio) set(MODULE_QRC main/audio.qrc) -set(MODULE_ROOT ${CMAKE_CURRENT_LIST_DIR}) set(MODULE_QML_IMPORT ${CMAKE_CURRENT_LIST_DIR}/qml) include(GetPlatformInfo) diff --git a/src/framework/audio/driver/platform/win/asio/asiosdk/CMakeLists.txt b/src/framework/audio/driver/platform/win/asio/asiosdk/CMakeLists.txt index 4f4198ed57e04..8c6cee44c1178 100644 --- a/src/framework/audio/driver/platform/win/asio/asiosdk/CMakeLists.txt +++ b/src/framework/audio/driver/platform/win/asio/asiosdk/CMakeLists.txt @@ -1,5 +1,5 @@ -declare_thirdparty_module(asiosdk) +muse_create_thirdparty_module(asiosdk) if(MUSE_MODULE_AUDIO_ASIO_SDK_PATH) set(ASIO_SDK_PATH ${MUSE_MODULE_AUDIO_ASIO_SDK_PATH}) @@ -28,22 +28,18 @@ else() endif() -set(MODULE_SRC +target_sources(asiosdk PRIVATE ${CMAKE_CURRENT_LIST_DIR}/asiosdk_asio.cpp ${CMAKE_CURRENT_LIST_DIR}/asiosdk_asiolist.cpp ${CMAKE_CURRENT_LIST_DIR}/asiosdk_asiodrivers.cpp - ) +) -set(MODULE_INCLUDE +target_include_directories(asiosdk PUBLIC ${ASIO_SDK_PATH} ${ASIO_SDK_PATH}/ASIOSDK/common ${ASIO_SDK_PATH}/ASIOSDK/host ${ASIO_SDK_PATH}/ASIOSDK/host/pc - ) - -set(MODULE_USE_UNITY OFF) - -setup_module() +) # Silence warnings from SDK target_compile_options(asiosdk PRIVATE /wd4267) diff --git a/src/framework/audio/thirdparty/flac/CMakeLists.txt b/src/framework/audio/thirdparty/flac/CMakeLists.txt index 54498b690d87a..cac66f3525d50 100644 --- a/src/framework/audio/thirdparty/flac/CMakeLists.txt +++ b/src/framework/audio/thirdparty/flac/CMakeLists.txt @@ -1,4 +1,4 @@ -declare_thirdparty_module(flac) +muse_create_thirdparty_module(flac) include(GetPlatformInfo) include(GetCompilerInfo) @@ -9,9 +9,10 @@ set(FLAC_SRC ${FLAC_DIR}/src) include(GetFlacCompileInfo.cmake) -list(APPEND FLAC_DEFS - -DHAVE_CONFIG_H - -DFLAC__NO_DLL) +target_compile_definitions(flac + PRIVATE HAVE_CONFIG_H + PUBLIC FLAC__NO_DLL +) if(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND HAVE_STACKREALIGN_FLAG) add_compile_options(-mstackrealign) @@ -19,18 +20,17 @@ endif() configure_file(${FLAC_DIR}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) -set(MODULE_DEF ${FLAC_DEFS}) +target_include_directories(flac + PUBLIC + ${FLAC_DIR}/include + ${FLAC_DIR}/src/libFLAC/include + ${FLAC_DIR}/src/libFLAC++/include + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} +) -set (MODULE_INCLUDE - ${FLAC_DIR} - ${FLAC_DIR}/include - ${FLAC_DIR}/src - ${FLAC_DIR}/src/libFLAC/include - ${FLAC_DIR}/src/libFLAC++/include - ${CMAKE_CURRENT_BINARY_DIR} - ) - -set (MODULE_SRC +target_sources(flac PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/config.h ${FLAC_SRC}/libFLAC/bitmath.c ${FLAC_SRC}/libFLAC/bitreader.c ${FLAC_SRC}/libFLAC/bitwriter.c @@ -65,29 +65,24 @@ set (MODULE_SRC ${FLAC_SRC}/libFLAC++/stream_encoder.cpp $<$:${FLAC_DIR}/include/share/win_utf8_io.h> $<$:${FLAC_SRC}/share/win_utf8_io/win_utf8_io.c> - ) - -set(MODULE_USE_UNITY OFF) -set(MODULE_USE_COVERAGE OFF) - -setup_module() +) -target_no_warning(${MODULE} -Wno-deprecated) -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-unused-parameter) -target_no_warning(${MODULE} -Wno-unused-variable) -target_no_warning(${MODULE} -Wno-type-limits) -target_no_warning(${MODULE} -Wno-unknown-pragmas) -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-uninitialized) -target_no_warning(${MODULE} -Wno-shift-negative-value) -target_no_warning(${MODULE} -Wno-implicit-fallthrough) -target_no_warning(${MODULE} -Wno-empty-body) -target_no_warning(${MODULE} -Wno-attributes) -target_no_warning(${MODULE} -WMSVC-no-translation-unit-is-empty) -target_no_warning(${MODULE} -WMSVC-no-nonstandard-extension-used) -target_no_warning(${MODULE} -WMSVC-no-assignment-within-conditional-expression) -target_no_warning(${MODULE} -WMSVC-no-hides-previous) -target_no_warning(${MODULE} -WMSVC-no-undefined-assuming-extern) -target_no_warning(${MODULE} -WMSVC-named-type-definition-in-parentheses) -target_no_warning(${MODULE} -WMSVC-no-unreachable) +target_no_warning(flac -Wno-deprecated) +target_no_warning(flac -Wno-conversion) +target_no_warning(flac -Wno-unused-parameter) +target_no_warning(flac -Wno-unused-variable) +target_no_warning(flac -Wno-type-limits) +target_no_warning(flac -Wno-unknown-pragmas) +target_no_warning(flac -Wno-conversion) +target_no_warning(flac -Wno-uninitialized) +target_no_warning(flac -Wno-shift-negative-value) +target_no_warning(flac -Wno-implicit-fallthrough) +target_no_warning(flac -Wno-empty-body) +target_no_warning(flac -Wno-attributes) +target_no_warning(flac -WMSVC-no-translation-unit-is-empty) +target_no_warning(flac -WMSVC-no-nonstandard-extension-used) +target_no_warning(flac -WMSVC-no-assignment-within-conditional-expression) +target_no_warning(flac -WMSVC-no-hides-previous) +target_no_warning(flac -WMSVC-no-undefined-assuming-extern) +target_no_warning(flac -WMSVC-named-type-definition-in-parentheses) +target_no_warning(flac -WMSVC-no-unreachable) diff --git a/src/framework/audio/thirdparty/fluidsynth/CMakeLists.txt b/src/framework/audio/thirdparty/fluidsynth/CMakeLists.txt index f5b745e8421c9..823c45b178139 100644 --- a/src/framework/audio/thirdparty/fluidsynth/CMakeLists.txt +++ b/src/framework/audio/thirdparty/fluidsynth/CMakeLists.txt @@ -1,43 +1,30 @@ -declare_thirdparty_module(fluidsynth) +muse_create_thirdparty_module(fluidsynth) include(${CMAKE_CURRENT_LIST_DIR}/fluidsynth.cmake) -set(MODULE_SRC - ${FLUIDSYNTH_SRC} - ) +target_sources(fluidsynth PRIVATE ${FLUIDSYNTH_SRC}) -set(MODULE_INCLUDE - ${FLUIDSYNTH_INC} - ) +target_include_directories(fluidsynth PUBLIC ${FLUIDSYNTH_INC}) -set(MODULE_DEF - ${FLUIDSYNTH_DEF} - ) +target_compile_definitions(fluidsynth PUBLIC ${FLUIDSYNTH_DEF}) if (NOT MUSE_ENABLE_UNIT_TESTS_CODE_COVERAGE) - set(MODULE_DEF ${MODULE_DEF} - -DEXTERN_VORBIS_SUPPORT - ) + target_compile_definitions(fluidsynth PRIVATE EXTERN_VORBIS_SUPPORT) endif() -set(MODULE_USE_UNITY OFF) -set(MODULE_USE_COVERAGE OFF) - -setup_module() - -#target_no_warning(${MODULE} -Wunused-const-variable=0) -target_no_warning(${MODULE} -Wno-deprecated) -target_no_warning(${MODULE} -Wno-unused-parameter) -target_no_warning(${MODULE} -Wno-unused-variable) -target_no_warning(${MODULE} -Wno-type-limits) -target_no_warning(${MODULE} -Wno-unknown-pragmas) -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-uninitialized) -target_no_warning(${MODULE} -Wno-deprecated-declarations) -target_no_warning(${MODULE} -WMSVC-no-translation-unit-is-empty) -target_no_warning(${MODULE} -WMSVC-no-nonstandard-extension-used) -target_no_warning(${MODULE} -WMSVC-no-assignment-within-conditional-expression) -target_no_warning(${MODULE} -WMSVC-no-hides-previous) -target_no_warning(${MODULE} -WMSVC-no-undefined-assuming-extern) -target_no_warning(${MODULE} -WMSVC-named-type-definition-in-parentheses) -target_no_warning(${MODULE} -WMSVC-no-different-enum-types) +#target_no_warning(fluidsynth -Wunused-const-variable=0) +target_no_warning(fluidsynth -Wno-deprecated) +target_no_warning(fluidsynth -Wno-unused-parameter) +target_no_warning(fluidsynth -Wno-unused-variable) +target_no_warning(fluidsynth -Wno-type-limits) +target_no_warning(fluidsynth -Wno-unknown-pragmas) +target_no_warning(fluidsynth -Wno-conversion) +target_no_warning(fluidsynth -Wno-uninitialized) +target_no_warning(fluidsynth -Wno-deprecated-declarations) +target_no_warning(fluidsynth -WMSVC-no-translation-unit-is-empty) +target_no_warning(fluidsynth -WMSVC-no-nonstandard-extension-used) +target_no_warning(fluidsynth -WMSVC-no-assignment-within-conditional-expression) +target_no_warning(fluidsynth -WMSVC-no-hides-previous) +target_no_warning(fluidsynth -WMSVC-no-undefined-assuming-extern) +target_no_warning(fluidsynth -WMSVC-named-type-definition-in-parentheses) +target_no_warning(fluidsynth -WMSVC-no-different-enum-types) diff --git a/src/framework/audio/thirdparty/lame/CMakeLists.txt b/src/framework/audio/thirdparty/lame/CMakeLists.txt index 9f8d46a89f9d9..4eaf9cbd36be9 100644 --- a/src/framework/audio/thirdparty/lame/CMakeLists.txt +++ b/src/framework/audio/thirdparty/lame/CMakeLists.txt @@ -1,38 +1,36 @@ -declare_thirdparty_module(lame) +muse_create_thirdparty_module(lame) include(GetPlatformInfo) include(GetCompilerInfo) set(LAME_DIR ${CMAKE_CURRENT_SOURCE_DIR}) -list(APPEND LAME_DEFS - -DHAVE_STDINT_H - -DHAVE_MPGLIB - -DDECODE_ON_THE_FLY - -DUSE_FAST_LOG - -DTAKEHIRO_IEEE754_HACK) +target_compile_definitions(lame PRIVATE + HAVE_STDINT_H + HAVE_MPGLIB + DECODE_ON_THE_FLY + USE_FAST_LOG + TAKEHIRO_IEEE754_HACK +) if(CC_IS_MSVC) - list(APPEND LAME_DEFS - -DUSE_LAYER_2 - -DHAVE_CONFIG_H - -D_CRT_SECURE_NO_WARNINGS - -D_CRT_SECURE_NO_DEPRECATED - -DTAKEHIRO_IEEE754_HACK) + target_compile_definitions(lame PRIVATE + USE_LAYER_2 + HAVE_CONFIG_H + _CRT_SECURE_NO_WARNINGS + _CRT_SECURE_NO_DEPRECATED + ) configure_file(${LAME_DIR}/configMS.h ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY) else() - list(APPEND LAME_DEFS - -DSTDC_HEADERS) + target_compile_definitions(lame PRIVATE STDC_HEADERS) if(NOT ieee754_float32_t) - list(APPEND LAME_DEFS - -Dieee754_float32_t=float) + target_compile_definitions(lame PRIVATE + ieee754_float32_t=float + ) endif() endif() -set(MODULE_DEF - ${LAME_DEFS}) - aux_source_directory(${LAME_DIR}/libmp3lame SOURCE_LIB) aux_source_directory(${LAME_DIR}/libmp3lame/vector/ SOURCE_LIB) aux_source_directory(${LAME_DIR}/mpglib SOURCE_LIB) @@ -43,42 +41,37 @@ if(OS_IS_WIN) ${LAME_DIR}/Dll/BladeMP3EncDLL.h) endif() -set (MODULE_INCLUDE - ${LAME_DIR}/include - ${LAME_DIR}/libmp3lame - ${LAME_DIR}/mpglib - ${LAME_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ) +target_sources(lame PRIVATE ${SOURCE_LIB}) -set (MODULE_SRC - ${SOURCE_LIB} +target_include_directories(lame + PUBLIC + ${LAME_DIR}/include + PRIVATE + ${LAME_DIR}/libmp3lame + ${LAME_DIR}/mpglib + ${LAME_DIR} + ${CMAKE_CURRENT_BINARY_DIR} ) -set(MODULE_USE_UNITY OFF) -set(MODULE_USE_COVERAGE OFF) - -setup_module() - -#target_no_warning(${MODULE} -Wunused-const-variable=0) -target_no_warning(${MODULE} -Wno-unused-parameter) -target_no_warning(${MODULE} -Wno-unused-variable) -target_no_warning(${MODULE} -Wno-type-limits) -target_no_warning(${MODULE} -Wno-unknown-pragmas) -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-uninitialized) -target_no_warning(${MODULE} -Wno-shift-negative-value) -target_no_warning(${MODULE} -Wno-implicit-fallthrough) -target_no_warning(${MODULE} -Wno-empty-body) -target_no_warning(${MODULE} -Wno-attributes) -target_no_warning(${MODULE} -Wc-no-absolute-value) -target_no_warning(${MODULE} -Wc-no-tautological-pointer-compare) -target_no_warning(${MODULE} -Wc-no-array-parameter) -target_no_warning(${MODULE} -Wno-unused-but-set-variable) -target_no_warning(${MODULE} -WMSVC-no-translation-unit-is-empty) -target_no_warning(${MODULE} -WMSVC-no-nonstandard-extension-used) -target_no_warning(${MODULE} -WMSVC-no-assignment-within-conditional-expression) -target_no_warning(${MODULE} -WMSVC-no-hides-previous) -target_no_warning(${MODULE} -WMSVC-no-undefined-assuming-extern) -target_no_warning(${MODULE} -WMSVC-named-type-definition-in-parentheses) -target_no_warning(${MODULE} -WMSVC-no-benign-redefinition) +#target_no_warning(lame -Wunused-const-variable=0) +target_no_warning(lame -Wno-unused-parameter) +target_no_warning(lame -Wno-unused-variable) +target_no_warning(lame -Wno-type-limits) +target_no_warning(lame -Wno-unknown-pragmas) +target_no_warning(lame -Wno-conversion) +target_no_warning(lame -Wno-uninitialized) +target_no_warning(lame -Wno-shift-negative-value) +target_no_warning(lame -Wno-implicit-fallthrough) +target_no_warning(lame -Wno-empty-body) +target_no_warning(lame -Wno-attributes) +target_no_warning(lame -Wc-no-absolute-value) +target_no_warning(lame -Wc-no-tautological-pointer-compare) +target_no_warning(lame -Wc-no-array-parameter) +target_no_warning(lame -Wno-unused-but-set-variable) +target_no_warning(lame -WMSVC-no-translation-unit-is-empty) +target_no_warning(lame -WMSVC-no-nonstandard-extension-used) +target_no_warning(lame -WMSVC-no-assignment-within-conditional-expression) +target_no_warning(lame -WMSVC-no-hides-previous) +target_no_warning(lame -WMSVC-no-undefined-assuming-extern) +target_no_warning(lame -WMSVC-named-type-definition-in-parentheses) +target_no_warning(lame -WMSVC-no-benign-redefinition) diff --git a/src/framework/audio/thirdparty/opusenc/CMakeLists.txt b/src/framework/audio/thirdparty/opusenc/CMakeLists.txt index d21c631d2bb85..d60a85fc09d3f 100644 --- a/src/framework/audio/thirdparty/opusenc/CMakeLists.txt +++ b/src/framework/audio/thirdparty/opusenc/CMakeLists.txt @@ -1,4 +1,4 @@ -declare_thirdparty_module(opusenc) +muse_create_thirdparty_module(opusenc) include(GetPlatformInfo) include(GetCompilerInfo) @@ -14,43 +14,42 @@ aux_source_directory(${OPUSENC_DIR}/src SOURCE_LIB) configure_file(${OPUSENC_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) -set(MODULE_DEF - -DOUTSIDE_SPEEX - -DRANDOM_PREFIX=opusenc_prefix) - -set(MODULE_INCLUDE - ${OPUSENC_DIR}/include - ${OPUSENC_DIR}/src - ${OPUSENC_DIR} - ${OPUS_INCLUDE_DIRS} - ) - -set(MODULE_SRC +target_sources(opusenc PRIVATE ${SOURCE_LIB} - ) - -set(MODULE_LINK ${OPUS_LIBRARIES}) - -set(MODULE_USE_UNITY OFF) -set(MODULE_USE_COVERAGE OFF) - -setup_module() - -target_no_warning(${MODULE} -Wno-unused-parameter) -target_no_warning(${MODULE} -Wno-unused-variable) -target_no_warning(${MODULE} -Wno-type-limits) -target_no_warning(${MODULE} -Wno-unknown-pragmas) -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-uninitialized) -target_no_warning(${MODULE} -Wno-shift-negative-value) -target_no_warning(${MODULE} -Wno-implicit-fallthrough) -target_no_warning(${MODULE} -Wno-empty-body) -target_no_warning(${MODULE} -Wno-attributes) -target_no_warning(${MODULE} -Wno-sign-compare) -target_no_warning(${MODULE} -Wno-restrict) -target_no_warning(${MODULE} -WMSVC-no-translation-unit-is-empty) -target_no_warning(${MODULE} -WMSVC-no-nonstandard-extension-used) -target_no_warning(${MODULE} -WMSVC-no-assignment-within-conditional-expression) -target_no_warning(${MODULE} -WMSVC-no-hides-previous) -target_no_warning(${MODULE} -WMSVC-no-undefined-assuming-extern) -target_no_warning(${MODULE} -WMSVC-named-type-definition-in-parentheses) + ${CMAKE_CURRENT_BINARY_DIR}/config.h +) + +target_compile_definitions(opusenc PRIVATE + OUTSIDE_SPEEX + RANDOM_PREFIX=opusenc_prefix +) + +target_include_directories(opusenc + PUBLIC + ${OPUSENC_DIR}/include + ${OPUS_INCLUDE_DIRS} + PRIVATE + ${OPUSENC_DIR}/src + ${OPUSENC_DIR} +) + +target_link_libraries(opusenc PRIVATE ${OPUS_LIBRARIES}) + +target_no_warning(opusenc -Wno-unused-parameter) +target_no_warning(opusenc -Wno-unused-variable) +target_no_warning(opusenc -Wno-type-limits) +target_no_warning(opusenc -Wno-unknown-pragmas) +target_no_warning(opusenc -Wno-conversion) +target_no_warning(opusenc -Wno-uninitialized) +target_no_warning(opusenc -Wno-shift-negative-value) +target_no_warning(opusenc -Wno-implicit-fallthrough) +target_no_warning(opusenc -Wno-empty-body) +target_no_warning(opusenc -Wno-attributes) +target_no_warning(opusenc -Wno-sign-compare) +target_no_warning(opusenc -Wno-restrict) +target_no_warning(opusenc -WMSVC-no-translation-unit-is-empty) +target_no_warning(opusenc -WMSVC-no-nonstandard-extension-used) +target_no_warning(opusenc -WMSVC-no-assignment-within-conditional-expression) +target_no_warning(opusenc -WMSVC-no-hides-previous) +target_no_warning(opusenc -WMSVC-no-undefined-assuming-extern) +target_no_warning(opusenc -WMSVC-named-type-definition-in-parentheses) diff --git a/src/framework/learn/CMakeLists.txt b/src/framework/learn/CMakeLists.txt index 83c5e3d5a0d06..f3ef52980a9cb 100644 --- a/src/framework/learn/CMakeLists.txt +++ b/src/framework/learn/CMakeLists.txt @@ -18,29 +18,22 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_module(muse_learn) -set(MODULE_ALIAS muse::learn) +muse_create_module(muse_learn ALIAS muse::learn) -set(MODULE_QRC learn.qrc) - -set(MODULE_QML_IMPORT ${CMAKE_CURRENT_LIST_DIR}/qml) - -set(MODULE_SRC - ${CMAKE_CURRENT_LIST_DIR}/learnmodule.cpp - ${CMAKE_CURRENT_LIST_DIR}/learnmodule.h - ${CMAKE_CURRENT_LIST_DIR}/learnerrors.h - ${CMAKE_CURRENT_LIST_DIR}/ilearnconfiguration.h - ${CMAKE_CURRENT_LIST_DIR}/ilearnservice.h - ${CMAKE_CURRENT_LIST_DIR}/internal/learnconfiguration.cpp - ${CMAKE_CURRENT_LIST_DIR}/internal/learnconfiguration.h - ${CMAKE_CURRENT_LIST_DIR}/internal/learnservice.cpp - ${CMAKE_CURRENT_LIST_DIR}/internal/learnservice.h - ${CMAKE_CURRENT_LIST_DIR}/view/learnpagemodel.cpp - ${CMAKE_CURRENT_LIST_DIR}/view/learnpagemodel.h - ) +target_sources(muse_learn PRIVATE + learnmodule.cpp + learnmodule.h + learnerrors.h + ilearnconfiguration.h + ilearnservice.h + internal/learnconfiguration.cpp + internal/learnconfiguration.h + internal/learnservice.cpp + internal/learnservice.h +) if (QT_SUPPORT) - list(APPEND MODULE_LINK Qt::Concurrent Qt::Network Qt::Qml) + target_link_libraries(muse_learn PRIVATE Qt::Concurrent Qt::Network Qt::Qml) endif() -setup_module() +add_subdirectory(qml/Muse/Learn) diff --git a/src/framework/learn/learn.qrc b/src/framework/learn/learn.qrc deleted file mode 100644 index 6f8ec1f913d08..0000000000000 --- a/src/framework/learn/learn.qrc +++ /dev/null @@ -1,10 +0,0 @@ - - - qml/Muse/Learn/LearnPage.qml - qml/Muse/Learn/qmldir - qml/Muse/Learn/internal/Playlist.qml - qml/Muse/Learn/internal/PlaylistItem.qml - qml/Muse/Learn/internal/ClassesPage.qml - qml/Muse/Learn/resources/marc_sabatella.JPG - - diff --git a/src/framework/learn/learnmodule.cpp b/src/framework/learn/learnmodule.cpp index de6013bc22396..9f4e1d83e68db 100644 --- a/src/framework/learn/learnmodule.cpp +++ b/src/framework/learn/learnmodule.cpp @@ -28,16 +28,9 @@ #include "internal/learnconfiguration.h" #include "internal/learnservice.h" -#include "view/learnpagemodel.h" - using namespace muse::learn; using namespace muse::modularity; -static void learn_init_qrc() -{ - Q_INIT_RESOURCE(learn); -} - std::string LearnModule::moduleName() const { return "learn"; @@ -52,16 +45,6 @@ void LearnModule::registerExports() ioc()->registerExport(moduleName(), m_learnService); } -void LearnModule::registerResources() -{ - learn_init_qrc(); -} - -void LearnModule::registerUiTypes() -{ - qmlRegisterType("Muse.Learn", 1, 0, "LearnPageModel"); -} - void LearnModule::onInit(const IApplication::RunMode&) { m_learnConfiguration->init(); diff --git a/src/framework/learn/learnmodule.h b/src/framework/learn/learnmodule.h index 246366f34abcc..401d75d083800 100644 --- a/src/framework/learn/learnmodule.h +++ b/src/framework/learn/learnmodule.h @@ -19,8 +19,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef MUSE_LEARN_LEARNMODULE_H -#define MUSE_LEARN_LEARNMODULE_H + +#pragma once #include @@ -34,8 +34,6 @@ class LearnModule : public modularity::IModuleSetup public: std::string moduleName() const override; void registerExports() override; - void registerResources() override; - void registerUiTypes() override; void onInit(const IApplication::RunMode& mode) override; void onDelayedInit() override; @@ -44,5 +42,3 @@ class LearnModule : public modularity::IModuleSetup std::shared_ptr m_learnService; }; } - -#endif // MUSE_LEARN_LEARNMODULE_H diff --git a/src/framework/learn/qml/Muse/Learn/CMakeLists.txt b/src/framework/learn/qml/Muse/Learn/CMakeLists.txt new file mode 100644 index 0000000000000..544140cb74411 --- /dev/null +++ b/src/framework/learn/qml/Muse/Learn/CMakeLists.txt @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: GPL-3.0-only +# MuseScore-CLA-applies +# +# MuseScore +# Music Composition & Notation +# +# Copyright (C) 2025 MuseScore Limited and others +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +muse_create_qml_module(muse_learn_qml ALIAS muse::learn_qml FOR muse_learn) + +qt_add_qml_module(muse_learn_qml + URI Muse.Learn + VERSION 1.0 + SOURCES + learnpagemodel.cpp + learnpagemodel.h + QML_FILES + LearnPage.qml + internal/ClassesPage.qml + internal/Playlist.qml + internal/PlaylistItem.qml + RESOURCES + resources/marc_sabatella.jpg +) diff --git a/src/framework/learn/qml/Muse/Learn/LearnPage.qml b/src/framework/learn/qml/Muse/Learn/LearnPage.qml index 2280cf2fe1318..54def3802dec5 100644 --- a/src/framework/learn/qml/Muse/Learn/LearnPage.qml +++ b/src/framework/learn/qml/Muse/Learn/LearnPage.qml @@ -25,7 +25,7 @@ import QtQuick.Layouts 1.15 import Muse.Ui 1.0 import Muse.UiComponents 1.0 -import Muse.Learn 1.0 +import Muse.Learn import "internal" diff --git a/src/framework/learn/qml/Muse/Learn/internal/Playlist.qml b/src/framework/learn/qml/Muse/Learn/internal/Playlist.qml index 371cd225d81ed..99c402c559237 100644 --- a/src/framework/learn/qml/Muse/Learn/internal/Playlist.qml +++ b/src/framework/learn/qml/Muse/Learn/internal/Playlist.qml @@ -25,7 +25,7 @@ import QtQuick.Controls 2.15 import Muse.Ui 1.0 import Muse.UiComponents 1.0 -import Muse.Learn 1.0 +import Muse.Learn FocusScope { id: root diff --git a/src/framework/learn/view/learnpagemodel.cpp b/src/framework/learn/qml/Muse/Learn/learnpagemodel.cpp similarity index 98% rename from src/framework/learn/view/learnpagemodel.cpp rename to src/framework/learn/qml/Muse/Learn/learnpagemodel.cpp index 13d66e9519a00..9597afc1055e0 100644 --- a/src/framework/learn/view/learnpagemodel.cpp +++ b/src/framework/learn/qml/Muse/Learn/learnpagemodel.cpp @@ -93,7 +93,7 @@ QVariantMap LearnPageModel::classesAuthor() const "and other related courses and services to help you create your best music. " "Take advantage of this opportunity to learn MuseScore from one of its most recognized experts!\n\n" "(Note: Mastering MuseScore is available in English only)"); - author["avatarUrl"] = "qrc:/qml/Muse/Learn/resources/marc_sabatella.JPG"; + author["avatarUrl"] = "qrc:/qt/qml/Muse/Learn/resources/marc_sabatella.jpg"; author["organizationName"] = muse::qtrc("learn", "Mastering MuseScore"); author["organizationUrl"] = "https://www.masteringmusescore.com/musescore4"; diff --git a/src/framework/learn/view/learnpagemodel.h b/src/framework/learn/qml/Muse/Learn/learnpagemodel.h similarity index 95% rename from src/framework/learn/view/learnpagemodel.h rename to src/framework/learn/qml/Muse/Learn/learnpagemodel.h index 0e1240f960e20..33d3ff6573abf 100644 --- a/src/framework/learn/view/learnpagemodel.h +++ b/src/framework/learn/qml/Muse/Learn/learnpagemodel.h @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef MUSE_LEARN_LEARNPAGEMODEL_H -#define MUSE_LEARN_LEARNPAGEMODEL_H + +#pragma once + +#include #include #include @@ -35,6 +37,7 @@ namespace muse::learn { class LearnPageModel : public QObject, public Injectable, public async::Asyncable { Q_OBJECT + QML_ELEMENT; Q_PROPERTY(QVariantList startedPlaylist READ startedPlaylist NOTIFY startedPlaylistChanged) Q_PROPERTY(QVariantList advancedPlaylist READ advancedPlaylist NOTIFY advancedPlaylistChanged) @@ -72,5 +75,3 @@ private slots: QString m_searchText; }; } - -#endif // MUSE_LEARN_LEARNPAGEMODEL_H diff --git a/src/framework/learn/qml/Muse/Learn/qmldir b/src/framework/learn/qml/Muse/Learn/qmldir deleted file mode 100644 index cb6b6652c914d..0000000000000 --- a/src/framework/learn/qml/Muse/Learn/qmldir +++ /dev/null @@ -1,2 +0,0 @@ -module Muse.Learn -LearnPage 1.0 LearnPage.qml diff --git a/src/framework/learn/qml/Muse/Learn/resources/marc_sabatella.JPG b/src/framework/learn/qml/Muse/Learn/resources/marc_sabatella.jpg similarity index 100% rename from src/framework/learn/qml/Muse/Learn/resources/marc_sabatella.JPG rename to src/framework/learn/qml/Muse/Learn/resources/marc_sabatella.jpg diff --git a/src/framework/stubs/learn/CMakeLists.txt b/src/framework/stubs/learn/CMakeLists.txt index 059c76d9b5d94..e1fbc4e2e097a 100644 --- a/src/framework/stubs/learn/CMakeLists.txt +++ b/src/framework/stubs/learn/CMakeLists.txt @@ -18,17 +18,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_module(muse_learn) -set(MODULE_ALIAS muse::learn) +muse_create_module(muse_learn ALIAS muse::learn STUB) -set(MODULE_QRC learn.qrc) +target_sources(muse_learn PRIVATE + learnmodule.cpp + learnmodule.h +) -set(MODULE_QML_IMPORT ${CMAKE_CURRENT_LIST_DIR}/qml) - -set(MODULE_SRC - ${CMAKE_CURRENT_LIST_DIR}/learnmodule.cpp - ${CMAKE_CURRENT_LIST_DIR}/learnmodule.h - ) - -set(MODULE_IS_STUB ON) -setup_module() +add_subdirectory(qml/Muse/Learn) diff --git a/src/framework/stubs/learn/learn.qrc b/src/framework/stubs/learn/learn.qrc deleted file mode 100644 index 9a9632618ded0..0000000000000 --- a/src/framework/stubs/learn/learn.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - qml/Muse/Learn/LearnPage.qml - qml/Muse/Learn/qmldir - - diff --git a/src/framework/stubs/learn/learnmodule.cpp b/src/framework/stubs/learn/learnmodule.cpp index 084ef1864634d..d80bc3fa9a561 100644 --- a/src/framework/stubs/learn/learnmodule.cpp +++ b/src/framework/stubs/learn/learnmodule.cpp @@ -21,21 +21,9 @@ */ #include "learnmodule.h" -#include - using namespace muse::learn; -static void learn_init_qrc() -{ - Q_INIT_RESOURCE(learn); -} - std::string LearnModule::moduleName() const { return "learn_stub"; } - -void LearnModule::registerResources() -{ - learn_init_qrc(); -} diff --git a/src/framework/stubs/learn/learnmodule.h b/src/framework/stubs/learn/learnmodule.h index e213287032385..f32f36b09f702 100644 --- a/src/framework/stubs/learn/learnmodule.h +++ b/src/framework/stubs/learn/learnmodule.h @@ -19,8 +19,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef MUSE_LEARN_LEARNMODULE_H -#define MUSE_LEARN_LEARNMODULE_H + +#pragma once #include "modularity/imodulesetup.h" @@ -29,8 +29,5 @@ class LearnModule : public modularity::IModuleSetup { public: std::string moduleName() const override; - void registerResources() override; }; } - -#endif // MUSE_LEARN_LEARNMODULE_H diff --git a/src/framework/stubs/learn/qml/Muse/Learn/CMakeLists.txt b/src/framework/stubs/learn/qml/Muse/Learn/CMakeLists.txt new file mode 100644 index 0000000000000..d16f934c27ed1 --- /dev/null +++ b/src/framework/stubs/learn/qml/Muse/Learn/CMakeLists.txt @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: GPL-3.0-only +# MuseScore-CLA-applies +# +# MuseScore +# Music Composition & Notation +# +# Copyright (C) 2025 MuseScore Limited and others +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +muse_create_qml_module(muse_learn_qml ALIAS muse::learn_qml FOR muse_learn STUB) + +qt_add_qml_module(muse_learn_qml + URI Muse.Learn + VERSION 1.0 + QML_FILES + LearnPage.qml +) diff --git a/src/framework/stubs/learn/qml/Muse/Learn/qmldir b/src/framework/stubs/learn/qml/Muse/Learn/qmldir deleted file mode 100644 index cb6b6652c914d..0000000000000 --- a/src/framework/stubs/learn/qml/Muse/Learn/qmldir +++ /dev/null @@ -1,2 +0,0 @@ -module Muse.Learn -LearnPage 1.0 LearnPage.qml diff --git a/src/framework/vst/CMakeLists.txt b/src/framework/vst/CMakeLists.txt index 15c5834534ed0..6c712046a768c 100644 --- a/src/framework/vst/CMakeLists.txt +++ b/src/framework/vst/CMakeLists.txt @@ -101,7 +101,7 @@ set(MODULE_INCLUDE ) set(MODULE_LINK - vst_sdk_3 + vst3sdk ) if (QT_SUPPORT) diff --git a/src/framework/vst/sdk/CMakeLists.txt b/src/framework/vst/sdk/CMakeLists.txt index 2ccb876cd25ff..3f84330182950 100644 --- a/src/framework/vst/sdk/CMakeLists.txt +++ b/src/framework/vst/sdk/CMakeLists.txt @@ -18,7 +18,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_thirdparty_module(vst_sdk_3) +muse_create_thirdparty_module(vst3sdk) if(MUSE_MODULE_VST_VST3_SDK_PATH) set(VST3_SDK_PATH ${MUSE_MODULE_VST_VST3_SDK_PATH}) @@ -51,13 +51,11 @@ include(GetCompilerInfo) include(GetBuildType) if (BUILD_IS_DEBUG) - set(MODULE_DEF -DDEVELOPMENT) + target_compile_definitions(vst3sdk PRIVATE DEVELOPMENT) else() - set(MODULE_DEF -DRELEASE) + target_compile_definitions(vst3sdk PRIVATE RELEASE) endif() -set(MODULE_USE_UNITY OFF) - if (OS_IS_WIN) set(PLATFORM_SRC ${VST3_SDK_PATH}/public.sdk/source/vst/hosting/module_win32.cpp @@ -173,7 +171,7 @@ set(VST_SDK_HOSTING_SRC ${VST3_SDK_PATH}/public.sdk/source/vst/hosting/plugprovider.h ) -set(MODULE_SRC +target_sources(vst3sdk PRIVATE ${VST_BASE_SRC} ${VST_PLUGIN_INTERFACES_SRC} ${VST_SDK_COMMON_SRC} @@ -181,14 +179,12 @@ set(MODULE_SRC ${PLATFORM_SRC} ) -set(MODULE_INCLUDE +target_include_directories(vst3sdk PUBLIC ${VST3_SDK_PATH} ) -setup_module() - -target_no_warning(${MODULE} -w) +target_no_warning(vst3sdk -w) if (CC_IS_CLANG) - set_property(TARGET ${MODULE} APPEND_STRING PROPERTY COMPILE_FLAGS "-fobjc-arc") + target_compile_options(vst3sdk PRIVATE -fobjc-arc) endif() diff --git a/src/preferences/CMakeLists.txt b/src/preferences/CMakeLists.txt index 26b7ae8ec0aa8..b37fec97221d7 100644 --- a/src/preferences/CMakeLists.txt +++ b/src/preferences/CMakeLists.txt @@ -18,8 +18,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_module(preferences) -setup_module() +muse_create_module(preferences) target_sources(preferences PRIVATE preferencesmodule.cpp diff --git a/src/preferences/qml/MuseScore/Preferences/CMakeLists.txt b/src/preferences/qml/MuseScore/Preferences/CMakeLists.txt index 2809569bffe28..a59aed4c3cabd 100644 --- a/src/preferences/qml/MuseScore/Preferences/CMakeLists.txt +++ b/src/preferences/qml/MuseScore/Preferences/CMakeLists.txt @@ -18,10 +18,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_module(preferences_qml) -setup_module() +muse_create_qml_module(preferences_qml FOR preferences) -target_link_libraries(preferences_qml PRIVATE preferences Qt::Core5Compat) +target_link_libraries(preferences_qml PRIVATE Qt::Core5Compat) qt_add_qml_module(preferences_qml URI MuseScore.Preferences diff --git a/thirdparty/beatroot/CMakeLists.txt b/thirdparty/beatroot/CMakeLists.txt index 0cecf577f0675..5b1b4a06e32e7 100644 --- a/thirdparty/beatroot/CMakeLists.txt +++ b/thirdparty/beatroot/CMakeLists.txt @@ -1,6 +1,6 @@ -declare_thirdparty_module(beatroot) +muse_create_thirdparty_module(beatroot) -set(MODULE_SRC +target_sources(beatroot PRIVATE ${CMAKE_CURRENT_LIST_DIR}/Agent.cpp ${CMAKE_CURRENT_LIST_DIR}/Agent.h ${CMAKE_CURRENT_LIST_DIR}/AgentList.cpp @@ -12,9 +12,5 @@ set(MODULE_SRC ${CMAKE_CURRENT_LIST_DIR}/Induction.h ) -set(MODULE_USE_COVERAGE OFF) - -setup_module() - -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-unused-but-set-variable) +target_no_warning(beatroot -Wno-conversion) +target_no_warning(beatroot -Wno-unused-but-set-variable) diff --git a/thirdparty/rtf2html/CMakeLists.txt b/thirdparty/rtf2html/CMakeLists.txt index 7c785b47f6b91..fa4bfa35a340f 100644 --- a/thirdparty/rtf2html/CMakeLists.txt +++ b/thirdparty/rtf2html/CMakeLists.txt @@ -18,11 +18,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_thirdparty_module(rtf2html) +muse_create_thirdparty_module(rtf2html) -set(MODULE_USE_QT ON) - -set(MODULE_SRC +target_sources(rtf2html PRIVATE common.h config.h dbg_iter.h @@ -36,9 +34,7 @@ set(MODULE_SRC rtf_tools.h ) -set(MODULE_LINK Qt::Core) - -setup_module() +target_link_libraries(rtf2html PRIVATE Qt::Core) -target_no_warning(${MODULE} -Wno-conversion) -target_no_warning(${MODULE} -Wno-deprecated-declarations) +target_no_warning(rtf2html -Wno-conversion) +target_no_warning(rtf2html -Wno-deprecated-declarations)