diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-09-03 12:06:16 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-09-03 12:06:16 +0200 |
commit | e8740fb2e125b308493aeab49ddd7b0cc6a53c97 (patch) | |
tree | 5ae57ddbea05f3fee3ea245e862861464a15ef5c | |
parent | c722ff3a68ed5e20a765d8055cb464dfaee55b6f (diff) |
Core/Misc: CompilerDefs/GitRevision improvements
* Removed INTEL as a separate platform (it does not belong there)
* Removed BORLAND from known compilers list (it was never supported)
* Simplified TRINITY_PLATFORM_WINDOWS detection (_WIN32 is always defined)
* Rename revision_data.h macros that begin with a underscore
* Added processor architecture to --version string
* Added Linux distribution name to .server debug
* Fixed some revision_data.h macros missing/wrong values when regenerated during compilation
* Removed manual adding of _WIN64 macro from cmake (it is predefined internally by compiler)
-rw-r--r-- | cmake/compiler/msvc/settings.cmake | 12 | ||||
-rw-r--r-- | cmake/genrev.cmake | 32 | ||||
-rw-r--r-- | revision_data.h.in.cmake | 74 | ||||
-rw-r--r-- | src/common/CompilerDefs.h | 15 | ||||
-rw-r--r-- | src/common/GitRevision.cpp | 45 | ||||
-rw-r--r-- | src/server/scripts/ScriptLoader.cpp.in.cmake | 4 |
6 files changed, 101 insertions, 81 deletions
diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake index 50dac95f123..54bc6fa63ce 100644 --- a/cmake/compiler/msvc/settings.cmake +++ b/cmake/compiler/msvc/settings.cmake @@ -28,17 +28,7 @@ target_compile_options(trinity-compile-option-interface INTERFACE /permissive-) -if(PLATFORM EQUAL 64) - # This definition is necessary to work around a bug with Intellisense described - # here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper - # debugger functionality. - target_compile_definitions(trinity-compile-option-interface - INTERFACE - _WIN64) - - message(STATUS "MSVC: 64-bit platform, enforced -D_WIN64 parameter") - -else() +if(PLATFORM EQUAL 32) # mark 32 bit executables large address aware so they can use > 2GB address space set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") message(STATUS "MSVC: Enabled large address awareness") diff --git a/cmake/genrev.cmake b/cmake/genrev.cmake index 1dd313be3b3..8ecd7ec4a7d 100644 --- a/cmake/genrev.cmake +++ b/cmake/genrev.cmake @@ -12,7 +12,7 @@ # This is done EACH compile so they can be alerted about the consequences. if(NOT BUILDDIR) - # Workaround for funny MSVC behaviour - this segment is only used when using cmake gui + # Workaround for cmake script mode set(BUILDDIR ${CMAKE_BINARY_DIR}) endif() @@ -122,12 +122,28 @@ set(rev_month ${CMAKE_MATCH_2}) set(rev_day ${CMAKE_MATCH_3}) # Create the actual revision_data.h file from the above params -if(NOT "${rev_hash_cached}" STREQUAL "${rev_hash}" OR NOT "${rev_branch_cached}" STREQUAL "${rev_branch}" OR NOT EXISTS "${BUILDDIR}/revision_data.h") - configure_file( - "${CMAKE_SOURCE_DIR}/revision_data.h.in.cmake" - "${BUILDDIR}/revision_data.h" - @ONLY +cmake_host_system_information(RESULT TRINITY_BUILD_HOST_SYSTEM QUERY OS_NAME) +cmake_host_system_information(RESULT TRINITY_BUILD_HOST_DISTRO QUERY DISTRIB_INFO) +cmake_host_system_information(RESULT TRINITY_BUILD_HOST_SYSTEM_RELEASE QUERY OS_RELEASE) +# on windows OS_RELEASE contains sub-type string tag like "Professional" instead of a version number and OS_VERSION has only build number +# so we grab that from cmd "ver" command +if(WIN32) + execute_process( + COMMAND cmd /c ver + OUTPUT_VARIABLE TRINITY_BUILD_HOST_SYSTEM_RELEASE ) - set(rev_hash_cached "${rev_hash}" CACHE INTERNAL "Cached commit-hash") - set(rev_branch_cached "${rev_branch}" CACHE INTERNAL "Cached branch name") + string(STRIP ${TRINITY_BUILD_HOST_SYSTEM_RELEASE} TRINITY_BUILD_HOST_SYSTEM_RELEASE) + string(REGEX MATCH "[0-9]+[.][0-9]+[.][0-9]+" TRINITY_BUILD_HOST_SYSTEM_RELEASE ${TRINITY_BUILD_HOST_SYSTEM_RELEASE}) endif() + +if(CMAKE_SCRIPT_MODE_FILE) + # hack for CMAKE_SYSTEM_PROCESSOR missing in script mode + set(CMAKE_PLATFORM_INFO_DIR ${BUILDDIR}${CMAKE_FILES_DIRECTORY}) + include(${CMAKE_ROOT}/Modules/CMakeDetermineSystem.cmake) +endif() + +configure_file( + "${CMAKE_SOURCE_DIR}/revision_data.h.in.cmake" + "${BUILDDIR}/revision_data.h" + @ONLY +) diff --git a/revision_data.h.in.cmake b/revision_data.h.in.cmake index ddc4d0594f5..3a991fcde1d 100644 --- a/revision_data.h.in.cmake +++ b/revision_data.h.in.cmake @@ -1,20 +1,54 @@ -#ifndef __REVISION_DATA_H__ -#define __REVISION_DATA_H__ - #define _HASH "@rev_hash@" - #define _DATE "@rev_date@" - #define _BRANCH "@rev_branch@" - #define _CMAKE_COMMAND R"(@CMAKE_COMMAND@)" - #define _CMAKE_VERSION R"(@CMAKE_VERSION@)" - #define _CMAKE_HOST_SYSTEM R"(@CMAKE_HOST_SYSTEM_NAME@ @CMAKE_HOST_SYSTEM_VERSION@)" - #define _SOURCE_DIRECTORY R"(@CMAKE_SOURCE_DIR@)" - #define _BUILD_DIRECTORY R"(@BUILDDIR@)" - #define _MYSQL_EXECUTABLE R"(@MYSQL_EXECUTABLE@)" - #define _FULL_DATABASE "TDB_full_world_1102.24091_2024_09_03.sql" - #define _HOTFIXES_DATABASE "TDB_full_hotfixes_1102.24091_2024_09_03.sql" - #define VER_COMPANYNAME_STR "TrinityCore Developers" - #define VER_LEGALCOPYRIGHT_STR "(c)2008-@rev_year@ TrinityCore" - #define VER_FILEVERSION 0,0,0 - #define VER_FILEVERSION_STR "@rev_hash@ @rev_date@ (@rev_branch@ branch)" - #define VER_PRODUCTVERSION VER_FILEVERSION - #define VER_PRODUCTVERSION_STR VER_FILEVERSION_STR -#endif // __REVISION_DATA_H__ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TRINITYCORE_REVISION_DATA_H +#define TRINITYCORE_REVISION_DATA_H + +// Git commit information +#define TRINITY_GIT_COMMIT_HASH "@rev_hash@" +#define TRINITY_GIT_COMMIT_DATE "@rev_date@" +#define TRINITY_GIT_COMMIT_BRANCH R"(@rev_branch@)" + +// Build OS information +#define TRINITY_BUILD_HOST_SYSTEM R"(@TRINITY_BUILD_HOST_SYSTEM@)" +#define TRINITY_BUILD_HOST_SYSTEM_VERSION R"(@TRINITY_BUILD_HOST_SYSTEM_RELEASE@)" +#cmakedefine TRINITY_BUILD_HOST_DISTRO_NAME R"(@TRINITY_BUILD_HOST_DISTRO_NAME@)" +#cmakedefine TRINITY_BUILD_HOST_DISTRO_VERSION_ID R"(@TRINITY_BUILD_HOST_DISTRO_VERSION_ID@)" + +// Build target information +#define TRINITY_BUILD_PROCESSOR R"(@CMAKE_SYSTEM_PROCESSOR@)" + +// CMake build information +#define TRINITY_BUILD_CMAKE_COMMAND R"(@CMAKE_COMMAND@)" +#define TRINITY_BUILD_CMAKE_VERSION R"(@CMAKE_VERSION@)" +#define TRINITY_BUILD_CMAKE_SOURCE_DIRECTORY R"(@CMAKE_SOURCE_DIR@)" +#define TRINITY_BUILD_CMAKE_BUILD_DIRECTORY R"(@BUILDDIR@)" + +// Database updater base information +#define DATABASE_MYSQL_EXECUTABLE R"(@MYSQL_EXECUTABLE@)" +#define DATABASE_FULL_DATABASE "TDB_full_world_1102.24091_2024_09_03.sql" +#define DATABASE_HOTFIXES_DATABASE "TDB_full_hotfixes_1102.24091_2024_09_03.sql" + +// Windows resource defines +#define VER_COMPANYNAME_STR "TrinityCore Developers" +#define VER_LEGALCOPYRIGHT_STR "(c)2008-@rev_year@ TrinityCore" +#define VER_FILEVERSION 0,0,0 +#define VER_FILEVERSION_STR "@rev_hash@ @rev_date@ (@rev_branch@ branch)" +#define VER_PRODUCTVERSION VER_FILEVERSION +#define VER_PRODUCTVERSION_STR VER_FILEVERSION_STR + +#endif // TRINITYCORE_REVISION_DATA_H diff --git a/src/common/CompilerDefs.h b/src/common/CompilerDefs.h index 05a7b090560..4003fbe77e9 100644 --- a/src/common/CompilerDefs.h +++ b/src/common/CompilerDefs.h @@ -21,30 +21,21 @@ #define TRINITY_PLATFORM_WINDOWS 0 #define TRINITY_PLATFORM_UNIX 1 #define TRINITY_PLATFORM_APPLE 2 -#define TRINITY_PLATFORM_INTEL 3 -// must be first (win 64 also define _WIN32) -#if defined( _WIN64 ) +#if defined( _WIN32 ) # define TRINITY_PLATFORM TRINITY_PLATFORM_WINDOWS -#elif defined( __WIN32__ ) || defined( WIN32 ) || defined( _WIN32 ) -# define TRINITY_PLATFORM TRINITY_PLATFORM_WINDOWS -#elif defined( __APPLE_CC__ ) +#elif defined( __APPLE__ ) # define TRINITY_PLATFORM TRINITY_PLATFORM_APPLE -#elif defined( __INTEL_COMPILER ) -# define TRINITY_PLATFORM TRINITY_PLATFORM_INTEL #else # define TRINITY_PLATFORM TRINITY_PLATFORM_UNIX #endif #define TRINITY_COMPILER_MICROSOFT 0 #define TRINITY_COMPILER_GNU 1 -#define TRINITY_COMPILER_BORLAND 2 -#define TRINITY_COMPILER_INTEL 3 +#define TRINITY_COMPILER_INTEL 2 #ifdef _MSC_VER # define TRINITY_COMPILER TRINITY_COMPILER_MICROSOFT -#elif defined( __BORLANDC__ ) -# define TRINITY_COMPILER TRINITY_COMPILER_BORLAND #elif defined( __INTEL_COMPILER ) # define TRINITY_COMPILER TRINITY_COMPILER_INTEL #elif defined( __GNUC__ ) diff --git a/src/common/GitRevision.cpp b/src/common/GitRevision.cpp index 04ba7fdf443..7fa2520e750 100644 --- a/src/common/GitRevision.cpp +++ b/src/common/GitRevision.cpp @@ -20,72 +20,63 @@ char const* GitRevision::GetHash() { - return _HASH; + return TRINITY_GIT_COMMIT_HASH; } char const* GitRevision::GetDate() { - return _DATE; + return TRINITY_GIT_COMMIT_DATE; } char const* GitRevision::GetBranch() { - return _BRANCH; + return TRINITY_GIT_COMMIT_BRANCH; } char const* GitRevision::GetCMakeCommand() { - return _CMAKE_COMMAND; + return TRINITY_BUILD_CMAKE_COMMAND; } char const* GitRevision::GetCMakeVersion() { - return _CMAKE_VERSION; + return TRINITY_BUILD_CMAKE_VERSION; } char const* GitRevision::GetHostOSVersion() { - return _CMAKE_HOST_SYSTEM; + return +#ifdef TRINITY_BUILD_HOST_DISTRO_NAME + TRINITY_BUILD_HOST_DISTRO_NAME " " TRINITY_BUILD_HOST_DISTRO_VERSION_ID "; " +#endif + TRINITY_BUILD_HOST_SYSTEM " " TRINITY_BUILD_HOST_SYSTEM_VERSION + ; } char const* GitRevision::GetBuildDirectory() { - return _BUILD_DIRECTORY; + return TRINITY_BUILD_CMAKE_BUILD_DIRECTORY; } char const* GitRevision::GetSourceDirectory() { - return _SOURCE_DIRECTORY; + return TRINITY_BUILD_CMAKE_SOURCE_DIRECTORY; } char const* GitRevision::GetMySQLExecutable() { - return _MYSQL_EXECUTABLE; + return DATABASE_MYSQL_EXECUTABLE; } char const* GitRevision::GetFullDatabase() { - return _FULL_DATABASE; + return DATABASE_FULL_DATABASE; } char const* GitRevision::GetHotfixesDatabase() { - return _HOTFIXES_DATABASE; -} - -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS -# ifdef _WIN64 -# define TRINITY_PLATFORM_STR "Win64" -# else -# define TRINITY_PLATFORM_STR "Win32" -# endif -#elif TRINITY_PLATFORM == TRINITY_PLATFORM_APPLE -# define TRINITY_PLATFORM_STR "MacOSX" -#elif TRINITY_PLATFORM == TRINITY_PLATFORM_INTEL -# define TRINITY_PLATFORM_STR "Intel" -#else // TRINITY_PLATFORM_UNIX -# define TRINITY_PLATFORM_STR "Unix" -#endif + return DATABASE_HOTFIXES_DATABASE; +} #ifndef TRINITY_API_USE_DYNAMIC_LINKING # define TRINITY_LINKAGE_TYPE_STR "Static" @@ -96,7 +87,7 @@ char const* GitRevision::GetHotfixesDatabase() char const* GitRevision::GetFullVersion() { return "TrinityCore rev. " VER_PRODUCTVERSION_STR - " (" TRINITY_PLATFORM_STR ", " _BUILD_DIRECTIVE ", " TRINITY_LINKAGE_TYPE_STR ")"; + " (" TRINITY_BUILD_HOST_SYSTEM ", " TRINITY_BUILD_PROCESSOR ", " _BUILD_DIRECTIVE ", " TRINITY_LINKAGE_TYPE_STR ")"; } char const* GitRevision::GetCompanyNameStr() diff --git a/src/server/scripts/ScriptLoader.cpp.in.cmake b/src/server/scripts/ScriptLoader.cpp.in.cmake index de157c871f5..e4e92fa24b5 100644 --- a/src/server/scripts/ScriptLoader.cpp.in.cmake +++ b/src/server/scripts/ScriptLoader.cpp.in.cmake @@ -21,8 +21,6 @@ #cmakedefine TRINITY_IS_DYNAMIC_SCRIPTLOADER #include "Define.h" -#include <vector> -#include <string> @TRINITY_SCRIPTS_FORWARD_DECL@ #ifdef TRINITY_IS_DYNAMIC_SCRIPTLOADER @@ -33,7 +31,7 @@ extern "C" { /// Exposed in script modules to return the script module revision hash. TC_SCRIPT_API char const* GetScriptModuleRevisionHash() { - return _HASH; + return TRINITY_GIT_COMMIT_HASH; } /// Exposed in script module to return the name of the script module |