From 5c88dd754aa9da92a470f11315032765f83b7926 Mon Sep 17 00:00:00 2001 From: Cekis Date: Fri, 26 Nov 2021 02:52:26 -0500 Subject: [PATCH] Added adjustments that allow compiling with CLang 9.0.1 or GCC 10 --- CMakeLists.txt | 11 +-- cmake/linux/FindOracle.cmake | 4 +- .../application/Miff/src/linux/miff.cpp | 70 +++++++++---------- .../library/serverGame/src/shared/pvp/Pvp.cpp | 4 +- .../src/shared/ScriptMethodsPlayerAccount.cpp | 17 ++--- .../src/shared/StlForwardDeclaration.h | 1 + 6 files changed, 51 insertions(+), 56 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f99dadfd..0b20dead 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,10 +70,10 @@ elseif (UNIX) # linker flags if (${CMAKE_BUILD_TYPE} STREQUAL "RELWITHDEBINFO" OR ${CMAKE_BUILD_TYPE} STREQUAL "MINSIZEREL") set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-z,norelro,-O3,--sort-common,--as-needed,--relax,-z,combreloc,-z,global,--no-omagic") - set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,norelro,-O3,--sort-common,--as-needed,--relax,-z,combreloc,-z,global,--no-omagic") + set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,norelro,-O3,--sort-common,--as-needed,--relax,-z,combreloc,-z,global,--no-omagic") else () set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-z,norelro,-O3,--sort-common,--as-needed,--relax,-z,combreloc,-z,global,--no-omagic,-x,-s") - set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,norelro,-O3,--sort-common,--as-needed,--relax,-z,combreloc,-z,global,--no-omagic,-x,-s") + set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,norelro,-O3,--sort-common,--as-needed,--relax,-z,combreloc,-z,global,--no-omagic,-x,-s") endif () # don't put anything too crazy in debug...and any common flags go into CMAKE_CXX_FLAGS @@ -87,10 +87,12 @@ elseif (UNIX) set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_RELEASE}") # our "always on" flags - build by default for the system we're on but include all instruction sets - set(CMAKE_CXX_FLAGS "-m32 -pipe -march=native -mtune=native \ + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe -march=native -mtune=native \ -Wformat -Wno-overloaded-virtual -Wno-missing-braces -Wno-format \ -Wno-write-strings -Wno-unknown-pragmas \ -Wno-uninitialized -Wno-reorder -Wno-tautological-constant-out-of-range-compare -Wno-address-of-packed-member") + + message("Using Compiler: ${CMAKE_CXX_COMPILER_ID}") # Ofast doesn't work with gcc builds if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") @@ -113,10 +115,9 @@ elseif (UNIX) # O3 and Ofast include one or more flags that cause java to crash when using gcc6 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fno-signed-zeros -freciprocal-math -fno-unroll-loops -fno-tree-loop-optimize -fno-plt") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-stringop-overflow") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "g++") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-stringop-overflow") endif () add_definitions(-DLINUX -D_REENTRANT -Dlinux -D_USING_STL -D_GNU_SOURCE -D_XOPEN_SOURCE=500 -U_FORTIFY_SOURCE) diff --git a/cmake/linux/FindOracle.cmake b/cmake/linux/FindOracle.cmake index 20abfc38..26627faa 100644 --- a/cmake/linux/FindOracle.cmake +++ b/cmake/linux/FindOracle.cmake @@ -30,14 +30,14 @@ if(DEFINED ENV{ORACLE_HOME}) find_path(ORACLE_INCLUDE_DIR NAMES oci.h PATHS - /usr/include/oracle/21/client + /usr/include/oracle/18.3/client ${ORACLE_HOME}/rdbms/public ${ORACLE_HOME}/include ${ORACLE_HOME}/sdk/include # Oracle SDK ${ORACLE_HOME}/OCI/include) # Oracle XE on Windows set(ORACLE_OCI_NAMES clntsh libclntsh oci) - set(ORACLE_NNZ_NAMES libnnz21 nnz21 ociw32) + set(ORACLE_NNZ_NAMES libnnz18 nnz18 libnnz21 nnz21 ociw32) set(ORACLE_OCCI_NAMES libocci occi oraocci10 oraocci11) set(ORACLE_LIB_DIR diff --git a/engine/client/application/Miff/src/linux/miff.cpp b/engine/client/application/Miff/src/linux/miff.cpp index d1f18bfc..6927490e 100755 --- a/engine/client/application/Miff/src/linux/miff.cpp +++ b/engine/client/application/Miff/src/linux/miff.cpp @@ -59,15 +59,15 @@ const int maxStringSize = 256; const char version[] = "1.3 September 18, 2000"; // vars set by pragmas or via command line -char drive[8]; // should be no more then 2 char "C:" -char directory[maxStringSize]; -char filename[maxStringSize]; -char extension[8]; // we'll truncate if the extension is more then 8 chars... -char inFileName[512]; +// char drive[8]; // should be no more then 2 char "C:" +// char directory[maxStringSize]; +// char filename[maxStringSize]; +// char extension[8]; // we'll truncate if the extension is more then 8 chars... +char local_inFileName[512]; // switches to be sent to mIFF Compiler char sourceBuffer[bufferSize]; -char outFileName[512]; // x2 to combine filename, dir, and ext +char local_outFileName[512]; // x2 to combine filename, dir, and ext bool usePragma = false; bool useCCCP = false; bool verboseMode = false; // default to non-verbose mode @@ -92,8 +92,8 @@ enum errorType { ERR_NONE = 0 }; -char err_msg[256]; -errorType errorFlag = ERR_NONE; // assume no error (default) +char local_err_msg[256]; +errorType local_errorFlag = ERR_NONE; // assume no error (default) // long and short name definitions for command line options @@ -220,7 +220,7 @@ int main( int argc, // number of args in commandline SetupSharedFoundation::remove(); SetupSharedThread::remove(); - return static_cast (errorFlag); + return static_cast (local_errorFlag); } //--------------------------------------------------------------------------- @@ -259,24 +259,24 @@ static void callbackFunction(void) #endif - errorFlag = evaluateArgs(); - if (ERR_NONE == errorFlag) + local_errorFlag = evaluateArgs(); + if (ERR_NONE == local_errorFlag) { - outfileHandler = new OutputFileHandler(outFileName); - MIFFCompile(sourceBuffer, inFileName); + outfileHandler = new OutputFileHandler(local_outFileName); + MIFFCompile(sourceBuffer, local_inFileName); } else - handleError(errorFlag); + handleError(local_errorFlag); if (outfileHandler) { // only write output IF there was no error - if (ERR_NONE == errorFlag) + if (ERR_NONE == local_errorFlag) { if (!outfileHandler->writeBuffer()) { - fprintf(stderr, "MIFF: failed to write output file \"%s\"\n", outFileName); - errorFlag = ERR_WRITEERROR; + fprintf(stderr, "MIFF: failed to write output file \"%s\"\n", local_outFileName); + local_errorFlag = ERR_WRITEERROR; } } delete outfileHandler; @@ -323,13 +323,13 @@ static errorType evaluateArgs(void) // setup input filename - strcpy(inFileName, CommandLine::getOptionString(SNAME_INPUT_FILE)); + strcpy(local_inFileName, CommandLine::getOptionString(SNAME_INPUT_FILE)); // handle output filename spec if (CommandLine::getOccurrenceCount(SNAME_OUTPUT_FILE)) { - strcpy(outFileName, CommandLine::getOptionString(SNAME_OUTPUT_FILE)); + strcpy(local_outFileName, CommandLine::getOptionString(SNAME_OUTPUT_FILE)); } else if (CommandLine::getOccurrenceCount(SNAME_PRAGMA_TARGET)) { @@ -342,15 +342,15 @@ static errorType evaluateArgs(void) char *terminator; // start with input file pathname - strcpy(outFileName, inFileName); + strcpy(local_outFileName, local_inFileName); // try to terminate at rightmost '.' - terminator = strrchr(outFileName, '.'); + terminator = strrchr(local_outFileName, '.'); if (terminator) *terminator = 0; // append the default iff extension - strcat(outFileName, ".iff"); + strcat(local_outFileName, ".iff"); } @@ -361,12 +361,12 @@ static errorType evaluateArgs(void) // preprocess the input file - if (0 == preprocessSource(inFileName)) + if (0 == preprocessSource(local_inFileName)) { if (verboseMode) { - sprintf(err_msg,"Now compiling %s...\n", inFileName); - MIFFMessage(err_msg, 0); + sprintf(local_err_msg,"Now compiling %s...\n", local_inFileName); + MIFFMessage(local_err_msg, 0); } if (ERR_NONE == retVal) retVal = loadInputToBuffer(sourceBuffer, bufferSize); @@ -563,7 +563,7 @@ extern "C" void MIFFMessage(char *message, // nullptr terminated string to be // Only call this via parser!!! extern "C" void MIFFSetError(void) { - errorFlag = ERR_PARSER; + local_errorFlag = ERR_PARSER; } //--------------------------------------------------------------------------- @@ -586,10 +586,10 @@ extern "C" int validateTargetFilename( char *targetFileName, // pointer to wher unsigned maxTargetBufSize // size of the filename string buffer ) { - if (strlen(outFileName) > maxTargetBufSize) + if (strlen(local_outFileName) > maxTargetBufSize) MIFFMessage("Internal error, increase string buffer size in parser.yac and recompile!", 1); - strcpy(targetFileName, outFileName); + strcpy(targetFileName, local_outFileName); return(usePragma); } @@ -667,7 +667,7 @@ static int preprocessSource(char *sourceName) extern "C" void MIFFSetIFFName(const char *newFileName) { - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return; if (outfileHandler) @@ -676,7 +676,7 @@ extern "C" void MIFFSetIFFName(const char *newFileName) extern "C" void MIFFinsertForm(const char *formName) { - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return; if (outfileHandler) @@ -685,7 +685,7 @@ extern "C" void MIFFinsertForm(const char *formName) extern "C" void MIFFinsertChunk(const char *chunkName) { - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return; if (outfileHandler) @@ -694,7 +694,7 @@ extern "C" void MIFFinsertChunk(const char *chunkName) extern "C" void MIFFinsertChunkData(void * buffer, unsigned bufferSize) { - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return; if (outfileHandler) @@ -705,7 +705,7 @@ extern "C" int MIFFloadRawData(char *fname, void * buffer, unsigned maxBufferSiz { int sizeRead = -1; - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return(sizeRead); // should be -1 InputFileHandler * inFileName = new InputFileHandler(fname); @@ -725,7 +725,7 @@ extern "C" int MIFFloadRawData(char *fname, void * buffer, unsigned maxBufferSiz extern "C" void MIFFexitChunk(void) { - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return; if (outfileHandler) @@ -733,7 +733,7 @@ extern "C" void MIFFexitChunk(void) } extern "C" void MIFFexitForm(void) { - if (ERR_NONE != errorFlag) + if (ERR_NONE != local_errorFlag) return; if (outfileHandler) diff --git a/engine/server/library/serverGame/src/shared/pvp/Pvp.cpp b/engine/server/library/serverGame/src/shared/pvp/Pvp.cpp index d6e291ae..5f87f178 100755 --- a/engine/server/library/serverGame/src/shared/pvp/Pvp.cpp +++ b/engine/server/library/serverGame/src/shared/pvp/Pvp.cpp @@ -843,14 +843,14 @@ int Pvp::calculateGcwImperialScorePercentile(std::string const & gcwCategory, st { std::map >::const_iterator const iterImperial = gcwImperialScore.find(gcwCategory); if (iterImperial != gcwImperialScore.end()) - totalImperial = static_cast(std::max(0ll, iterImperial->second.first)) + static_cast(std::max(0ll, iterImperial->second.second)); + totalImperial = static_cast(std::max((int64)0, iterImperial->second.first)) + static_cast(std::max((int64)0, iterImperial->second.second)); } uint64 total = totalImperial; { std::map >::const_iterator const iterRebel = gcwRebelScore.find(gcwCategory); if (iterRebel != gcwRebelScore.end()) - total += (static_cast(std::max(0ll, iterRebel->second.first)) + static_cast(std::max(0ll, iterRebel->second.second))); + total += (static_cast(std::max((int64)0, iterRebel->second.first)) + static_cast(std::max((int64)0, iterRebel->second.second))); } // if the score is less than 1, treat it as a tie; note that score is scaled by 1000 diff --git a/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp b/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp index 48fa7ad1..2b687ce6 100755 --- a/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp +++ b/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp @@ -991,25 +991,18 @@ jstring JNICALL ScriptMethodsPlayerAccountNamespace::getPlayerUsername(JNIEnv *e NOT_NULL(env); CreatureObject const * creatureObject = nullptr; - if (!JavaLibrary::getObject(player, creatureObject) || !creatureObject) - { - DEBUG_WARNING(true, ("JavaLibrary::getPlayerUsername: bad CreatureObject")); - return nullptr; - } - - if(creatureObject) + JavaLibrary::getObject(player, creatureObject); + DEBUG_WARNING(!creatureObject, ("JavaLibrary::getPlayerUsername: could not get creatureObject for player %d", player)); + if (creatureObject) { const Client * playerClient = creatureObject->getClient(); + DEBUG_WARNING(!playerClient, ("JavaLibrary::getPlayerUsername: could not get playerClient for player %d", player)); if(playerClient) { return JavaString(playerClient->getAccountName()).getReturnValue(); } - else { - DEBUG_WARNING(true, ("JavaLibrary::getPlayerUsername: bad playerClient")); - return nullptr; - } } - + return nullptr; } // ====================================================================== diff --git a/engine/shared/library/sharedFoundation/src/shared/StlForwardDeclaration.h b/engine/shared/library/sharedFoundation/src/shared/StlForwardDeclaration.h index cd1b0e75..c8daf4fa 100755 --- a/engine/shared/library/sharedFoundation/src/shared/StlForwardDeclaration.h +++ b/engine/shared/library/sharedFoundation/src/shared/StlForwardDeclaration.h @@ -15,6 +15,7 @@ #include #include #include +#include namespace Unicode {