summaryrefslogtreecommitdiffstats
path: root/Source/cmake/WebKitHelpers.cmake
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-06 11:45:16 +0100
committerSteve Block <steveblock@google.com>2011-05-12 13:44:10 +0100
commitcad810f21b803229eb11403f9209855525a25d57 (patch)
tree29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /Source/cmake/WebKitHelpers.cmake
parent121b0cf4517156d0ac5111caf9830c51b69bae8f (diff)
downloadexternal_webkit-cad810f21b803229eb11403f9209855525a25d57.zip
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'Source/cmake/WebKitHelpers.cmake')
-rw-r--r--Source/cmake/WebKitHelpers.cmake79
1 files changed, 79 insertions, 0 deletions
diff --git a/Source/cmake/WebKitHelpers.cmake b/Source/cmake/WebKitHelpers.cmake
new file mode 100644
index 0000000..58c506b
--- /dev/null
+++ b/Source/cmake/WebKitHelpers.cmake
@@ -0,0 +1,79 @@
+# Sets extra compile flags for a target, depending on the compiler being used.
+# Currently, only GCC is supported.
+MACRO(WEBKIT_SET_EXTRA_COMPILER_FLAGS _target)
+ IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ GET_TARGET_PROPERTY(OLD_COMPILE_FLAGS ${_target} COMPILE_FLAGS)
+ IF (${OLD_COMPILE_FLAGS} STREQUAL "OLD_COMPILE_FLAGS-NOTFOUND")
+ SET(OLD_COMPILE_FLAGS "")
+ ENDIF ()
+
+ # Disable some optimizations on buggy compiler versions
+ # GCC 4.5.1 does not implement -ftree-sra correctly
+ EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS -dumpversion OUTPUT_VARIABLE COMPILER_VERSION)
+ IF (${COMPILER_VERSION} STREQUAL "4.5.1")
+ SET(OLD_COMPILE_FLAGS "${OLD_COMPILE_FLAGS} -fno-tree-sra")
+ ENDIF ()
+
+ IF (NOT SHARED_CORE)
+ SET(OLD_COMPILE_FLAGS "-fPIC -fvisibility=hidden ${OLD_COMPILE_FLAGS}")
+ ENDIF ()
+
+ SET(OLD_COMPILE_FLAGS "-fno-exceptions -fno-strict-aliasing ${OLD_COMPILE_FLAGS}")
+
+ # Enable warnings by default
+ SET(OLD_COMPILE_FLAGS "-W -DANOTHER_BRICK_IN_THE -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat -Wformat-security -Wmissing-format-attribute -Wno-format-y2k -Wno-parentheses -Wno-unused-parameter -Wpointer-arith -Wreturn-type -Wundef -Wwrite-strings ${OLD_COMPILE_FLAGS}")
+
+ SET_TARGET_PROPERTIES (${_target} PROPERTIES
+ COMPILE_FLAGS "${OLD_COMPILE_FLAGS}")
+
+ UNSET(OLD_COMPILE_FLAGS)
+ ENDIF ()
+ENDMACRO()
+
+
+# Append the given flag to the target property.
+# Builds on top of GET_TARGET_PROPERTY() and SET_TARGET_PROPERTIES()
+MACRO (ADD_TARGET_PROPERTIES _target _property _flags)
+ GET_TARGET_PROPERTY (_tmp ${_target} ${_property})
+ IF (NOT _tmp)
+ SET (_tmp "")
+ ENDIF (NOT _tmp)
+
+ FOREACH (f ${_flags})
+ SET (_tmp "${_tmp} ${f}")
+ ENDFOREACH (f ${_flags})
+
+ SET_TARGET_PROPERTIES (${_target} PROPERTIES ${_property} ${_tmp})
+ UNSET (_tmp)
+ENDMACRO (ADD_TARGET_PROPERTIES _target _property _flags)
+
+
+# Append the given dependencies to the source file
+MACRO(ADD_SOURCE_DEPENDENCIES _source _deps)
+ GET_SOURCE_FILE_PROPERTY(_tmp ${_source} OBJECT_DEPENDS)
+ IF (NOT _tmp)
+ SET (_tmp "")
+ ENDIF ()
+
+ FOREACH (f ${_deps})
+ LIST(APPEND _tmp "${f}")
+ ENDFOREACH ()
+
+ SET_SOURCE_FILES_PROPERTIES(${_source} PROPERTIES OBJECT_DEPENDS "${_tmp}")
+ UNSET(_tmp)
+ENDMACRO()
+
+
+# Append the given dependencies to the source file
+# This one consider the given dependencies are in ${DERIVED_SOURCES_DIR}
+# and prepends this to every member of dependencies list
+MACRO(ADD_SOURCE_DERIVED_DEPENDENCIES _source _deps)
+ SET(_tmp "")
+ FOREACH (f ${_deps})
+ LIST(APPEND _tmp "${DERIVED_SOURCES_DIR}/${f}")
+ ENDFOREACH ()
+
+ ADD_SOURCE_DEPENDENCIES(${_source} ${_tmp})
+ UNSET(_tmp)
+ENDMACRO()
+