Skip to content

Commit 2e9c043

Browse files
committed
CMake: Move deprecated declare_module macro out of framework
1 parent f19f725 commit 2e9c043

File tree

10 files changed

+157
-127
lines changed

10 files changed

+157
-127
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ set(CMAKE_MODULE_PATH
3232
${CMAKE_CURRENT_LIST_DIR}
3333
${CMAKE_CURRENT_LIST_DIR}/buildscripts
3434
${CMAKE_CURRENT_LIST_DIR}/buildscripts/cmake
35+
${CMAKE_CURRENT_LIST_DIR}/src/framework/cmake
3536
${CMAKE_MODULE_PATH}
3637
)
3738

SetupConfigure.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,3 +381,5 @@ if (MUE_ENABLE_LOAD_QML_FROM_SOURCE)
381381
endif()
382382

383383
configure_file(${CMAKE_CURRENT_LIST_DIR}/src/app/app_config.h.in app_config.h )
384+
385+
include(DeclareModule)
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# SPDX-License-Identifier: GPL-3.0-only
2+
# MuseScore-Studio-CLA-applies
3+
#
4+
# MuseScore Studio
5+
# Music Composition & Notation
6+
#
7+
# Copyright (C) 2026 MuseScore Limited
8+
#
9+
# This program is free software: you can redistribute it and/or modify
10+
# it under the terms of the GNU General Public License version 3 as
11+
# published by the Free Software Foundation.
12+
#
13+
# This program is distributed in the hope that it will be useful,
14+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16+
# GNU General Public License for more details.
17+
#
18+
# You should have received a copy of the GNU General Public License
19+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
20+
21+
### LEGACY MACROS
22+
# TODO: remove this file after migrating all modules to muse_create_module
23+
24+
## Declare
25+
# declare_module(somename) - set module (target) name
26+
27+
## Setup
28+
# set(MODULE somename) - set module (target) name
29+
# set(MODULE_ALIAS somename) - set module (target) alias name
30+
# set(MODULE_INCLUDE ...) - set include (by default see below include_directories)
31+
# set(MODULE_INCLUDE_PRIVATE ...) - set private include
32+
# set(MODULE_DEF ...) - set definitions
33+
# set(MODULE_DEF_PRIVATE ...) - set private definitions
34+
# set(MODULE_SRC ...) - set sources and headers files
35+
# set(MODULE_LINK ...) - set libraries for link
36+
# set(MODULE_QRC somename.qrc) - set resource (qrc) file
37+
# set(MODULE_BIG_QRC somename.qrc) - set big resource (qrc) file
38+
# set(MODULE_QML_IMPORT ...) - set Qml import for QtCreator (so that there is code highlighting, jump, etc.)
39+
# set(MODULE_QMLAPI_IMPORT ...) - set Qml api import for QtCreator (so that there is code highlighting, jump, etc.)
40+
# set(MODULE_QMLEXT_IMPORT ...) - set Qml extensions import for QtCreator (so that there is code highlighting, jump, etc.)
41+
# set(MODULE_IS_STUB ON) - set a mark that the module is stub
42+
43+
# After all the settings you need to do:
44+
# setup_module()
45+
46+
macro(declare_module name)
47+
set(MODULE ${name})
48+
# just reset all settings
49+
unset(MODULE_ALIAS)
50+
unset(MODULE_INCLUDE)
51+
unset(MODULE_DEF)
52+
unset(MODULE_SRC)
53+
unset(MODULE_LINK)
54+
set(MODULE_USE_QT ON)
55+
unset(MODULE_QRC)
56+
unset(MODULE_BIG_QRC)
57+
unset(MODULE_QML_IMPORT)
58+
unset(MODULE_QMLAPI_IMPORT)
59+
unset(MODULE_QMLEXT_IMPORT)
60+
unset(MODULE_IS_STUB)
61+
endmacro()
62+
63+
macro(add_qml_import_path_if_not_empty input_var)
64+
if (${input_var})
65+
add_qml_import_path(${${input_var}})
66+
endif()
67+
endmacro()
68+
69+
macro(setup_module)
70+
set(ARGS)
71+
72+
if (NOT MODULE_USE_QT)
73+
list(APPEND ARGS NO_QT)
74+
endif()
75+
76+
if (MODULE_IS_STUB)
77+
list(APPEND ARGS STUB)
78+
endif()
79+
80+
if (MODULE_ALIAS)
81+
list(APPEND ARGS ALIAS ${MODULE_ALIAS})
82+
endif()
83+
84+
muse_create_module(${MODULE} ${ARGS})
85+
86+
target_sources(${MODULE} PRIVATE ${MODULE_SRC})
87+
88+
if (MODULE_USE_QT AND MUSE_QT_SUPPORT)
89+
if (MODULE_QRC)
90+
qt_add_resources(RCC_SOURCES ${MODULE_QRC})
91+
target_sources(${MODULE} PRIVATE ${RCC_SOURCES})
92+
endif()
93+
94+
if (MODULE_BIG_QRC)
95+
qt_add_big_resources(RCC_BIG_SOURCES ${MODULE_BIG_QRC})
96+
target_sources(${MODULE} PRIVATE ${RCC_BIG_SOURCES})
97+
endif()
98+
endif()
99+
100+
add_qml_import_path_if_not_empty(MODULE_QML_IMPORT)
101+
add_qml_import_path_if_not_empty(MODULE_QMLAPI_IMPORT)
102+
add_qml_import_path_if_not_empty(MODULE_QMLEXT_IMPORT)
103+
104+
if (BUILD_SHARED_LIBS)
105+
install(TARGETS ${MODULE} DESTINATION ${SHARED_LIBS_INSTALL_DESTINATION})
106+
endif()
107+
108+
if (NOT MUSE_FRAMEWORK_PATH)
109+
set(MUSE_FRAMEWORK_PATH ${PROJECT_SOURCE_DIR})
110+
endif()
111+
112+
target_include_directories(${MODULE}
113+
PRIVATE ${MODULE_INCLUDE_PRIVATE}
114+
PUBLIC ${MODULE_INCLUDE}
115+
)
116+
117+
target_compile_definitions(${MODULE} PUBLIC
118+
${MODULE_DEF}
119+
${MODULE}_QML_IMPORT="${MODULE_QML_IMPORT}"
120+
)
121+
122+
target_compile_definitions(${MODULE} PRIVATE
123+
${MODULE_DEF_PRIVATE}
124+
)
125+
126+
target_link_libraries(${MODULE} PRIVATE ${MODULE_LINK})
127+
endmacro()

sandbox/engraving/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ set(MU_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
1111
set(PROJECT_ROOT_DIR ${MU_ROOT})
1212

1313
set(CMAKE_MODULE_PATH
14-
${MU_ROOT}/build
15-
${MU_ROOT}/build/cmake
14+
${MU_ROOT}/buildscripts
15+
${MU_ROOT}/buildscripts/cmake
16+
${MU_ROOT}/src/framework/cmake
1617
${CMAKE_MODULE_PATH}
1718
)
1819

sandbox/web_sandbox/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ set(MU_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
1313
set(PROJECT_ROOT_DIR ${MU_ROOT})
1414

1515
set(CMAKE_MODULE_PATH
16+
${MU_ROOT}/buildscripts
1617
${MU_ROOT}/buildscripts/cmake
18+
${MU_ROOT}/src/framework/cmake
1719
${CMAKE_MODULE_PATH}
1820
)
1921

2022
include(SetupBuildEnvironment)
2123
include(GetPlatformInfo)
22-
include(DeclareModuleSetup)
24+
include(MuseCreateModule)
2325

2426
# Qt
2527
set(qt_components Core Gui Quick Qml Widgets)

buildscripts/cmake/DeclareModuleSetup.cmake renamed to src/framework/cmake/MuseCreateModule.cmake

Lines changed: 12 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ macro(add_qml_import_path import_path)
2929
endif()
3030
endmacro()
3131

32+
# - Sets up precompiled headers for the given target, with a workaround for clang + ccache
33+
function(target_precompile_headers_clang_ccache target)
34+
target_precompile_headers(${target} ${ARGN})
35+
36+
# https://discourse.cmake.org/t/ccache-clang-and-fno-pch-timestamp/7253
37+
if (CC_IS_CLANG AND COMPILER_CACHE_PROGRAM)
38+
target_compile_options(${target} PRIVATE
39+
"$<$<COMPILE_LANGUAGE:CXX>:SHELL:-Xclang -fno-pch-timestamp>"
40+
)
41+
endif()
42+
endfunction()
43+
3244
# - Creates a target and sets up common properties for Muse modules
3345
function(muse_create_module target_name)
3446
set(options NO_COVERAGE NO_QT NO_PCH NO_UNITY STUB)
@@ -190,121 +202,3 @@ function(fixup_qml_module_dependencies target_name)
190202
add_dependencies(${target_name}_qmltyperegistration ${target_name})
191203
endif()
192204
endfunction()
193-
194-
### LEGACY MACROS
195-
196-
## Declare
197-
# declare_module(somename) - set module (target) name
198-
199-
## Setup
200-
# set(MODULE somename) - set module (target) name
201-
# set(MODULE_ALIAS somename) - set module (target) alias name
202-
# set(MODULE_INCLUDE ...) - set include (by default see below include_directories)
203-
# set(MODULE_INCLUDE_PRIVATE ...) - set private include
204-
# set(MODULE_DEF ...) - set definitions
205-
# set(MODULE_DEF_PRIVATE ...) - set private definitions
206-
# set(MODULE_SRC ...) - set sources and headers files
207-
# set(MODULE_LINK ...) - set libraries for link
208-
# set(MODULE_QRC somename.qrc) - set resource (qrc) file
209-
# set(MODULE_BIG_QRC somename.qrc) - set big resource (qrc) file
210-
# set(MODULE_QML_IMPORT ...) - set Qml import for QtCreator (so that there is code highlighting, jump, etc.)
211-
# set(MODULE_QMLAPI_IMPORT ...) - set Qml api import for QtCreator (so that there is code highlighting, jump, etc.)
212-
# set(MODULE_QMLEXT_IMPORT ...) - set Qml extensions import for QtCreator (so that there is code highlighting, jump, etc.)
213-
# set(MODULE_IS_STUB ON) - set a mark that the module is stub
214-
215-
# After all the settings you need to do:
216-
# setup_module()
217-
218-
macro(declare_module name)
219-
set(MODULE ${name})
220-
# just reset all settings
221-
unset(MODULE_ALIAS)
222-
unset(MODULE_INCLUDE)
223-
unset(MODULE_DEF)
224-
unset(MODULE_SRC)
225-
unset(MODULE_LINK)
226-
set(MODULE_USE_QT ON)
227-
unset(MODULE_QRC)
228-
unset(MODULE_BIG_QRC)
229-
unset(MODULE_QML_IMPORT)
230-
unset(MODULE_QMLAPI_IMPORT)
231-
unset(MODULE_QMLEXT_IMPORT)
232-
unset(MODULE_IS_STUB)
233-
endmacro()
234-
235-
macro(add_qml_import_path_if_not_empty input_var)
236-
if (${input_var})
237-
add_qml_import_path(${${input_var}})
238-
endif()
239-
endmacro()
240-
241-
function(target_precompile_headers_clang_ccache target)
242-
target_precompile_headers(${target} ${ARGN})
243-
244-
# https://discourse.cmake.org/t/ccache-clang-and-fno-pch-timestamp/7253
245-
if (CC_IS_CLANG AND COMPILER_CACHE_PROGRAM)
246-
target_compile_options(${target} PRIVATE
247-
"$<$<COMPILE_LANGUAGE:CXX>:SHELL:-Xclang -fno-pch-timestamp>"
248-
)
249-
endif()
250-
endfunction()
251-
252-
macro(setup_module)
253-
set(ARGS)
254-
255-
if (NOT MODULE_USE_QT)
256-
list(APPEND ARGS NO_QT)
257-
endif()
258-
259-
if (MODULE_IS_STUB)
260-
list(APPEND ARGS STUB)
261-
endif()
262-
263-
if (MODULE_ALIAS)
264-
list(APPEND ARGS ALIAS ${MODULE_ALIAS})
265-
endif()
266-
267-
muse_create_module(${MODULE} ${ARGS})
268-
269-
target_sources(${MODULE} PRIVATE ${MODULE_SRC})
270-
271-
if (MODULE_USE_QT AND MUSE_QT_SUPPORT)
272-
if (MODULE_QRC)
273-
qt_add_resources(RCC_SOURCES ${MODULE_QRC})
274-
target_sources(${MODULE} PRIVATE ${RCC_SOURCES})
275-
endif()
276-
277-
if (MODULE_BIG_QRC)
278-
qt_add_big_resources(RCC_BIG_SOURCES ${MODULE_BIG_QRC})
279-
target_sources(${MODULE} PRIVATE ${RCC_BIG_SOURCES})
280-
endif()
281-
endif()
282-
283-
add_qml_import_path_if_not_empty(MODULE_QML_IMPORT)
284-
add_qml_import_path_if_not_empty(MODULE_QMLAPI_IMPORT)
285-
add_qml_import_path_if_not_empty(MODULE_QMLEXT_IMPORT)
286-
287-
if (BUILD_SHARED_LIBS)
288-
install(TARGETS ${MODULE} DESTINATION ${SHARED_LIBS_INSTALL_DESTINATION})
289-
endif()
290-
291-
if (NOT MUSE_FRAMEWORK_PATH)
292-
set(MUSE_FRAMEWORK_PATH ${PROJECT_SOURCE_DIR})
293-
endif()
294-
295-
target_include_directories(${MODULE}
296-
PRIVATE ${MODULE_INCLUDE_PRIVATE}
297-
PUBLIC ${MODULE_INCLUDE}
298-
)
299-
300-
target_compile_definitions(${MODULE} PUBLIC
301-
${MODULE_DEF}
302-
${MODULE}_QML_IMPORT="${MODULE_QML_IMPORT}"
303-
)
304-
305-
target_compile_definitions(${MODULE} PRIVATE
306-
${MODULE_DEF_PRIVATE}
307-
)
308-
309-
target_link_libraries(${MODULE} PRIVATE ${MODULE_LINK})
310-
endmacro()

src/framework/cmake/MuseSetupConfiguration.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,4 @@ include(${CMAKE_CURRENT_LIST_DIR}/MuseFetchDependencies.cmake)
6868

6969
configure_file(${CMAKE_CURRENT_LIST_DIR}/muse_framework_config.h.in muse_framework_config.h )
7070

71-
include(DeclareModuleSetup)
71+
include(MuseCreateModule)

src/web/audioengine/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ set(CMAKE_MODULE_PATH
4141
${MU_ROOT}
4242
${MU_ROOT}/buildscripts
4343
${MU_ROOT}/buildscripts/cmake
44+
${MU_ROOT}/src/framework/cmake
4445
${CMAKE_MODULE_PATH}
4546
)
4647

4748

48-
include(DeclareModuleSetup)
49+
include(MuseCreateModule)
4950
include(SetupCompileWarnings)
5051
include(GetBuildType)
5152

tools/check_build_without_qt/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ set(MUSE_FRAMEWORK_PATH ${MU_ROOT})
1414
set(CMAKE_MODULE_PATH
1515
${MU_ROOT}/buildscripts
1616
${MU_ROOT}/buildscripts/cmake
17+
${MU_ROOT}/src/framework/cmake
1718
${CMAKE_MODULE_PATH}
1819
)
1920

tools/ziprw/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ set(MU_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
1111
set(MUSE_FRAMEWORK_PATH ${MU_ROOT})
1212

1313
set(CMAKE_MODULE_PATH
14-
${MU_ROOT}/buildscripts
15-
${MU_ROOT}/buildscripts/cmake
16-
${CMAKE_MODULE_PATH}
14+
${MU_ROOT}/buildscripts
15+
${MU_ROOT}/buildscripts/cmake
16+
${MU_ROOT}/src/framework/cmake
17+
${CMAKE_MODULE_PATH}
1718
)
1819

1920
include(SetupBuildEnvironment)
@@ -34,7 +35,7 @@ add_compile_definitions(
3435

3536
configure_file(${MU_ROOT}/src/framework/cmake/muse_framework_config.h.in muse_framework_config.h )
3637

37-
include(DeclareModuleSetup)
38+
include(MuseCreateModule)
3839

3940
set(GLOBAL_NO_INTERNAL ON)
4041
add_subdirectory(${MU_ROOT}/src/framework/global global)

0 commit comments

Comments
 (0)