|
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 ()
|