You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

53 lines
1.9 KiB

include(CheckCCompilerFlag)
# Add list of compiler warnings
# Every warning gets checked with check_c_compiler_flags
function(add_compiler_warnings)
foreach (flag ${ARGN})
check_c_compiler_flag(${flag} ok)
if (ok)
add_compile_options(${flag})
endif ()
endforeach ()
endfunction ()
# Create new ${EXE,MODULE,SHARED}_LINKER_FLAGS build type for list of linker flags
# Every linker flag gets checked with check_c_compiler_flag
function(create_custom_linker_flags name)
foreach (flag ${ARGN})
check_c_compiler_flag(-Wl,${flag} ok)
if (ok)
if (ldflags)
set(ldflags "${ldflags},${flag}")
else ()
set(ldflags "-Wl,${flag}")
endif ()
endif ()
endforeach ()
string(TOUPPER ${name} upper)
set(CMAKE_EXE_LINKER_FLAGS_${upper} "${ldflags}" CACHE STRING "${name} exe linker flags" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_${upper} "${ldflags}" CACHE STRING "${name} module linker flags" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_${upper} "${ldflags}" CACHE STRING "${name} shared linker flags" FORCE)
mark_as_advanced(CMAKE_EXE_LINKER_FLAGS_${upper} CMAKE_SHARED_LINKER_FLAGS_${upper} CMAKE_MODULE_LINKER_FLAGS_${upper})
endfunction ()
# Create new {C,CXX}_FLAGS build type for list of compiler flags
# Every compiler flag gets checked with check_c_compiler_flag
function(create_custom_compiler_flags name)
foreach (flag ${ARGN})
check_c_compiler_flag(${flag} ok)
if (ok)
if (cflags)
set(cflags "${cflags} ${flag}")
else ()
set(cflags "${flag}")
endif ()
endif ()
endforeach ()
string(TOUPPER ${name} upper)
set(CMAKE_C_FLAGS_${upper} "${cflags}" CACHE STRING "${name} C flags" FORCE)
set(CMAKE_CXX_FLAGS_${upper} "${cflags}" CACHE STRING "${name} CXX flags" FORCE)
mark_as_advanced(CMAKE_CXX_FLAGS_${upper} CMAKE_C_FLAGS_${upper})
endfunction ()