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
# SOFTWARE.
#
# ADD_CXX_PCH
# ADD_CXX_PCH(TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE)
#
# Sets a precompiled header for a given target
# Args:
#
# TARGET_NAME - Name of the target. Only valid after add_library or add_executable
# PRECOMPILED_HEADER - Header file to precompile
# PRECOMPILED_SOURCE - MSVC specific source to do the actual precompilation. Ignored on other platforms
#
function(ADD_CXX_PCH TARGET_NAME PRECOMPILED_HEADER PRECOMPILED_SOURCE)
get_filename_component(PRECOMPILED_HEADER_NAME ${PRECOMPILED_HEADER} NAME)
if(MSVC)
get_filename_component(PRECOMPILED_HEADER_PATH ${PRECOMPILED_HEADER} DIRECTORY)
target_include_directories(${TARGET_NAME} PRIVATE ${PRECOMPILED_HEADER_PATH}) # fixes occasional IntelliSense glitches
get_filename_component(PRECOMPILED_HEADER_WE ${PRECOMPILED_HEADER} NAME_WE)
set(PRECOMPILED_BINARY "$(IntDir)/${PRECOMPILED_HEADER_WE}.pch")
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}
target_compile_options(${TARGET_NAME}
PRIVATE
/FI${PRECOMPILED_HEADER_NAME}
/Yu${PRECOMPILED_HEADER_NAME}
)
SET_SOURCE_FILES_PROPERTIES(${PRECOMPILED_SOURCE}
PROPERTIES
COMPILE_FLAGS "/Yc\"${PRECOMPILED_HEADER_NAME}\" /Fp\"${PRECOMPILED_BINARY}\""
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)
COMPILE_FLAGS /Yc${PRECOMPILED_HEADER_NAME}
)
elseif(CMAKE_GENERATOR STREQUAL Xcode)
set_target_properties(
${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_flags "$<$<BOOL:${_compile_flags}>:$<JOIN:${_compile_flags},\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.
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_dependencies(${TARGET_NAME} ${TARGET_NAME}_${SFX})
get_target_property(SOURCE_FILES ${TARGET_NAME} SOURCES)
foreach(SOURCE_FILE ${SOURCE_FILES})
if(SOURCE_FILE MATCHES \\.\(cc|cxx|cpp\)$)
set_source_files_properties(${SOURCE_FILE} PROPERTIES
COMPILE_FLAGS "-include ${OUTPUT_DIR}/${PRECOMPILED_HEADER_NAME} -Winvalid-pch"
target_compile_options(${TARGET_NAME}
PRIVATE
-include ${OUTPUT_DIR}/${PRECOMPILED_HEADER_NAME}
-Winvalid-pch
)
endif()
endforeach()
endif()
endfunction()

View File

@ -93,10 +93,20 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
/wd4127
/wd4100
/wd4389
/wd4189
/wd4701
/wd4706
/wd4703
/wd4702
/wd4302
/wd4305
/wd4018
/wd4840
/wd4101
)
endif ()
# GCC and Clang compiler options
# GCC compiler options
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
set(DEFAULT_COMPILE_OPTS ${DEFAULT_COMPILE_OPTS}
$<$<EQUAL:${PLATFORM},32>:
@ -119,6 +129,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
)
endif ()
#Clang compiler options
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(DEFAULT_COMPILE_OPTS ${DEFAULT_COMPILE_OPTS}
$<$<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
if(PCH)
add_dependencies(vmap2 game)
ADD_CXX_PCH(game ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.h ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.cpp)
endif()

View File

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

View File

@ -32,6 +32,7 @@
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
/**
* @brief
@ -555,7 +556,7 @@ inline bool isEastAsianString(const std::wstring &wstr, bool numericOrSpace)
*/
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)
{
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); });
}
/**