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