diff options
-rw-r--r-- | cmake/macros/FindPCHSupport.cmake | 71 |
1 files changed, 45 insertions, 26 deletions
diff --git a/cmake/macros/FindPCHSupport.cmake b/cmake/macros/FindPCHSupport.cmake index b068b69c26b..49d4be904d1 100644 --- a/cmake/macros/FindPCHSupport.cmake +++ b/cmake/macros/FindPCHSupport.cmake @@ -11,7 +11,7 @@ FUNCTION(GET_COMMON_PCH_PARAMS PCH_HEADER PCH_FE INCLUDE_PREFIX) SET(INCLUDE_FLAGS ${INCLUDE_FLAGS_LIST} PARENT_SCOPE) ENDFUNCTION(GET_COMMON_PCH_PARAMS) -FUNCTION(GENERATE_CXX_PCH_COMMAND TARGET_NAME INCLUDE_FLAGS IN PCH_SRC OUT) +FUNCTION(GENERATE_CXX_PCH_COMMAND TARGET_NAME_LIST INCLUDE_FLAGS IN PCH_SRC OUT) IF (CMAKE_BUILD_TYPE) STRING(TOUPPER _${CMAKE_BUILD_TYPE} CURRENT_BUILD_TYPE) ENDIF () @@ -55,50 +55,69 @@ FUNCTION(GENERATE_CXX_PCH_COMMAND TARGET_NAME INCLUDE_FLAGS IN PCH_SRC OUT) DEPENDS ${OUT} ) - ADD_DEPENDENCIES(${TARGET_NAME} generate_${PCH_SRC_N}) + FOREACH(TARGET_NAME ${TARGET_NAME_LIST}) + ADD_DEPENDENCIES(${TARGET_NAME} generate_${PCH_SRC_N}) + ENDFOREACH() + ENDFUNCTION(GENERATE_CXX_PCH_COMMAND) -FUNCTION(ADD_CXX_PCH_GCC TARGET_NAME PCH_HEADER PCH_SOURCE) +FUNCTION(ADD_CXX_PCH_GCC TARGET_NAME_LIST PCH_HEADER PCH_SOURCE) GET_COMMON_PCH_PARAMS(${PCH_HEADER} "gch" "-I") - GENERATE_CXX_PCH_COMMAND(${TARGET_NAME} "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT}) - SET_TARGET_PROPERTIES( - ${TARGET_NAME} PROPERTIES - COMPILE_FLAGS "-include ${CMAKE_CURRENT_BINARY_DIR}/${PCH_HEADER_NAME}" - ) + GENERATE_CXX_PCH_COMMAND("${TARGET_NAME_LIST}" "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT}) + + FOREACH(TARGET_NAME ${TARGET_NAME_LIST}) + SET_TARGET_PROPERTIES( + ${TARGET_NAME} PROPERTIES + COMPILE_FLAGS "-include ${CMAKE_CURRENT_BINARY_DIR}/${PCH_HEADER_NAME}" + ) + ENDFOREACH() ENDFUNCTION(ADD_CXX_PCH_GCC) -FUNCTION(ADD_CXX_PCH_CLANG TARGET_NAME PCH_HEADER PCH_SOURCE) +FUNCTION(ADD_CXX_PCH_CLANG TARGET_NAME_LIST PCH_HEADER PCH_SOURCE) GET_COMMON_PCH_PARAMS(${PCH_HEADER} "pch" "-I") - GENERATE_CXX_PCH_COMMAND(${TARGET_NAME} "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT}) - SET_TARGET_PROPERTIES( - ${TARGET_NAME} PROPERTIES - COMPILE_FLAGS "-include-pch ${PCH_HEADER_OUT}" - ) + GENERATE_CXX_PCH_COMMAND("${TARGET_NAME_LIST}" "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT}) + + FOREACH(TARGET_NAME ${TARGET_NAME_LIST}) + SET_TARGET_PROPERTIES( + ${TARGET_NAME} PROPERTIES + COMPILE_FLAGS "-include-pch ${PCH_HEADER_OUT}" + ) + ENDFOREACH() ENDFUNCTION(ADD_CXX_PCH_CLANG) -FUNCTION(ADD_CXX_PCH_MSVC TARGET_NAME PCH_HEADER PCH_SOURCE) +FUNCTION(ADD_CXX_PCH_MSVC TARGET_NAME_LIST PCH_HEADER PCH_SOURCE) GET_COMMON_PCH_PARAMS(${PCH_HEADER} "pch" "/I") - SET_TARGET_PROPERTIES( - ${TARGET_NAME} PROPERTIES - COMPILE_FLAGS "/FI${PCH_HEADER_NAME} /Yu${PCH_HEADER_NAME}" - ) + + FOREACH(TARGET_NAME ${TARGET_NAME_LIST}) + SET_TARGET_PROPERTIES( + ${TARGET_NAME} PROPERTIES + COMPILE_FLAGS "/FI${PCH_HEADER_NAME} /Yu${PCH_HEADER_NAME}" + ) + ENDFOREACH() + SET_SOURCE_FILES_PROPERTIES( ${PCH_SOURCE} PROPERTIES COMPILE_FLAGS "/Yc${PCH_HEADER_NAME}" ) ENDFUNCTION(ADD_CXX_PCH_MSVC) -FUNCTION(ADD_CXX_PCH TARGET_NAME PCH_HEADER PCH_SOURCE) - IF (MSVC) - ADD_CXX_PCH_MSVC(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE}) - ELSEIF ("${CMAKE_GENERATOR}" MATCHES "Xcode") - SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES +FUNCTION(ADD_CXX_PCH_XCODE TARGET_NAME_LIST PCH_HEADER PCH_SOURCE) + FOREACH(TARGET_NAME ${TARGET_NAME_LIST}) + SET_TARGET_PROPERTIES("${TARGET_NAME}" PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${PCH_HEADER}" ) + ENDFOREACH() +ENDFUNCTION(ADD_CXX_PCH_XCODE) + +FUNCTION(ADD_CXX_PCH TARGET_NAME_LIST PCH_HEADER PCH_SOURCE) + IF (MSVC) + ADD_CXX_PCH_MSVC("${TARGET_NAME_LIST}" ${PCH_HEADER} ${PCH_SOURCE}) + ELSEIF ("${CMAKE_GENERATOR}" MATCHES "Xcode") + ADD_CXX_PCH_XCODE("${TARGET_NAME_LIST}" ${PCH_HEADER} ${PCH_SOURCE}) ELSEIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - ADD_CXX_PCH_CLANG(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE}) + ADD_CXX_PCH_CLANG("${TARGET_NAME_LIST}" ${PCH_HEADER} ${PCH_SOURCE}) ELSEIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") - ADD_CXX_PCH_GCC(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE}) + ADD_CXX_PCH_GCC("${TARGET_NAME_LIST}" ${PCH_HEADER} ${PCH_SOURCE}) ENDIF () ENDFUNCTION(ADD_CXX_PCH) |