| # 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_WEBCORE_DIR} |
| # and prepends this to every member of dependencies list |
| MACRO(ADD_SOURCE_WEBCORE_DERIVED_DEPENDENCIES _source _deps) |
| SET(_tmp "") |
| FOREACH (f ${_deps}) |
| LIST(APPEND _tmp "${DERIVED_SOURCES_WEBCORE_DIR}/${f}") |
| ENDFOREACH () |
| |
| ADD_SOURCE_DEPENDENCIES(${_source} ${_tmp}) |
| UNSET(_tmp) |
| ENDMACRO() |
| |