1 # Sets extra compile flags for a target, depending on the compiler being used.
2 # Currently, only GCC is supported.
3 MACRO(WEBKIT_SET_EXTRA_COMPILER_FLAGS _target)
4 IF (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
5 GET_TARGET_PROPERTY(OLD_COMPILE_FLAGS ${_target} COMPILE_FLAGS)
6 IF (${OLD_COMPILE_FLAGS} STREQUAL "OLD_COMPILE_FLAGS-NOTFOUND")
7 SET(OLD_COMPILE_FLAGS "")
10 INCLUDE(TestCXXAcceptsFlag)
11 CHECK_CXX_ACCEPTS_FLAG("-dumpversion" CMAKE_CXX_ACCEPTS_DUMPVERSION)
12 IF (CMAKE_CXX_ACCEPTS_DUMPVERSION)
13 EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS -dumpversion OUTPUT_VARIABLE COMPILER_VERSION)
15 EXEC_PROGRAM("${CMAKE_CXX_COMPILER} -E -Wp,-dM - < /dev/null | grep '#define __VERSION__' | grep -E -o '[0-9]+\\.[0-9]+\\.?[0-9]+?'" OUTPUT_VARIABLE COMPILER_VERSION)
18 # Disable some optimizations on buggy compiler versions
19 # GCC 4.5.1 does not implement -ftree-sra correctly
20 IF (${COMPILER_VERSION} STREQUAL "4.5.1")
21 SET(OLD_COMPILE_FLAGS "${OLD_COMPILE_FLAGS} -fno-tree-sra")
24 #if ENABLE(TIZEN_WEBKIT2_EFL_WTR)
25 # Dear upversioners, please don't merge below three lines.
26 IF (NOT SHARED_CORE AND NOT ENABLE_TIZEN_WEBKIT2_EFL_WTR)
27 SET(OLD_COMPILE_FLAGS "-fvisibility=hidden ${OLD_COMPILE_FLAGS}")
31 GET_TARGET_PROPERTY(TARGET_TYPE ${_target} TYPE)
32 IF (${TARGET_TYPE} STREQUAL "STATIC_LIBRARY") # -fPIC is automatically added to shared libraries
33 SET(OLD_COMPILE_FLAGS "-fPIC ${OLD_COMPILE_FLAGS}")
36 SET(OLD_COMPILE_FLAGS "-fno-exceptions -fno-strict-aliasing ${OLD_COMPILE_FLAGS}")
38 # Enable warnings by default
39 #SET(OLD_COMPILE_FLAGS "-W -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}")
40 SET(OLD_COMPILE_FLAGS "-W -Wall -Wextra -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}")
42 # Disable C++0x compat warnings for GCC >= 4.6.0 until we build
44 IF (NOT ${COMPILER_VERSION} VERSION_LESS "4.6.0")
45 SET(OLD_COMPILE_FLAGS "${OLD_COMPILE_FLAGS} -Wno-c++0x-compat")
48 SET_TARGET_PROPERTIES (${_target} PROPERTIES
49 COMPILE_FLAGS "${OLD_COMPILE_FLAGS}")
51 UNSET(OLD_COMPILE_FLAGS)
56 # Append the given flag to the target property.
57 # Builds on top of GET_TARGET_PROPERTY() and SET_TARGET_PROPERTIES()
58 MACRO (ADD_TARGET_PROPERTIES _target _property _flags)
59 GET_TARGET_PROPERTY (_tmp ${_target} ${_property})
65 SET (_tmp "${_tmp} ${f}")
66 ENDFOREACH (f ${_flags})
68 SET_TARGET_PROPERTIES (${_target} PROPERTIES ${_property} ${_tmp})
70 ENDMACRO (ADD_TARGET_PROPERTIES _target _property _flags)
73 # Append the given dependencies to the source file
74 MACRO(ADD_SOURCE_DEPENDENCIES _source _deps)
75 GET_SOURCE_FILE_PROPERTY(_tmp ${_source} OBJECT_DEPENDS)
81 LIST(APPEND _tmp "${f}")
84 SET_SOURCE_FILES_PROPERTIES(${_source} PROPERTIES OBJECT_DEPENDS "${_tmp}")
89 # Append the given dependencies to the source file
90 # This one consider the given dependencies are in ${DERIVED_SOURCES_WEBCORE_DIR}
91 # and prepends this to every member of dependencies list
92 MACRO(ADD_SOURCE_WEBCORE_DERIVED_DEPENDENCIES _source _deps)
95 LIST(APPEND _tmp "${DERIVED_SOURCES_WEBCORE_DIR}/${f}")
98 ADD_SOURCE_DEPENDENCIES(${_source} ${_tmp})