ba2cab60df
* Get VGUI back (optionally) * Add some missing VGUI invocations * Update CMakeLists.txt to build with vgui for Windows * Move windows.h inclusions only to those places where it's really needed * Try fix mingw build * Update hud_spectator * Merge nekonomicon's vgui branch * Don't include vgui panel and app in cdll_int.cpp if vgui is real * Deduplicate scoreboard global variables * Add options to prefer non-vgui motd and scoreboard when vgui is enabled * Add vgui-dev as a submodule. Add building vith vgui to CI * Fix artifact uploading * Don't use global variable when not necessary * char* to const char* in CMenuHandler_StringCommand constructor * Fix 'format string is not a literal string' warnings * Fix 'always evaluate to true' warnings * Team Fortress classes to const char* * CreateCommandMenu accepts const char* * Fix printf formats. Turn some unsigned longs into unsigned ints since they use only 32 bits anyway * Explicit assignment result as condition * Prevent memory leak on menu reading * Localize button text * Create FileInputStream on stack avoiding the leak * Remove Servers Browser code * Arrow file names to const char* * Fix assignment to the wrong variable |
||
---|---|---|
.github/workflows | ||
cl_dll | ||
cmake | ||
common | ||
contrib/iZarif | ||
dlls | ||
engine | ||
game_shared | ||
pm_shared | ||
public | ||
scripts/waifulib | ||
utils | ||
vgui-dev@93573075af | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
Android.mk | ||
appveyor.yml | ||
CMakeLists.txt | ||
LICENSE | ||
README.md | ||
waf | ||
waf.bat | ||
wscript |
Half-Life SDK for Xash3D
Half-Life SDK for Xash3D & GoldSource with some fixes.
How to build
CMake as most universal way
mkdir build && cd build
cmake ../
make
Crosscompiling using mingw:
mkdir build-mingw && cd build-mingw
TOOLCHAIN_PREFIX=i686-w64-mingw32 # check up the actual mingw prefix of your mingw installation
cmake ../ -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER="$TOOLCHAIN_PREFIX-gcc" -DCMAKE_CXX_COMPILER="$TOOLCHAIN_PREFIX-g++"
You may enable or disable some build options by -Dkey=value. All available build options are defined in CMakeLists.txt at root directory. See below if you want to build the GoldSource compatible libraries.
See below, if CMake is not suitable for you:
Windows
Using msvc
We use compilers provided with Microsoft Visual Studio 6. There're compile.bat
scripts in both cl_dll
and dlls
directories.
Before running any of those files you must define MSVCDir
variable which is the path to your msvc installation.
set MSVCDir=C:\Program Files\Microsoft Visual Studio
compile.bat
These scripts also can be ran via wine:
MSVCDir="z:\home\$USER\.wine\drive_c\Program Files\Microsoft Visual Studio" wine cmd /c compile.bat
The libraries built this way are always GoldSource compatible.
Using mingw
TODO
Unix-like
To use waf, you need to install python (2.7 minimum)
(./waf configure -T release)
(./waf)
Android
Just typical ndk-build
.
TODO: describe what it is.
Building GoldSource-compatible libraries
To enable building the goldsource compatible client library add GOLDSOURCE_SUPPORT flag when calling cmake:
cmake .. -DGOLDSOURCE_SUPPORT=ON
or when using waf:
./waf configure -T release --enable-goldsrc-support
Unlike original client by Valve the resulting client library will not depend on vgui or SDL2 just like the one that's used in FWGS Xash3d.
Note for Windows: it's not possible to create GoldSource compatible libraries using mingw, only msvc builds will work.
Note for Linux: GoldSource requires libraries (both client and server) to be compiled with libstdc++ bundled with g++ of major version 4 (versions from 4.6 to 4.9 should work). If your Linux distribution does not provide compatible g++ version you have several options.
Method 1: Statically build with c++ library
This one is the most simple but has a drawback.
cmake ../ -DGOLDSOURCE_SUPPORT=ON -DCMAKE_C_FLAGS="-static-libstdc++ -static-libgcc"
The drawback is that the compiled libraries will be larger in size.
Method 2: Build in Steam Runtime chroot
This is the official way to build Steam compatible games for Linux.
Clone https://github.com/ValveSoftware/steam-runtime and follow instructions https://github.com/ValveSoftware/steam-runtime#building-in-the-runtime
sudo ./setup_chroot.sh --i386
Then use cmake and make as usual, but prepend the commands with schroot --chroot steamrt_scout_i386 --
:
mkdir build-in-steamrt && cd build-in-steamrt
schroot --chroot steamrt_scout_i386 -- cmake ../ -DGOLDSOURCE_SUPPORT=ON
schroot --chroot steamrt_scout_i386 -- make
Method 3: Create your own chroot with older distro that includes g++ 4.
Use the most suitable way for you to create an old distro 32-bit chroot. E.g. on Debian (and similar) you can use debootstrap.
sudo debootstrap --arch=i386 jessie /var/chroot/jessie-debian-i386 # On Ubuntu type trusty instead of jessie
sudo chroot /var/chroot/jessie-debian-i386
Inside chroot install cmake, make, g++ and libsdl2-dev. Then exit the chroot.
On the host system install schroot. Then create and adapt the following config in /etc/schroot/chroot.d/jessie.conf (you can choose a different name):
[jessie]
type=directory
description=Debian jessie i386
directory=/var/chroot/debian-jessie-i386/
users=yourusername
groups=yourusername
root-groups=root
preserve-environment=true
personality=linux32
Insert your actual user name in place of yourusername
. Then prepend any make or cmake call with schroot -c jessie --
:
mkdir build-in-chroot && cd build-in-chroot
schroot --chroot jessie -- cmake ../ -DGOLDSOURCE_SUPPORT=ON
schroot --chroot jessie -- make
Method 4: Install the needed g++ version yourself
TODO: describe steps.
Configuring Qt Creator to use toolchain from chroot
Create a file with the following contents anywhere:
#!/bin/sh
schroot --chroot steamrt_scout_i386 -- cmake "$@"
Make it executable.
In Qt Creator go to Tools
-> Options
-> Build & Run
-> CMake
. Add a new cmake tool and specify the path of previously created file.
Go to Kits
tab, clone your default configuration and choose your CMake tool there.
Choose the new kit when opening CMakeLists.txt.