All dependency projects are now separated into their own Premake scripts and are designed to provide easy "import", "includes" and "setup" functions.
First, you use project.setup { ... } to provide the library with its respective configuration, this MAY include defines and MUST include the source path of that specific library. Then you can use project.includes() or project.import() in your target application or library project to let the script configure your project. This will configure all necessary include directories and links.
- --debug-detections sets the "DEBUG_DETECTIONS" define to show whenever a mismatch in the anticheat hashing occurs.
- --debug-load-library sets the "DEBUG_LOAD_LIBRARY" define to show libraries as they are loaded during runtime in the debug console.
- --force-unit-tests sets the "FORCE_UNIT_TESTS" define to enforce compiling the unit tests into the binary.
REVISION_CLEAN can be 0 or 1. When it is 0 that means that there were uncommitted changes to the code at the time of version info generation, otherwise this will be 1 which means that there have been no uncommitted changes.
This is mainly with focus on issues with the ECC code. One of these issues is a "possible overflow in ecc_ansi_x963_export" (https://github.com/libtom/libtomcrypt/issues/58). Other than that all changes are minimal, only one new compile flag had to be added to get around a compiler incompatibility case for LTC_FAST (we're not working with GNU compilers here) and the code will fully compile.
- /wd4100 since "unused formal parameter" is not a critical error
- _SCL_SECURE_NO_WARNINGS as unfortunately protoc's generated code still relies on potentially unsafe methods
- Added custom rules for *.proto files to iw4x
- Added a workaround for protoc output not being automatically included
- Disable precompiled headers for protobuf generated sources
- Moved inclusion of node.pb.h out of STDInclude.hpp to only where it's necessary (WTF @momo5502)
- Removed protobuf-generated code from "protobuf" external project
- Removed protogen.bat as it is no longer needed
boost.signals sadly requires way too many dependencies, libsigc++ requires too much configuration and all the other libs I tested mostly required constexpr as callbacks (due to passing callbacks via template list), which doesn't server this purpose, so wink-signals seems just about right for what we do.
This is necessary if we want to support Mac OS X (xcode4) later as the generator ignores the architecture definition and only enforces 32-bit builds if the platform is set to either "Universal32" or "x86" despite the fact that premake5 only defines "platform" as a custom labeling method for Visual Studio.
- Release now uses all optimizations.
- Compiler warnings as errors.
- Link-time optimization.
- Static runtime linking.
- Ignore 64-bit unportability.
- Map Normal -> Debug for compatiblity with humans who are too lazy to migrate.
The general standard for any C++ project normally is to have a Debug and a Release version of the binaries, however in our case we only have one configuration that mixes both. Setting up aliases for this in order to prevent confusion on why the standard configurations don't work.