Currently Windows gets this from vcpkg. Mac will get it from Homebrew,
and the GitHub linux builders will just install it with apt-get.
This might not be the perfect solution (having to install Homebrew is a pain,
GitHub Actions has an ancient SDL2), but it gets all the common platforms
running for now without much fuss.
The vast majority of this is fixing up `char *` that should be `const char *`
but a handful of other fixes, like potential buffer overflows that GCC
noticed, etc, were applied as well.
This removes `-Wno-write-strings` from CMakeLists.txt, as it is no longer
necessary, as there is no longer a flood of compiler warning spam when
building.
This does not fix all compiler warnings; there are still a handful, and they
are legitimate, but they can be dealt with in a future commit.
Git revision is generating on build time (not on configure time). In case of uncommited changes this revision will be marked as "dirty". If cmake cannot retrieve revision from git history (i.e. from packaged source code), cmake will attempt to read "git-hash.txt" from `PROJECT_SOURCE_DIR` (it will be generated on build time; after implementing packaging workflow it can be reworked).
Reworked main screen and console output to display proper version.
Version project now is 1.5.0 as previous PATCH value (500) was intended to be D3_RELEASE_BUILD_NO, autogenerated on compile time. As we switched to GIT_HASH, D3_RELEASE_BUILD_NO now useless.
CMAKE_BUILD_TYPE must be set CACHE before project() to take effect
general best practice rather than modifying CMake internal variables
is to use add_compile_options with genex
Other modules that depends on it, can reuse includes on linking.
There some files formally not belonging any packages (lib directory), as workaround there temporary include_directories(cfile) on root of project. After migrating all modules this can be removed.
Implementing byteswap functions by using "backported" from C++23 std::byteswap.
Adding unittests based on GoogleTests. To enable it add `-DBUILD_TESTING=ON` to cmake.
Re-enable console logging on linux and mac builds with the -DMONO
option.
Rename overloaded Debug_ConsolePrintf function to
Debug_ConsolePrintfAt to fix macro expansion.
Adds -DLOGGER alias for -DMONO.
Implements #157
To enforce colorful compiler warnings when building with Ninja
(and GCC/Clang) on Linux and similar platforms.
Taken from dhewm3 (where I implemented it).
- tabs to spaces
- use Unix line endings everywhere
- newline at end of file
- remove trailing white space
- no space between keywords and opening parenthesis
- use 2 spaces to indent
I’m trying to compile Descent 3 on NixOS, but when I run
“cmake --build <path>”, I get this error:
/home/jayman/Documents/Home/VC/Git/Partially mine/Descent3/repo/Descent3/multi_connect.cpp: In function 'int TryToJoinServer(network_address*)':
/home/jayman/Documents/Home/VC/Git/Partially mine/Descent3/repo/Descent3/multi_connect.cpp:358:16: error: format not a string literal and no format arguments [-Werror=format-security]
358 | sprintf(str, TXT(Join_response_strings[Ok_to_join]));
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Eventually, we should actually fix that sprintf call (and any other
calls that would trigger format security warnings), but it would be nice
if users could just temporarily ignore stuff like that.
This commit makes it so that users can set custom complier flags by
doing this:
$ cmake \
--preset <preset> \
-B build \
-DCMAKE_C_FLAGS=<additional-c-flags> \
-DCMAKE_CXX_FLAGS=<additional-cxx-flags>
$ cmake --build build
Updated compatibility level to 3.19. Set C++17 globally for all platforms. Removed hardcoded compiler and optimisation flags. Adjusted dependencies and libraries linking.
Reworked script building and hog creation.