4d86b8ed128d12ab5c9d84fb0133c35d6a71c337
[WebKit-https.git] / cmake / WebKitHelpers.cmake
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_CXX_COMPILER_ID} STREQUAL "GNU")
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 "")
8     ENDIF ()
9     SET_TARGET_PROPERTIES (${_target} PROPERTIES
10        COMPILE_FLAGS "-fno-exceptions -fstrict-aliasing -fvisibility=hidden ${OLD_COMPILE_FLAGS}")
11     UNSET(OLD_COMPILE_FLAGS)
12   ENDIF ()
13 ENDMACRO()
14
15
16 # Append the given flag to the target property.
17 # Builds on top of GET_TARGET_PROPERTY() and SET_TARGET_PROPERTIES()
18 MACRO (ADD_TARGET_PROPERTIES _target _property _flags)
19   GET_TARGET_PROPERTY (_tmp ${_target} ${_property})
20   IF (NOT _tmp)
21     SET (_tmp "")
22   ENDIF (NOT _tmp)
23
24   FOREACH (f ${_flags})
25     SET (_tmp "${_tmp} ${f}")
26   ENDFOREACH (f ${_flags})
27
28   SET_TARGET_PROPERTIES (${_target} PROPERTIES ${_property} ${_tmp})
29   UNSET (_tmp)
30 ENDMACRO (ADD_TARGET_PROPERTIES _target _property _flags)
31
32
33 # Append the given dependencies to the source file
34 MACRO(ADD_SOURCE_DEPENDENCIES _source _deps)
35   GET_SOURCE_FILE_PROPERTY(_tmp ${_source} OBJECT_DEPENDS)
36   IF (NOT _tmp)
37     SET (_tmp "")
38   ENDIF ()
39
40   FOREACH (f ${_deps})
41     LIST(APPEND _tmp "${f}")
42   ENDFOREACH ()
43
44   SET_SOURCE_FILES_PROPERTIES(${_source} PROPERTIES OBJECT_DEPENDS "${_tmp}")
45   UNSET(_tmp)
46 ENDMACRO()
47
48
49 # Append the given dependencies to the source file
50 # This one consider the given dependencies are in ${DERIVED_SOURCES_DIR}
51 # and prepends this to every member of dependencies list
52 MACRO(ADD_SOURCE_DERIVED_DEPENDENCIES _source _deps)
53   SET(_tmp "")
54   FOREACH (f ${_deps})
55     LIST(APPEND _tmp "${DERIVED_SOURCES_DIR}/${f}")
56   ENDFOREACH ()
57
58   ADD_SOURCE_DEPENDENCIES(${_source} ${_tmp})
59   UNSET(_tmp)
60 ENDMACRO()
61