X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=README.md;h=7507fffea82aa985357967d9d840cd7772e17134;hb=5b392d49d88dd8cdb00a84cbeae2e713c0824012;hp=dfcbcb0418f0a0888e051594fd00a29292952ea8;hpb=25256136549cd4b7f3c7fadc5f72be418f5bc720;p=xonotic%2Fnetradiant.git diff --git a/README.md b/README.md index dfcbcb04..7507fffe 100644 --- 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: