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