@@ -29,6 +29,18 @@ macro(add_qml_import_path import_path)
2929 endif ()
3030endmacro ()
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
3345function (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 ()
192204endfunction ()
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 ()
0 commit comments