File: SetDefaultTargetProperties.cmake

package info (click to toggle)
veyon 4.9.5%2Brepack1-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 14,032 kB
  • sloc: cpp: 51,739; ansic: 7,307; python: 228; makefile: 222; sh: 48
file content (29 lines) | stat: -rw-r--r-- 1,355 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
macro(set_default_target_properties TARGET_NAME)
	set_property(TARGET ${TARGET_NAME} PROPERTY NO_SYSTEM_FROM_IMPORTED ON)
	set_property(TARGET ${TARGET_NAME} PROPERTY CXX_STANDARD 17)
	set_property(TARGET ${TARGET_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
	target_compile_options(${TARGET_NAME} PRIVATE "-Wall;-Werror")
	if(WITH_LTO)
		if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13.0")
			target_compile_options(${TARGET_NAME} PRIVATE ${GCC_LTO_FLAGS})
			target_link_options(${TARGET_NAME} PRIVATE ${GCC_LTO_FLAGS})
		else()
			set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
		endif()
	endif()
	if(WITH_ADDRESS_SANITIZER)
		target_link_options(${TARGET_NAME} PRIVATE "-static-libsan")
		target_compile_options(${TARGET_NAME} PRIVATE "-fsanitize=address")
		target_link_options(${TARGET_NAME} PRIVATE "-fsanitize=address")
	else()
		set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-Wl,-no-undefined")
	endif()
	if(WITH_THREAD_SANITIZER)
		target_compile_options(${TARGET_NAME} PRIVATE "-fsanitize=thread")
		target_link_options(${TARGET_NAME} PRIVATE "-fsanitize=thread")
	endif()
	if(WITH_UB_SANITIZER)
		target_compile_options(${TARGET_NAME} PRIVATE "-fsanitize=undefined")
		target_link_options(${TARGET_NAME} PRIVATE "-fsanitize=undefined")
	endif()
endmacro()