aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake')
-rw-r--r--vcpkg/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake58
1 files changed, 58 insertions, 0 deletions
diff --git a/vcpkg/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake b/vcpkg/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake
new file mode 100644
index 0000000..d259276
--- /dev/null
+++ b/vcpkg/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake
@@ -0,0 +1,58 @@
+# 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()