]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - README.md
bikeshedding: unifying some variable in contrib/shaderplug
[xonotic/netradiant.git] / README.md
index dfcbcb0418f0a0888e051594fd00a29292952ea8..7507fffea82aa985357967d9d840cd7772e17134 100644 (file)
--- a/README.md
+++ b/README.md
@@ -3,19 +3,22 @@ NetRadiant
 
 ![NetRadiant logo](setup/data/tools/bitmaps/splash.png)
 
-The open source, cross platform level editor for id Tech-derivated games (has lineage from GtkRadiant).
+The open source, cross platform level editor for id Tech-derivated games (has lineage to GtkRadiant).
 
-## Compatibility
 
-|System   |Build    |Bundle   |Run      |Build requirements         |
-|---------|---------|---------|---------|---------------------------|
-|Linux    |**Yes**  |**Yes**  |**Yes**  |_GCC or LLVM/clang_        |
-|FreeBSD  |**Yes**  |_not yet_|**Yes**  |_GCC_                      |
-|Windows  |**Yes**  |**Yes**  |**Yes**  |_MSYS2/Mingw64 or Mingw32_ |
-|Wine     |-        |-        |**Yes**  |-                          |
-|macOS    |**Yes**  |_not yet_|_mostly_ |_GCC and patched GtkGLext_ |
+## Compatibility matrix
 
-NetRadiant is known to build and run properly on Linux, FreeBSD and Windows using MSYS2. NetRadiant is known to build on macOS, but can't display things properly without a modified GtkGLExt which is yet to be upstreamed, and issues are known. Windows build is known to work well on wine, which can be used as a fallback on that system. At this time library bundling is only supported on Windows/MSYS2 and Linux. Linux bundles do not ship GTK (users are espected to have a working GTK with GtkGlExt environment).
+|System   |Build    |Bundle    |Run      |Build requirements                   |
+|---------|---------|----------|---------|-------------------------------------|
+|Linux    |**Yes**  |**Yes**   |**Yes**  |_GCC or Clang_                       |
+|FreeBSD  |**Yes**  |_not yet_ |**Yes**  |_GCC_                                |
+|Windows  |**Yes**  |**Yes**   |**Yes**  |_MSYS2/Mingw64 or Mingw32_           |
+|Wine     |-        |-         |**Yes**  |-                                    |
+|macOS    |**Yes**  |_not yet_ |_mostly_ |_Homebrew, GCC and patched GtkGLExt_ |
+
+NetRadiant is known to build and run properly on Linux, FreeBSD and Windows using MSYS2. NetRadiant is known to build on macOS using Homebrew, but can't display things properly without a modified GtkGLExt which is yet to be upstreamed, and issues are known. Windows build is known to work well on wine, which can be used as a fallback on macOS.
+
+At this time library bundling is only supported on Windows/MSYS2 and Linux. Since bundling copies things from the host, a clean build environment has to be used in order to get a clean bundle. Linux bundle does not ship GTK (users are expected to have a working GTK environment with GtkGlExt installed).
 
 
 ## Getting the sources
@@ -24,9 +27,9 @@ Source browser, issues and more can be found on the gitlab project: https://gitl
 
 The latest source is available from the git repository: `https://gitlab.com/xonotic/netradiant.git`
 
-The `git` client can be obtained from the Git website: http://git-scm.org
+The `git` client can be obtained from your distribution repository or from the Git website: http://git-scm.org
 
-A copy of the source tree can be fetched using the command line `git` client this way:
+A copy of the source tree can be obtained using the command line `git` client this way:
 
 ```sh
 git clone --recursive https://gitlab.com/xonotic/netradiant.git
@@ -40,16 +43,20 @@ cd netradiant
 
 To fetch default game packages you'll need Git, Subversion and `unzip`.
 
+
 ### Ubuntu:
 
 ```sh
-apt-get install --reinstall build-essential cmake lib{x11,gtk2.0,gtkglext1,xml2,jpeg,webp,minizip}-dev  git subversion unzip wget
+apt-get install --reinstall build-essential cmake \
+    lib{x11,gtk2.0,gtkglext1,xml2,jpeg,webp,minizip}-dev \
+    git subversion unzip wget
 ```
 
 If you plan to build a bundle, you also need to install `uuid-runtime patchelf`
 
 This is enough to build NetRadiant but you may also install those extra packages to get proper GTK2 graphical and sound themes: `gnome-themes-extra gtk2-engines-murrine libcanberra-gtk-module`
 
+
 ### MSYS2:
 
 Under MSYS2, the mingw shell must be used.
@@ -63,7 +70,8 @@ export PATH="/mingw64/bin:${PATH}"`
 Install the dependencies this way:
 
 ```sh
-pacman -S --needed base-devel mingw-w64-$(uname -m)-{ntldd-git,subversion,unzip,toolchain,cmake,make,gtk2,gtkglext,libwebp,minizip-git} git
+pacman -S --needed base-devel git \
+    mingw-w64-$(uname -m)-{ntldd-git,subversion,unzip,toolchain,cmake,make,gtk2,gtkglext,libwebp,minizip-git}
 ```
 
 Explicitely use `mingw-w64-x86_64-` or `mingw-w64-i686-` prefix instead of `mingw-w64-$(uname -m)` if you need to target a non-default architecture.
@@ -79,16 +87,37 @@ brew link --force gettext
 
 ## Submodules
 
- * Crunch (optional, disabled by default, only supported with CMake build)
+ * Crunch (optional, not built if submodule is not present)
 
-If you have not used `--recursive` option at `git clone` time, you can fetch Crunch this way (run it within the `netradiant` repository):
+If you have not used `--recursive` option at `git clone` time, you can fetch Crunch this way (run this within the `netradiant` repository):
 
 ```sh
 git submodule update --init --recursive
 ```
 
 
-## Compiling
+## Simple compilation
+
+### Easy builder assistant
+
+If you have standard needs and use well-known platform and operating system, you may try the provided `easy-builder` script which may be enough for you:
+
+```sh
+./easy-builder
+```
+
+If everything went right, you'll find your netradiant build in `install/` subdirectory.
+
+If you need to build a debug build (to get help from a developer, for example), you can do it that way:
+
+```sh
+./easy-builder --debug
+```
+
+By default, build tools and compilers are using the `build/` directory as workspace.
+
+
+## Advanced compilation
 
 ### Initial build
 
@@ -98,7 +127,7 @@ This project uses the usual CMake workflow:
 #### Debug build
 
 ```sh
-cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Debug
+cmake -G "Unix Makefiles" -S. -Bbuild -DCMAKE_BUILD_TYPE=Debug
 cmake --build build -- -j$(nproc)
 ```
 
@@ -106,7 +135,7 @@ cmake --build build -- -j$(nproc)
 #### Release build
 
 ```sh
-cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
+cmake -G "Unix Makefiles" -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
 cmake --build build -- -j$(nproc)
 ```
 
@@ -148,26 +177,31 @@ Options:
   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`  
-  Enable crunch support (default: `OFF`, disable crunch support);
+* `BUILD_DAEMONMAP=OFF`  
+  Do not build daemonmap tool (default: `ON` if submodule is there, buils daemonmap navigation mesh generator);
+* `BUILD_CRUNCH=OFF`  
+  Disable crunch support (default: `ON` if submodule is there, enable crunch support);
 * `RADIANT_ABOUTMSG="Custom build by $(whoami)"`  
   A message shown in the about dialog (default: `Custom build`).
 
 Targets:
 
-* `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 Quake 2 tools: `q2map`, `qdata3`;
-     * `heretic2`     Compiles all the Heretic2 tools: `q2map`, `h2data`;
-     * `quake3`       Compiles all the Quake 3 tools:
-         - `q3map2`   Compiles the quake3 map compiler;
-         - `q3data`   Compiles the q3data tool.
+* `binaries`            Compile all binaries;
+  - `netradiant`        Compile the netradiant editor;
+  - `modules`           Compile all modules (each module has its own target as well);
+  - `plugins`           Compile all plugins (each plugin has its own target as well);
+  - `tools`             Compile all tools (each tool has its own target as well);
+     * `quake2`         Compile all the Quake 2 tools: `q2map`, `qdata3`;
+     * `heretic2`       Compile all the Heretic2 tools: `q2map`, `h2data`;
+     * `quake3`         Compile all the Quake 3 tools:
+         - `q3map2`     Compile the Quake 3 map compiler;
+         - `q3data`     Compile the q3data tool;
+     * `unvanquished`   Compile all the Unvanquished tool: `daemonmap`, `q3map3`, `q4data`;
+         - `daemonmap`  Compile the daemonmap navigation mesh generator.
 
 Type `make help` to get an exhaustive list of targets.
 
+
 #### Download details
 
 Options: