forked from quickshell/quickshell
		
	all: optimize build
This commit is contained in:
		
							parent
							
								
									1168879d6d
								
							
						
					
					
						commit
						7ffce72b31
					
				
					 51 changed files with 1526 additions and 1277 deletions
				
			
		
							
								
								
									
										85
									
								
								cmake/pch.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								cmake/pch.cmake
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
# pch breaks clang-tidy..... somehow
 | 
			
		||||
if (NOT NO_PCH)
 | 
			
		||||
	file(GENERATE
 | 
			
		||||
		OUTPUT ${CMAKE_BINARY_DIR}/pchstub.cpp
 | 
			
		||||
		CONTENT "// intentionally empty"
 | 
			
		||||
	)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
function (qs_pch target)
 | 
			
		||||
	if (NO_PCH)
 | 
			
		||||
		return()
 | 
			
		||||
	endif()
 | 
			
		||||
 | 
			
		||||
	cmake_parse_arguments(PARSE_ARGV 1 arg "" "SET" "")
 | 
			
		||||
 | 
			
		||||
	if ("${arg_SET}" STREQUAL "")
 | 
			
		||||
		set(arg_SET "common")
 | 
			
		||||
	endif()
 | 
			
		||||
 | 
			
		||||
	target_precompile_headers(${target} REUSE_FROM "qs-pchset-${arg_SET}")
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function (qs_module_pch target)
 | 
			
		||||
	qs_pch(${target} ${ARGN})
 | 
			
		||||
	qs_pch("${target}plugin" SET plugin)
 | 
			
		||||
	qs_pch("${target}plugin_init" SET plugin)
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function (qs_add_pchset SETNAME)
 | 
			
		||||
	if (NO_PCH)
 | 
			
		||||
		return()
 | 
			
		||||
	endif()
 | 
			
		||||
 | 
			
		||||
	cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "HEADERS;DEPENDENCIES")
 | 
			
		||||
 | 
			
		||||
	set(LIBNAME "qs-pchset-${SETNAME}")
 | 
			
		||||
 | 
			
		||||
	add_library(${LIBNAME} ${CMAKE_BINARY_DIR}/pchstub.cpp)
 | 
			
		||||
	target_link_libraries(${LIBNAME} ${arg_DEPENDENCIES})
 | 
			
		||||
	target_precompile_headers(${LIBNAME} PUBLIC ${arg_HEADERS})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
set(COMMON_PCH_SET
 | 
			
		||||
	<chrono>
 | 
			
		||||
	<memory>
 | 
			
		||||
	<vector>
 | 
			
		||||
	<qdebug.h>
 | 
			
		||||
	<qobject.h>
 | 
			
		||||
	<qmetatype.h>
 | 
			
		||||
	<qstring.h>
 | 
			
		||||
	<qchar.h>
 | 
			
		||||
	<qlist.h>
 | 
			
		||||
	<qabstractitemmodel.h>
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
qs_add_pchset(common
 | 
			
		||||
	DEPENDENCIES Qt::Quick
 | 
			
		||||
	HEADERS ${COMMON_PCH_SET}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
qs_add_pchset(large
 | 
			
		||||
	DEPENDENCIES Qt::Quick
 | 
			
		||||
	HEADERS
 | 
			
		||||
		${COMMON_PCH_SET}
 | 
			
		||||
		<qiodevice.h>
 | 
			
		||||
		<qevent.h>
 | 
			
		||||
		<qcoreapplication.h>
 | 
			
		||||
		<qqmlengine.h>
 | 
			
		||||
		<qquickitem.h>
 | 
			
		||||
		<qquickwindow.h>
 | 
			
		||||
		<qcolor.h>
 | 
			
		||||
		<qdir.h>
 | 
			
		||||
		<qtimer.h>
 | 
			
		||||
		<qabstractitemmodel.h>
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# including qplugin.h directly will cause required symbols to disappear
 | 
			
		||||
qs_add_pchset(plugin
 | 
			
		||||
	DEPENDENCIES Qt::Qml
 | 
			
		||||
	HEADERS
 | 
			
		||||
		<qobject.h>
 | 
			
		||||
		<qjsonobject.h>
 | 
			
		||||
		<qpointer.h>
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										20
									
								
								cmake/util.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								cmake/util.cmake
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
function (qs_append_qmldir target text)
 | 
			
		||||
	get_property(qmldir_content TARGET ${target} PROPERTY _qt_internal_qmldir_content)
 | 
			
		||||
 | 
			
		||||
	if ("${qmldir_content}" STREQUAL "")
 | 
			
		||||
		message(WARNING "qs_append_qmldir depends on private Qt cmake code, which has broken.")
 | 
			
		||||
		return()
 | 
			
		||||
	endif()
 | 
			
		||||
 | 
			
		||||
	set_property(TARGET ${target} APPEND_STRING PROPERTY _qt_internal_qmldir_content ${text})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# DEPENDENCIES introduces a cmake dependency which we don't need with static modules.
 | 
			
		||||
# This greatly improves comp speed by not introducing those dependencies.
 | 
			
		||||
function (qs_add_module_deps_light target)
 | 
			
		||||
	foreach (dep IN LISTS ARGN)
 | 
			
		||||
		string(APPEND qmldir_extra "depends ${dep}\n")
 | 
			
		||||
	endforeach()
 | 
			
		||||
 | 
			
		||||
	qs_append_qmldir(${target} "${qmldir_extra}")
 | 
			
		||||
endfunction()
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue