aboutsummaryrefslogtreecommitdiff
path: root/buildtools/cmake/RTTI.cmake
blob: b94849747ef7b0875b70082d71d806ade813f2d8 (plain)
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
30
31
function(target_flag_rtti_msvc TARGET_NAME ENABLED)
	if(ENABLED)
		target_compile_options(${TARGET_NAME} PRIVATE /GR)
	else()
		target_compile_options(${TARGET_NAME} PRIVATE /GR-)
	endif()
endfunction()

function(target_flag_rtti_gcc TARGET_NAME ENABLED)
	if(ENABLED)
		target_compile_options(${TARGET_NAME} PRIVATE -frtti)
	else()
		target_compile_options(${TARGET_NAME} PRIVATE -fno-rtti)
	endif()
endfunction()

function(target_flag_rtti TARGET_NAME ENABLED)
	if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
		target_flag_rtti_msvc(${TARGET_NAME} ${ENABLED})
	elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
		if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
			target_flag_rtti_msvc(${TARGET_NAME} ${ENABLED})
		elseif(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "GNU")
			target_flag_rtti_gcc(${TARGET_NAME} ${ENABLED})
		endif()
	elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
		target_flag_rtti_gcc(${TARGET_NAME} ${ENABLED})
	else()
		message(FATAL "target_flag_rtti(): Unknown compiler ${CMAKE_CXX_COMPILER_ID}")
	endif()
endfunction()