Legends-of-Azeroth-Pandaria-5.4.8

Форк
0
115 строк · 4.3 Кб
1
# Copyright (C) 2011-2016 Project SkyFire <http://www.projectskyfire.org/
2
# Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
3
#
4
# This file is free software; as a special exception the author gives
5
# unlimited permission to copy and/or distribute it, with or without
6
# modifications, as long as this notice is preserved.
7
#
8
# This program is distributed in the hope that it will be useful, but
9
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11

12
FUNCTION(GET_COMMON_PCH_PARAMS PCH_HEADER PCH_FE INCLUDE_PREFIX)
13
  GET_FILENAME_COMPONENT(PCH_HEADER_N ${PCH_HEADER} NAME)
14
  GET_DIRECTORY_PROPERTY(TARGET_INCLUDES INCLUDE_DIRECTORIES)
15

16
  FOREACH(ITEM ${TARGET_INCLUDES})
17
    LIST(APPEND INCLUDE_FLAGS_LIST "${INCLUDE_PREFIX}\"${ITEM}\" ")
18
  ENDFOREACH(ITEM)
19

20
  SET(PCH_HEADER_NAME ${PCH_HEADER_N} PARENT_SCOPE)
21
  SET(PCH_HEADER_OUT ${CMAKE_CURRENT_BINARY_DIR}/${PCH_HEADER_N}.${PCH_FE} PARENT_SCOPE)
22
  SET(INCLUDE_FLAGS ${INCLUDE_FLAGS_LIST} PARENT_SCOPE)
23
ENDFUNCTION(GET_COMMON_PCH_PARAMS)
24

25
FUNCTION(GENERATE_CXX_PCH_COMMAND TARGET_NAME INCLUDE_FLAGS IN PCH_SRC OUT)
26
  IF (CMAKE_BUILD_TYPE)
27
    STRING(TOUPPER _${CMAKE_BUILD_TYPE} CURRENT_BUILD_TYPE)
28
  ENDIF ()
29

30
  SET(COMPILE_FLAGS ${CMAKE_CXX_FLAGS${CURRENT_BUILD_TYPE}})
31
  LIST(APPEND COMPILE_FLAGS ${CMAKE_CXX_FLAGS})
32

33
  IF ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
34
    IF (NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "")
35
      LIST(APPEND COMPILE_FLAGS "-arch ${CMAKE_OSX_ARCHITECTURES}")
36
    ENDIF ()
37
    IF (NOT "${CMAKE_OSX_SYSROOT}" STREQUAL "")
38
      LIST(APPEND COMPILE_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT}")
39
    ENDIF ()
40
    IF (NOT "${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "")
41
      LIST(APPEND COMPILE_FLAGS "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
42
    ENDIF ()
43
  ENDIF ()
44

45
  GET_DIRECTORY_PROPERTY(TARGET_DEFINITIONS COMPILE_DEFINITIONS)
46
  FOREACH(ITEM ${TARGET_DEFINITIONS})
47
    LIST(APPEND DEFINITION_FLAGS "-D${ITEM} ")
48
  ENDFOREACH(ITEM)
49

50
  SEPARATE_ARGUMENTS(COMPILE_FLAGS)
51
  SEPARATE_ARGUMENTS(INCLUDE_FLAGS)
52
  SEPARATE_ARGUMENTS(DEFINITION_FLAGS)
53

54
  GET_FILENAME_COMPONENT(PCH_SRC_N ${PCH_SRC} NAME)
55
  ADD_LIBRARY(${PCH_SRC_N}_dephelp MODULE ${PCH_SRC})
56

57
  ADD_CUSTOM_COMMAND(
58
    OUTPUT ${OUT}
59
    COMMAND ${CMAKE_CXX_COMPILER}
60
    ARGS ${DEFINITION_FLAGS} ${COMPILE_FLAGS} ${INCLUDE_FLAGS} -x c++-header ${IN} -o ${OUT}
61
    DEPENDS ${IN} ${PCH_SRC_N}_dephelp
62
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
63
  )
64

65
  ADD_CUSTOM_TARGET(generate_${PCH_SRC_N}
66
    DEPENDS ${OUT}
67
  )
68

69
  ADD_DEPENDENCIES(${TARGET_NAME} generate_${PCH_SRC_N})
70
ENDFUNCTION(GENERATE_CXX_PCH_COMMAND)
71

72
FUNCTION(ADD_CXX_PCH_GCC TARGET_NAME PCH_HEADER PCH_SOURCE)
73
  GET_COMMON_PCH_PARAMS(${PCH_HEADER} "gch" "-I")
74
  GENERATE_CXX_PCH_COMMAND(${TARGET_NAME} "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT})
75
  SET_TARGET_PROPERTIES(
76
    ${TARGET_NAME} PROPERTIES
77
    COMPILE_FLAGS "-include ${CMAKE_CURRENT_BINARY_DIR}/${PCH_HEADER_NAME}"
78
  )
79
ENDFUNCTION(ADD_CXX_PCH_GCC)
80

81
FUNCTION(ADD_CXX_PCH_CLANG TARGET_NAME PCH_HEADER PCH_SOURCE)
82
  GET_COMMON_PCH_PARAMS(${PCH_HEADER} "pch" "-I")
83
  GENERATE_CXX_PCH_COMMAND(${TARGET_NAME} "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT})
84
  SET_TARGET_PROPERTIES(
85
    ${TARGET_NAME} PROPERTIES
86
    COMPILE_FLAGS "-include-pch ${PCH_HEADER_OUT}"
87
  )
88
ENDFUNCTION(ADD_CXX_PCH_CLANG)
89

90
FUNCTION(ADD_CXX_PCH_MSVC TARGET_NAME PCH_HEADER PCH_SOURCE)
91
  GET_COMMON_PCH_PARAMS(${PCH_HEADER} "pch" "/I")
92
  SET_TARGET_PROPERTIES(
93
    ${TARGET_NAME} PROPERTIES
94
    COMPILE_FLAGS "/FI${PCH_HEADER_NAME} /Yu${PCH_HEADER_NAME}"
95
  )
96
  SET_SOURCE_FILES_PROPERTIES(
97
    ${PCH_SOURCE} PROPERTIES
98
    COMPILE_FLAGS "/Yc${PCH_HEADER_NAME}"
99
  )
100
ENDFUNCTION(ADD_CXX_PCH_MSVC)
101

102
FUNCTION(ADD_CXX_PCH TARGET_NAME PCH_HEADER PCH_SOURCE)
103
  IF (MSVC)
104
    ADD_CXX_PCH_MSVC(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE})
105
  ELSEIF ("${CMAKE_GENERATOR}" MATCHES "Xcode")
106
    SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
107
      XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES
108
      XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${PCH_HEADER}"
109
    )
110
  ELSEIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
111
    ADD_CXX_PCH_CLANG(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE})
112
  ELSEIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
113
    ADD_CXX_PCH_GCC(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE})
114
  ENDIF ()
115
ENDFUNCTION(ADD_CXX_PCH)
116

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.