0.22.3 - New build system

This commit is contained in:
H0zen 2019-05-17 19:22:12 +01:00
parent 1885e3588b
commit 5a6f485753
6 changed files with 40 additions and 52 deletions

View File

@ -18,50 +18,28 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# ADD_CXX_PCH # ADD_CXX_PCH(TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE)
# #
# Sets a precompiled header for a given target # Sets a precompiled header for a given target
# Args: #
# TARGET_NAME - Name of the target. Only valid after add_library or add_executable # TARGET_NAME - Name of the target. Only valid after add_library or add_executable
# PRECOMPILED_HEADER - Header file to precompile # PRECOMPILED_HEADER - Header file to precompile
# PRECOMPILED_SOURCE - MSVC specific source to do the actual precompilation. Ignored on other platforms # PRECOMPILED_SOURCE - MSVC specific source to do the actual precompilation. Ignored on other platforms
#
function(ADD_CXX_PCH TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE) function(ADD_CXX_PCH TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE)
get_filename_component(PRECOMPILED_HEADER_NAME ${PRECOMPILED_HEADER} NAME) get_filename_component(PRECOMPILED_HEADER_NAME ${PRECOMPILED_HEADER} NAME)
if(MSVC) if(MSVC)
get_filename_component(PRECOMPILED_HEADER_PATH ${PRECOMPILED_HEADER} DIRECTORY) target_compile_options(${TARGET_NAME}
target_include_directories(${TARGET_NAME} PRIVATE ${PRECOMPILED_HEADER_PATH}) # fixes occasional IntelliSense glitches PRIVATE
/FI${PRECOMPILED_HEADER_NAME}
get_filename_component(PRECOMPILED_HEADER_WE ${PRECOMPILED_HEADER} NAME_WE) /Yu${PRECOMPILED_HEADER_NAME}
set(PRECOMPILED_BINARY "$(IntDir)/${PRECOMPILED_HEADER_WE}.pch") )
SET_SOURCE_FILES_PROPERTIES(${PRECOMPILED_SOURCE}
get_target_property(SOURCE_FILES ${TARGET_NAME} SOURCES)
set(SOURCE_FILE_FOUND FALSE)
foreach(SOURCE_FILE ${SOURCE_FILES})
if(SOURCE_FILE MATCHES \\.\(cc|cxx|cpp\)$)
if(${PRECOMPILED_SOURCE} MATCHES ${SOURCE_FILE})
# Set source file to generate header
set_source_files_properties(
${SOURCE_FILE}
PROPERTIES PROPERTIES
COMPILE_FLAGS "/Yc\"${PRECOMPILED_HEADER_NAME}\" /Fp\"${PRECOMPILED_BINARY}\"" COMPILE_FLAGS /Yc${PRECOMPILED_HEADER_NAME}
OBJECT_OUTPUTS "${PRECOMPILED_BINARY}") )
set(SOURCE_FILE_FOUND TRUE)
else()
# Set and automatically include precompiled header
set_source_files_properties(
${SOURCE_FILE}
PROPERTIES
COMPILE_FLAGS "/Yu\"${PRECOMPILED_HEADER_NAME}\" /Fp\"${PRECOMPILED_BINARY}\" /FI\"${PRECOMPILED_HEADER_NAME}\""
OBJECT_DEPENDS "${PRECOMPILED_BINARY}")
endif()
endif()
endforeach()
if(NOT SOURCE_FILE_FOUND)
message(FATAL_ERROR "A source file for ${PRECOMPILED_HEADER} was not found. Required for MSVC builds.")
endif(NOT SOURCE_FILE_FOUND)
elseif(CMAKE_GENERATOR STREQUAL Xcode) elseif(CMAKE_GENERATOR STREQUAL Xcode)
set_target_properties( set_target_properties(
${TARGET_NAME} ${TARGET_NAME}
@ -92,7 +70,9 @@ function(ADD_CXX_PCH TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE)
set(_compile_definitions "$<$<BOOL:${_compile_definitions}>:-D$<JOIN:${_compile_definitions},\n-D>\n>") set(_compile_definitions "$<$<BOOL:${_compile_definitions}>:-D$<JOIN:${_compile_definitions},\n-D>\n>")
set(_compile_flags "$<$<BOOL:${_compile_flags}>:$<JOIN:${_compile_flags},\n>\n>") set(_compile_flags "$<$<BOOL:${_compile_flags}>:$<JOIN:${_compile_flags},\n>\n>")
set(_compile_options "$<$<BOOL:${_compile_options}>:$<JOIN:${_compile_options},\n>\n>") set(_compile_options "$<$<BOOL:${_compile_options}>:$<JOIN:${_compile_options},\n>\n>")
file(GENERATE OUTPUT "${PCH_FLAGS_FILE}" CONTENT "${_compile_definitions}${_include_directories}${_compile_flags}${_compile_options}\n")
file(GENERATE OUTPUT ${PCH_FLAGS_FILE} CONTENT "${_compile_definitions}${_include_directories}${_compile_flags}${_compile_options}\n")
file(GENERATE OUTPUT ${OUTPUT_DIR}/${PRECOMPILED_HEADER_NAME} CONTENT "")
# Gather global compiler options, definitions, etc. # Gather global compiler options, definitions, etc.
string(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" CXX_FLAGS) string(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" CXX_FLAGS)
@ -110,14 +90,10 @@ function(ADD_CXX_PCH TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE)
add_custom_target(${TARGET_NAME}_${SFX} DEPENDS ${OUTPUT_NAME}) add_custom_target(${TARGET_NAME}_${SFX} DEPENDS ${OUTPUT_NAME})
add_dependencies(${TARGET_NAME} ${TARGET_NAME}_${SFX}) add_dependencies(${TARGET_NAME} ${TARGET_NAME}_${SFX})
get_target_property(SOURCE_FILES ${TARGET_NAME} SOURCES) target_compile_options(${TARGET_NAME}
PRIVATE
foreach(SOURCE_FILE ${SOURCE_FILES}) -include ${OUTPUT_DIR}/${PRECOMPILED_HEADER_NAME}
if(SOURCE_FILE MATCHES \\.\(cc|cxx|cpp\)$) -Winvalid-pch
set_source_files_properties(${SOURCE_FILE} PROPERTIES
COMPILE_FLAGS "-include ${OUTPUT_DIR}/${PRECOMPILED_HEADER_NAME} -Winvalid-pch"
) )
endif() endif()
endforeach()
endif()
endfunction() endfunction()

View File

@ -93,10 +93,20 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
/wd4127 /wd4127
/wd4100 /wd4100
/wd4389 /wd4389
/wd4189
/wd4701
/wd4706
/wd4703
/wd4702
/wd4302
/wd4305
/wd4018
/wd4840
/wd4101
) )
endif () endif ()
# GCC and Clang compiler options # GCC compiler options
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
set(DEFAULT_COMPILE_OPTS ${DEFAULT_COMPILE_OPTS} set(DEFAULT_COMPILE_OPTS ${DEFAULT_COMPILE_OPTS}
$<$<EQUAL:${PLATFORM},32>: $<$<EQUAL:${PLATFORM},32>:
@ -119,6 +129,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
) )
endif () endif ()
#Clang compiler options
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(DEFAULT_COMPILE_OPTS ${DEFAULT_COMPILE_OPTS} set(DEFAULT_COMPILE_OPTS ${DEFAULT_COMPILE_OPTS}
$<$<CONFIG:Release>: $<$<CONFIG:Release>:

2
dep

@ -1 +1 @@
Subproject commit ab9e244cf77a325a05dea816cd287763b418bf23 Subproject commit 26edd0e965f55a43ab42e314c28452a087828e2c

View File

@ -277,7 +277,6 @@ target_link_libraries(game
# Generate precompiled header # Generate precompiled header
if(PCH) if(PCH)
add_dependencies(vmap2 game)
ADD_CXX_PCH(game ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.h ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.cpp) ADD_CXX_PCH(game ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.h ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.cpp)
endif() endif()

View File

@ -26,6 +26,7 @@
#define GAME_PCH_H #define GAME_PCH_H
#include "Common.h" #include "Common.h"
#include "Map.h"
#include "Log.h" #include "Log.h"
#include "ObjectMgr.h" #include "ObjectMgr.h"
#include "WorldPacket.h" #include "WorldPacket.h"

View File

@ -32,6 +32,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <algorithm> #include <algorithm>
#include <cctype>
/** /**
* @brief * @brief
@ -555,7 +556,7 @@ inline bool isEastAsianString(const std::wstring &wstr, bool numericOrSpace)
*/ */
inline void strToUpper(std::string& str) inline void strToUpper(std::string& str)
{ {
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return std::toupper(c); }); std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return toupper(c); });
} }
/** /**
@ -565,7 +566,7 @@ inline void strToUpper(std::string& str)
*/ */
inline void strToLower(std::string& str) inline void strToLower(std::string& str)
{ {
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return std::tolower(c); }); std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return tolower(c); });
} }
/** /**