diff --git a/.gitignore b/.gitignore index 9db060aad..df1386bce 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,6 @@ CMakeDoxy* compile_commands.json *.apk *.zip + +# Optional user provided library folder +lib/irrlichtmt diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f90847ea..42b343540 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,11 +58,27 @@ 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 "IrrlichtMt is required to build the client, but it was not found.") -elseif(NOT IRRLICHT_INCLUDE_DIR) - message(FATAL_ERROR "Irrlicht or IrrlichtMt headers are required to build the server, but none found.") +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lib/irrlichtmt") + message(STATUS "Using user-provided IrrlichtMt at subdirectory 'lib/irrlichtmt'") + # tell IrrlichtMt to create a static library + set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library" FORCE) + add_subdirectory(lib/irrlichtmt EXCLUDE_FROM_ALL) + unset(BUILD_SHARED_LIBS CACHE) + + if(NOT TARGET IrrlichtMt) + message(FATAL_ERROR "IrrlichtMt project is missing a CMake target?!") + endif() + + # set include dir the way it would normally be + set(IRRLICHT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/irrlichtmt/include") + set(IRRLICHT_LIBRARY IrrlichtMt) +else() + find_package(Irrlicht) + if(BUILD_CLIENT AND NOT IRRLICHT_FOUND) + message(FATAL_ERROR "IrrlichtMt is required to build the client, but it was not found.") + elseif(NOT IRRLICHT_INCLUDE_DIR) + message(FATAL_ERROR "Irrlicht or IrrlichtMt headers are required to build the server, but none found.") + endif() endif() include(CheckSymbolExists) diff --git a/README.md b/README.md index 013687685..0cd134f27 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,10 @@ Download minetest_game (otherwise only the "Development Test" game is available) git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game +Download IrrlichtMt to `lib/irrlichtmt`, it will be used to satisfy the IrrlichtMt dependency that way: + + git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt + Download source, without using Git: wget https://github.com/minetest/minetest/archive/master.tar.gz @@ -191,6 +195,14 @@ Download minetest_game, without using Git: mv minetest_game-master minetest_game cd .. +Download IrrlichtMt, without using Git: + + cd lib/ + wget https://github.com/minetest/irrlicht/archive/master.tar.gz + tar xf master.tar.gz + mv irrlicht-master irrlichtmt + cd .. + #### Build Build a version that runs directly from the source directory: