mirror of https://github.com/microsoft/vcpkg.git
59 lines
2.7 KiB
CMake
59 lines
2.7 KiB
CMake
# VCPKG NOTE: A minimal version of WebKit's https://github.com/WebKit/WebKit/blob/0742522b24152262b04913242cb0b3c48de92ba0/Source/cmake/WebKitCompilerFlags.cmake
|
|
# To support the adapted ANGLE CMake buildsystem
|
|
|
|
# Checks whether all the given compiler flags are supported by the compiler.
|
|
# The _compiler may be either "C" or "CXX", and the result from the check
|
|
# will be stored in the variable named by _result.
|
|
function(WEBKIT_CHECK_COMPILER_FLAGS _compiler _result)
|
|
string(TOUPPER "${_compiler}" _compiler)
|
|
set(${_result} FALSE PARENT_SCOPE)
|
|
foreach (_flag IN LISTS ARGN)
|
|
# If an equals (=) character is present in a variable name, it will
|
|
# not be cached correctly, and the check will be retried ad nauseam.
|
|
string(REPLACE "=" "__" _cachevar "${_compiler}_COMPILER_SUPPORTS_${_flag}")
|
|
if (${_compiler} STREQUAL CXX)
|
|
check_cxx_compiler_flag("${_flag}" "${_cachevar}")
|
|
elseif (${_compiler} STREQUAL C)
|
|
check_c_compiler_flag("${_flag}" "${_cachevar}")
|
|
else ()
|
|
set(${_cachevar} FALSE CACHE INTERNAL "" FORCE)
|
|
message(WARNING "WEBKIT_CHECK_COMPILER_FLAGS: unknown compiler '${_compiler}'")
|
|
return()
|
|
endif ()
|
|
if (NOT ${_cachevar})
|
|
return()
|
|
endif ()
|
|
endforeach ()
|
|
set(${_result} TRUE PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
|
|
# Appends flags to COMPILE_OPTIONS of _subject if supported by the C
|
|
# or CXX _compiler. The _subject argument depends on its _kind, it may be
|
|
# a target name (with TARGET as _kind), or a path (with SOURCE or DIRECTORY
|
|
# as _kind).
|
|
function(WEBKIT_ADD_COMPILER_FLAGS _compiler _kind _subject)
|
|
foreach (_flag IN LISTS ARGN)
|
|
WEBKIT_CHECK_COMPILER_FLAGS(${_compiler} flag_supported "${_flag}")
|
|
if (flag_supported)
|
|
set_property(${_kind} ${_subject} APPEND PROPERTY COMPILE_OPTIONS "${_flag}")
|
|
endif ()
|
|
endforeach ()
|
|
endfunction()
|
|
|
|
# Appends flags to COMPILE_FLAGS of _target if supported by the C compiler.
|
|
# Note that it is simply not possible to pass different C and C++ flags, unless
|
|
# we drop support for the Visual Studio backend and use the COMPILE_LANGUAGE
|
|
# generator expression. This is a very serious limitation.
|
|
macro(WEBKIT_ADD_TARGET_C_FLAGS _target)
|
|
WEBKIT_ADD_COMPILER_FLAGS(C TARGET ${_target} ${ARGN})
|
|
endmacro()
|
|
|
|
# Appends flags to COMPILE_FLAGS of _target if supported by the C++ compiler.
|
|
# Note that it is simply not possible to pass different C and C++ flags, unless
|
|
# we drop support for the Visual Studio backend and use the COMPILE_LANGUAGE
|
|
# generator expression. This is a very serious limitation.
|
|
macro(WEBKIT_ADD_TARGET_CXX_FLAGS _target)
|
|
WEBKIT_ADD_COMPILER_FLAGS(CXX TARGET ${_target} ${ARGN})
|
|
endmacro()
|