]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - README.md
Merge branch 'kingpin' into 'master'
[xonotic/netradiant.git] / README.md
index 4824192d708e54f41aa86f97ee254616ec20e0c6..ebeccebc244b02b8a931758eddd89142716881c1 100644 (file)
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@ To fetch default game packages you'll need Git and to fetch some optional ones y
 
 Under MSYS2, the mingw shell must be used.
 
-If you use MSYS2 over SSH, add `mingw64` to the path this way (given you compile for 64 bit windows): 
+If you use MSYS2 over SSH, add `mingw64` to the path this way (given you compile for 64 bit Windows): 
 
 ```
 export PATH="/mingw64/bin:${PATH}"`
@@ -52,7 +52,7 @@ Install the dependencies this way:
 
 
 ```
-pacman -S --needed base-devel mingw-w64-$(uname -m)-{toolchain,cmake,make,gtk2,gtkglext,libwebp,minizip-git} git
+pacman -S --needed base-devel mingw-w64-$(uname -m)-{ntldd-git,toolchain,cmake,make,gtk2,gtkglext,libwebp,minizip-git} git
 ```
 
 Explicitely use `mingw-w64-x86_64-` or `mingw-w64-i686-` prefix if you need to target a non-default architecture.
@@ -63,7 +63,7 @@ You may have to install `subversion` and `unzip` to fetch or extract some non-de
 ## macOS:
 
 ```
-brew install gcc cmake Caskroom/cask/xquartz gtkglext pkgconfig minizip webp coreutils gnu-sed
+brew install gcc cmake gtkglext pkgconfig minizip webp coreutils gnu-sed
 brew link --force gettext
 ```
 
@@ -80,15 +80,17 @@ git submodule update --init --recursive
 
 # Compiling
 
+## Initial build
+
 This project uses the usual CMake workflow:
 
-## Debug
+### Debug
 
 ```
-cmake -G "Unix Makefiles" -H. -Bbuild && cmake --build build -- -j$(nproc)
+cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Debug && cmake --build build -- -j$(nproc)
 ```
 
-## Release
+### Release
 
 ```
 cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build -- -j$(nproc)
@@ -97,13 +99,27 @@ cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --buil
 On macOS you have to add this to the first cmake call:
 
 ```
--DCMAKE_C_COMPILER=/usr/local/bin/gcc-9 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-9 -DOPENGL_INCLUDE_DIR=/opt/X11/include -DOPENGL_gl_LIBRARY=/opt/X11/lib/libGL.dylib
+-DCMAKE_C_COMPILER=/usr/local/bin/gcc-9 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-9
 ```
 
 On FreeBSD you have to add this to the first cmake call:
 
 ```
-cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=/usr/local/bin/gcc8 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++8
+-DCMAKE_C_COMPILER=/usr/local/bin/gcc8 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++8
+```
+
+## Subsequent builds
+
+The initial build will download the gamepacks and build NetRadiant and tools. If you frequently recompile you can skip downloading the gamepacks:
+
+```
+cmake --build build --target binaries -- -j$(nproc)
+```
+
+You should still periodically update gamepacks:
+
+```
+cmake --build build --target gamepacks
 ```
 
 ## Build and installation details
@@ -112,8 +128,10 @@ cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=/usr/local/bin/gcc8 -DCMAKE_CXX_COM
 
 options:
 
+* `BUNDLE_LIBRARIES=ON`
+   Bundle libraries (only MSYS2 is supported at this time)
 * `BUILD_RADIANT=OFF`  
-   Do not build NetRadiant (default: `ON`, build radiant graphical editor)
+   Do not build NetRadiant (default: `ON`, build netradiant graphical editor)
 * `BUILD_TOOLS=OFF`  
    Do not build q3map2 and other tools (default: `ON`, build command line tools)
 * `BUILD_CRUNCH=ON`  
@@ -123,19 +141,25 @@ options:
 
 targets:
 
-* `radiant`    Compiles the radiant core binary
-* `modules`    Compiles all modules (each module has its own target as well)
-* `plugins`    Compiles all plugins (each plugin has its own target as well)
-* `quake3`     Compiles all the Quake3 tools
-  - `q3map2`   Compiles the quake3 map compiler
-  - `q3data`   Compiles the q3data tool
+* `binaries`          Compiles all binaries
+  - `netradiant`      Compiles the netradiant editor
+  - `modules`         Compiles all modules (each module has its own target as well)
+  - `plugins`         Compiles all plugins (each plugin has its own target as well)
+  - `tools`           Compiles all tools (each tool has its own target as well)
+     * `quake2`       Compiles all the Quake2 tools: `q2map`, `qdata3`
+     * `heretic2`     Compiles all the Heretic2 tools: `q2map`, `h2data`
+     * `quake3`       Compiles all the Quake3 tools:
+         - `q3map2`   Compiles the quake3 map compiler
+         - `q3data`   Compiles the q3data tool
+
+Type `make help` to get an exhaustive list of targets.
 
 ### Download details
 
 options:
 
 * `DOWNLOAD_GAMEPACKS=OFF`  
-   Do not automatically download the gamepack data during the first compilation (default: `ON`)
+   Do not automatically download the gamepack data on each compilation and do not install game packs already downloaded (default: `ON`)
 * `GAMEPACKS_LICENSE_LIST=all`  
    Download all gamepacks whatever the license (default: `free`, download free gamepacks, can be set to `none` to only filter by name)
 * `GAMEPACKS_NAME_LIST="Xonotic Unvanquished"`  
@@ -143,7 +167,7 @@ options:
 
 target:
 
-* `game_packs` Downloads the game pack data
+* `gamepacks` Downloads the game pack data
 
 Run `./gamepacks-manager -h` to know about available licenses and other available games. Both lists are merged, for example setting `GAMEPACKS_LICENSE_LIST=GPL` and `GAMEPACKS_NAME_LIST=Q3` will install both GPL gamepacks and proprietary Quake 3 one.
 
@@ -161,12 +185,6 @@ target:
 * `install`  
   Install files
 
-Note that because of both the way NetRadiant works and the way bundled library loading works CMake has to do some globbing to detect some of the produced/copied files it has to install. So you have to run cmake again before installing:
-
-```
-cmake -H. -Bbuild && cmake --build build -- install
-```
-
 ## Note about Crunch
 
 The crnlib used to decode `.crn` files is the one from [Dæmon](http://github.com/DaemonEngine/Daemon) which is the one by [Unity](https://github.com/Unity-Technologies/crunch/tree/unity) made cross-platform and slightly improved. Since Unity brokes compatibility with [BinomialLLC's legacy tree](https://github.com/BinomialLLC/crunch) it's required to use either the `crunch` tool from Dæmon or the one from Unity to compress textures that have to be read by radiant or q3map2.