]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Switch Irrlicht dependency to our own fork
authorsfan5 <sfan5@live.de>
Thu, 18 Feb 2021 13:50:47 +0000 (14:50 +0100)
committersfan5 <sfan5@live.de>
Tue, 9 Mar 2021 20:53:17 +0000 (21:53 +0100)
-> https://github.com/minetest/irrlicht

CMakeLists.txt
README.md
cmake/Modules/FindIrrlicht.cmake
src/CMakeLists.txt

index 31e914c768801ebcbd86bfe7ac8f397aa140d0da..67a35fda912d87b7a5fcdde765ba6fb51192b50a 100644 (file)
@@ -61,6 +61,29 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
 
 # This is done here so that relative search paths are more reasonable
 find_package(Irrlicht)
+if(BUILD_CLIENT AND NOT IRRLICHT_FOUND)
+       message(FATAL_ERROR "Irrlicht is required to build the client, but it was not found.")
+elseif(IRRLICHT_INCLUDE_DIR STREQUAL "")
+       message(FATAL_ERROR "Irrlicht headers are required to build the server, but none found.")
+endif()
+
+include(CheckSymbolExists)
+set(CMAKE_REQUIRED_INCLUDES ${IRRLICHT_INCLUDE_DIR})
+unset(HAS_FORKED_IRRLICHT CACHE)
+check_symbol_exists(IRRLICHT_VERSION_MT "IrrCompileConfig.h" HAS_FORKED_IRRLICHT)
+if(NOT HAS_FORKED_IRRLICHT)
+       string(CONCAT EXPLANATION_MSG
+               "Irrlicht found, but it is not Minetest's Irrlicht fork. "
+               "The Minetest team has forked Irrlicht to make their own customizations. "
+               "It can be found here: https://github.com/minetest/irrlicht")
+       if(BUILD_CLIENT)
+               message(FATAL_ERROR "${EXPLANATION_MSG}\n"
+                       "Building the client with upstream Irrlicht is no longer possible.")
+       else()
+               message(WARNING "${EXPLANATION_MSG}\n"
+                       "The server can still be built with upstream Irrlicht but this is DISCOURAGED.")
+       endif()
+endif()
 
 
 # Installation
index 1d8f754fedf65a83c9e98e7287db43f77c417977..8e2f1be572bf0203efaed59e8cb2c44820d6779d 100644 (file)
--- a/README.md
+++ b/README.md
@@ -134,7 +134,7 @@ Compiling
 |------------|---------|------------|
 | GCC        | 4.9+    | Can be replaced with Clang 3.4+ |
 | CMake      | 2.6+    |            |
-| Irrlicht   | 1.7.3+  |            |
+| Irrlicht   | -       | Custom version required, see https://github.com/minetest/irrlicht |
 | SQLite3    | 3.0+    |            |
 | LuaJIT     | 2.0+    | Bundled Lua 5.1 is used if not present |
 | GMP        | 5.0.0+  | Bundled mini-GMP is used if not present |
@@ -142,19 +142,19 @@ Compiling
 
 For Debian/Ubuntu users:
 
-    sudo apt install g++ make libc6-dev libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
+    sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
 
 For Fedora users:
 
-    sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel
+    sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel
     
 For Arch users:
 
-    sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm irrlicht libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses
+    sudo pacman -S base-devel libcurl-gnutls cmake libxxf86vm libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses
 
 For Alpine users:
 
-    sudo apk add build-base irrlicht-dev cmake bzip2-dev libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev
+    sudo apk add build-base cmake libpng-dev jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev
 
 #### Download
 
@@ -209,8 +209,8 @@ Run it:
 - You can disable the client build by specifying `-DBUILD_CLIENT=FALSE`.
 - You can select between Release and Debug build by `-DCMAKE_BUILD_TYPE=<Debug or Release>`.
   - Debug build is slower, but gives much more useful output in a debugger.
-- If you build a bare server you don't need to have Irrlicht installed.
-  - In that case use `-DIRRLICHT_SOURCE_DIR=/the/irrlicht/source`.
+- If you build a bare server you don't need to have the Irrlicht library installed.
+  - In that case use `-DIRRLICHT_INCLUDE_DIR=/some/where/irrlicht/include`.
 
 ### CMake options
 
@@ -246,8 +246,6 @@ General options and their default values:
 
 Library specific options:
 
-    BZIP2_INCLUDE_DIR               - Linux only; directory where bzlib.h is located
-    BZIP2_LIBRARY                   - Linux only; path to libbz2.a/libbz2.so
     CURL_DLL                        - Only if building with cURL on Windows; path to libcurl.dll
     CURL_INCLUDE_DIR                - Only if building with cURL; directory where curl.h is located
     CURL_LIBRARY                    - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib
@@ -276,7 +274,6 @@ Library specific options:
     SPATIAL_LIBRARY                 - Only when building with LibSpatial; path to libspatialindex_c.so/spatialindex-32.lib
     LUA_INCLUDE_DIR                 - Only if you want to use LuaJIT; directory where luajit.h is located
     LUA_LIBRARY                     - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so
-    MINGWM10_DLL                    - Only if compiling with MinGW; path to mingwm10.dll
     OGG_DLL                         - Only if building with sound on Windows; path to libogg.dll
     OGG_INCLUDE_DIR                 - Only if building with sound; directory that contains an ogg directory which contains ogg.h
     OGG_LIBRARY                     - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a
@@ -314,9 +311,10 @@ It is highly recommended to use vcpkg as package manager.
 
 After you successfully built vcpkg you can easily install the required libraries:
 ```powershell
-vcpkg install irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows
+vcpkg install zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp --triplet x64-windows
 ```
 
+- **Note that you currently need to build irrlicht on your own**
 - `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store.
 - `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound.
 - `freetype` is optional, it allows true-type font rendering.
index 6f361e82966d582fdf2590c95f3c6beaa018c132..8296de685b36887dfd025245d794294d563cec2d 100644 (file)
@@ -1,44 +1,11 @@
 
 mark_as_advanced(IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR IRRLICHT_DLL)
-set(IRRLICHT_SOURCE_DIR "" CACHE PATH "Path to irrlicht source directory (optional)")
 
+# Find include directory and libraries
 
-# Find include directory
-
-if(NOT IRRLICHT_SOURCE_DIR STREQUAL "")
-       set(IRRLICHT_SOURCE_DIR_INCLUDE
-               "${IRRLICHT_SOURCE_DIR}/include"
-       )
-
-       set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a Irrlicht Irrlicht.lib)
-
-       if(WIN32)
-               if(MSVC)
-                       set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-visualstudio")
-                       set(IRRLICHT_LIBRARY_NAMES Irrlicht.lib)
-               else()
-                       set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-gcc")
-                       set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a libIrrlicht.dll.a)
-               endif()
-       else()
-               set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Linux")
-               set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a)
-       endif()
-
-       find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
-               PATHS
-               ${IRRLICHT_SOURCE_DIR_INCLUDE}
-               NO_DEFAULT_PATH
-       )
-
-       find_library(IRRLICHT_LIBRARY NAMES ${IRRLICHT_LIBRARY_NAMES}
-               PATHS
-               ${IRRLICHT_SOURCE_DIR_LIBS}
-               NO_DEFAULT_PATH
-       )
-
-else()
+if(TRUE)
        find_path(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
+               DOC "Path to the directory with Irrlicht includes"
                PATHS
                /usr/local/include/irrlicht
                /usr/include/irrlicht
@@ -46,7 +13,8 @@ else()
                PATH_SUFFIXES "include/irrlicht"
        )
 
-       find_library(IRRLICHT_LIBRARY NAMES libIrrlicht.so libIrrlicht.a Irrlicht
+       find_library(IRRLICHT_LIBRARY NAMES libIrrlicht Irrlicht
+               DOC "Path to the Irrlicht library file"
                PATHS
                /usr/local/lib
                /usr/lib
@@ -54,19 +22,14 @@ else()
        )
 endif()
 
+# Users will likely need to edit these
+mark_as_advanced(CLEAR IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR)
 
 # On Windows, find the DLL for installation
 if(WIN32)
        # If VCPKG_APPLOCAL_DEPS is ON, dll's are automatically handled by VCPKG
        if(NOT VCPKG_APPLOCAL_DEPS)
-               if(MSVC)
-                       set(IRRLICHT_COMPILER "VisualStudio")
-               else()
-                       set(IRRLICHT_COMPILER "gcc")
-               endif()
                find_file(IRRLICHT_DLL NAMES Irrlicht.dll
-                       PATHS
-                       "${IRRLICHT_SOURCE_DIR}/bin/Win32-${IRRLICHT_COMPILER}"
                        DOC "Path of the Irrlicht dll (for installation)"
                )
        endif()
index 7bcf8d6c73f84aabe155c33804aef191a65c5148..62d604820fc235364164377240cc37c6af20ba45 100644 (file)
@@ -295,7 +295,6 @@ else()
                endif(NOT HAIKU AND NOT APPLE)
 
                find_package(JPEG REQUIRED)
-               find_package(BZip2 REQUIRED)
                find_package(PNG REQUIRED)
                if(APPLE)
                        find_library(CARBON_LIB Carbon REQUIRED)