-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
204 additions
and
203 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,201 @@ | ||
# Build Instructions | ||
|
||
## Windows x86. | ||
|
||
### Prerequisites | ||
|
||
Install and run [Visual Studio Installer](https://visualstudio.microsoft.com/downloads/). The installer allows you to choose specific components. Select `Desktop development with C++`. You can untick everything you don't need in Installation details, but you must keep `MSVC` ticked. You may also keep `C++ CMake tools for Windows` ticked as you'll need **cmake**. Alternatively you can install **cmake** from the [cmake.org](https://cmake.org/download/) and during installation tick *Add to the PATH...*. | ||
|
||
### Opening command prompt | ||
|
||
If **cmake** was installed with Visual Studio Installer, you'll need to run `Developer command prompt for VS` via Windows `Start` menu. If **cmake** was installed with cmake installer, you can run the regular Windows `cmd`. | ||
|
||
Inside the prompt navigate to the hlsdk directory, using `cd` command, e.g. | ||
``` | ||
cd C:\Users\username\projects\Client-Mod | ||
``` | ||
|
||
Note: if Client-Mod is unpacked on another disk, nagivate there first: | ||
``` | ||
D: | ||
cd projects\Client-Mod | ||
``` | ||
|
||
### Building | ||
|
||
Сonfigure the project: | ||
``` | ||
cmake -A Win32 -B build | ||
``` | ||
Note that you must repeat the configuration step if you modify `CMakeLists.txt` files or want to reconfigure the project with different parameters. | ||
|
||
The next step is to compile the libraries: | ||
``` | ||
cmake --build build --config Release | ||
``` | ||
`hl.dll` and `client.dll` will appear in the `build/dlls/Release` and `build/cl_dll/Release` directories. | ||
|
||
If you have a mod and want to automatically install libraries to the mod directory, set **GAMEDIR** variable to the directory name and **CMAKE_INSTALL_PREFIX** to your Half-Life or Xash3D installation path: | ||
``` | ||
cmake -A Win32 -B build -DGAMEDIR=mod -DCMAKE_INSTALL_PREFIX="C:\Program Files (x86)\Steam\steamapps\common\Half-Life" | ||
``` | ||
Then call `cmake` with `--target install` parameter: | ||
``` | ||
cmake --build build --config Release --target install | ||
``` | ||
|
||
#### Choosing Visual Studio version | ||
|
||
You can explicitly choose a Visual Studio version on the configuration step by specifying cmake generator: | ||
``` | ||
cmake -G "Visual Studio 16 2019" -A Win32 -B build | ||
``` | ||
|
||
### Editing code in Visual Studio | ||
|
||
After the configuration step, `CLIENT-MOD.sln` should appear in the `build` directory. You can open this solution in Visual Studio and continue developing there. | ||
|
||
## Linux x86 | ||
|
||
### Prerequisites | ||
|
||
Install C++ compilers, cmake and x86 development libraries for C, C++ and SDL2. On Ubuntu/Debian: | ||
``` | ||
sudo apt install cmake build-essential gcc-multilib g++-multilib libsdl2-dev:i386 | ||
``` | ||
|
||
### Building | ||
|
||
``` | ||
cmake -B build -S . | ||
cmake --build build | ||
``` | ||
|
||
Note that the libraries built this way might be not compatible with Steam Half-Life. If you have such issue you can configure it to build statically with c++ and gcc libraries: | ||
``` | ||
cmake .. -DCMAKE_C_FLAGS="-static-libstdc++ -static-libgcc" | ||
``` | ||
|
||
## Linux x86. Build in your own chroot | ||
|
||
### Prerequisites | ||
|
||
Use the most suitable way for you to create an old distro 32-bit chroot. E.g. on Ubuntu/Debian you can use debootstrap. | ||
|
||
``` | ||
sudo apt install debootstrap schroot | ||
sudo mkdir -p /var/choots | ||
sudo debootstrap --arch=i386 jessie /var/chroots/jessie-i386 # On Ubuntu type trusty instead of jessie | ||
sudo chroot /var/chroots/jessie-i386 | ||
``` | ||
|
||
``` | ||
# inside chroot | ||
apt install cmake build-essential gcc-multilib g++-multilib libsdl2-dev | ||
exit | ||
``` | ||
|
||
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/chroots/jessie-i386/ | ||
users=yourusername | ||
groups=adm | ||
root-groups=root | ||
preserve-environment=true | ||
personality=linux32 | ||
``` | ||
|
||
Insert your actual user name in place of `yourusername`. | ||
|
||
### Building | ||
|
||
Prepend any make or cmake call with `schroot -c jessie --`: | ||
``` | ||
schroot --chroot jessie -- cmake -B build-in-chroot -S . | ||
schroot --chroot jessie -- cmake --build build-in-chroot | ||
``` | ||
|
||
## Android | ||
|
||
TODO | ||
|
||
## Nintendo Switch | ||
|
||
### Prerequisites | ||
|
||
1. Set up [`dkp-pacman`](https://devkitpro.org/wiki/devkitPro_pacman). | ||
2. Install dependency packages: | ||
``` | ||
sudo dkp-pacman -S switch-dev dkp-toolchain-vars switch-mesa switch-libdrm_nouveau switch-sdl2 | ||
``` | ||
3. Make sure the `DEVKITPRO` environment variable is set to the devkitPro SDK root: | ||
``` | ||
export DEVKITPRO=/opt/devkitpro | ||
``` | ||
4. Install libsolder: | ||
``` | ||
source $DEVKITPRO/switchvars.sh | ||
git clone https://github.com/fgsfdsfgs/libsolder.git | ||
make -C libsolder install | ||
``` | ||
|
||
### Building using CMake | ||
``` | ||
mkdir build && cd build | ||
aarch64-none-elf-cmake -G"Unix Makefiles" -DCMAKE_PROJECT_CLIENT-MOD_INCLUDE="$DEVKITPRO/portlibs/switch/share/SolderShim.cmake" .. | ||
make -j | ||
``` | ||
|
||
## PlayStation Vita | ||
|
||
### Prerequisites | ||
|
||
1. Set up [VitaSDK](https://vitasdk.org/). | ||
2. Install [vita-rtld](https://github.com/fgsfdsfgs/vita-rtld): | ||
``` | ||
git clone https://github.com/fgsfdsfgs/vita-rtld.git && cd vita-rtld | ||
mkdir build && cd build | ||
cmake -DCMAKE_BUILD_TYPE=Release .. | ||
make -j2 install | ||
``` | ||
|
||
### Building with CMake: | ||
``` | ||
mkdir build && cd build | ||
cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="$VITASDK/share/vita.toolchain.cmake" -DCMAKE_PROJECT_CLIENT-MOD_INCLUDE="$VITASDK/share/vrtld_shim.cmake" .. | ||
make -j | ||
``` | ||
|
||
## Other platforms | ||
|
||
Building on other architectures (e.g x86_64 or arm) and POSIX-compliant OSes (e.g. FreeBSD) is supported. | ||
|
||
### Prerequisites | ||
|
||
Install C and C++ compilers (like gcc or clang), cmake and make. | ||
|
||
### Building | ||
|
||
``` | ||
cmake -B build -S . | ||
cmake --build build | ||
``` | ||
|
||
## Build options | ||
|
||
Some useful build options that can be set during the cmake step. | ||
|
||
* **GOLDSOURCE_SUPPORT** - allows to turn off/on the support for GoldSource input. Set to **ON** by default on Windows and Linux, **OFF** on other platforms. | ||
* **USE_VGUI** - whether to use VGUI library. **OFF** by default. You need to init `vgui_support` submodule in order to build with VGUI. | ||
|
||
This list is incomplete. Look at `CMakeLists.txt` to see all available options. | ||
|
||
Prepend option names with `-D` when passing to cmake. Boolean options can take values **OFF** and **ON**. Example: | ||
|
||
``` | ||
cmake .. -DUSE_VGUI=ON -DGOLDSOURCE_SUPPORT=ON -DCROWBAR_IDLE_ANIM=ON -DCROWBAR_FIX_RAPID_CROWBAR=ON | ||
``` |
Oops, something went wrong.