From 3caba651b9cf2ef6396977f0c06ffb6d3659c563 Mon Sep 17 00:00:00 2001 From: proller Date: Sat, 10 Jan 2026 22:09:34 +0100 Subject: [PATCH] fetch deps --- .gitmodules | 2 +- cmake/Modules/freeminer_src.cmake | 152 ++++++++++++++++++++++++++++-- src/external/websocketpp | 2 +- src/map.cpp | 1 + src/mapgen/earth/osmium-tool | 2 +- util/buildbot/buildwin32.sh | 2 + util/buildbot/buildwin64.sh | 2 + 7 files changed, 154 insertions(+), 9 deletions(-) diff --git a/.gitmodules b/.gitmodules index 01db8062c..b66be7c41 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,7 +15,7 @@ url = https://github.com/msgpack/msgpack-c.git [submodule "src/external/websocketpp"] path = src/external/websocketpp - url = https://github.com/FelixHommel/websocketpp.git + url = https://github.com/jcelerier/websocketpp.git [submodule "src/external/leveldb"] path = src/external/leveldb url = https://github.com/google/leveldb diff --git a/cmake/Modules/freeminer_src.cmake b/cmake/Modules/freeminer_src.cmake index 015e5b841..7d32cc500 100644 --- a/cmake/Modules/freeminer_src.cmake +++ b/cmake/Modules/freeminer_src.cmake @@ -17,9 +17,35 @@ if(USE_MULTI) endif() endif() -option(BOOST_COMPILE "Compile boost in place" 0) -if(BOOST_COMPILE) +option(FETCH_DEPS "Compile deps (boost,...) in place" 0) + +if(FETCH_DEPS) + include(FetchContent) + set(FETCHCONTENT_QUIET FALSE) # Needed to print downloading progress + set(ENABLE_LIB_ONLY ON CACHE BOOL "") + set(ENABLE_TESTS OFF CACHE BOOL "") + FetchContent_Declare( + BZip2 + GIT_REPOSITORY "https://gitlab.com/bzip2/bzip2.git" + GIT_TAG "master" + # GIT_TAG "bzip2-1.0.8" # CMake support not available + GIT_SHALLOW TRUE + + OVERRIDE_FIND_PACKAGE TRUE + USES_TERMINAL_DOWNLOAD TRUE + GIT_PROGRESS TRUE + DOWNLOAD_EXTRACT_TIMESTAMP ON + ) + FetchContent_MakeAvailable(BZip2) + set(BZIP2_FOUND 1 CACHE BOOL "") + add_library(BZip2::BZip2 ALIAS bz2) + set(BZIP2_INCLUDE_DIR "${bzip2_SOURCE_DIR}" CACHE INTERNAL "") + target_include_directories(bz2 PUBLIC ${BZIP2_INCLUDE_DIR}) +endif() + +if(FETCH_DEPS) set(BOOST_ENABLE_CMAKE ON) + set(BOOST_INCLUDE_LIBRARIES program_options) include(FetchContent) set(FETCHCONTENT_QUIET FALSE) # Needed to print downloading progress @@ -41,6 +67,35 @@ if(ENABLE_WEBSOCKET OR ENABLE_WEBSOCKET_SCTP) if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp/CMakeLists.txt) find_package(Boost) if(Boost_FOUND) + + if(boost_SOURCE_DIR) + include_directories(BEFORE SYSTEM + ${boost_SOURCE_DIR}/libs/align/include + ${boost_SOURCE_DIR}/libs/asio/include + ${boost_SOURCE_DIR}/libs/assert/include + ${boost_SOURCE_DIR}/libs/bind/include + ${boost_SOURCE_DIR}/libs/config/include + ${boost_SOURCE_DIR}/libs/container_hash/include + ${boost_SOURCE_DIR}/libs/container/include + ${boost_SOURCE_DIR}/libs/core/include + ${boost_SOURCE_DIR}/libs/date_time/include + ${boost_SOURCE_DIR}/libs/describe/include + ${boost_SOURCE_DIR}/libs/detail/include + ${boost_SOURCE_DIR}/libs/function/include + ${boost_SOURCE_DIR}/libs/lexical_cast/include + ${boost_SOURCE_DIR}/libs/move/include + ${boost_SOURCE_DIR}/libs/mp11/include + ${boost_SOURCE_DIR}/libs/mpl/include + ${boost_SOURCE_DIR}/libs/numeric/conversion/include + ${boost_SOURCE_DIR}/libs/smart_ptr/include + ${boost_SOURCE_DIR}/libs/static_assert/include + ${boost_SOURCE_DIR}/libs/system/include + ${boost_SOURCE_DIR}/libs/throw_exception/include + ${boost_SOURCE_DIR}/libs/type_index/include + ${boost_SOURCE_DIR}/libs/type_traits/include + ) + endif() + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp) #add_subdirectory(external/websocketpp) #set(WEBSOCKETPP_LIBRARY websocketpp::websocketpp) @@ -127,6 +182,62 @@ option(ENABLE_OSMIUM "Enable Osmium" 1) # endif() if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/mapgen/earth/libosmium/CMakeLists.txt)) + + if(FETCH_DEPS) + include(FetchContent) + set(FETCHCONTENT_QUIET FALSE) # Needed to print downloading progress + + FetchContent_Declare(lz4 + URL https://github.com/lz4/lz4/archive/refs/tags/v1.10.0.tar.gz + URL_HASH SHA256=537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b + SOURCE_SUBDIR build/cmake + SYSTEM TRUE + + GIT_SHALLOW TRUE + OVERRIDE_FIND_PACKAGE TRUE + USES_TERMINAL_DOWNLOAD TRUE + GIT_PROGRESS TRUE + DOWNLOAD_EXTRACT_TIMESTAMP ON + EXCLUDE_FROM_ALL + + ) + FetchContent_MakeAvailable(lz4) + + FetchContent_Declare(protozero + GIT_REPOSITORY https://github.com/mapbox/protozero + GIT_TAG v1.8.1 + SOURCE_SUBDIR cmake + GIT_SUBMODULES_RECURSE OFF + + GIT_SHALLOW TRUE + OVERRIDE_FIND_PACKAGE TRUE + USES_TERMINAL_DOWNLOAD TRUE + GIT_PROGRESS TRUE + DOWNLOAD_EXTRACT_TIMESTAMP ON + EXCLUDE_FROM_ALL + ) + FetchContent_MakeAvailable(protozero) + + set(PROTOZERO_INCLUDE_DIR "${protozero_SOURCE_DIR}") + + FetchContent_Declare( + expat + GIT_REPOSITORY https://github.com/libexpat/libexpat/ + GIT_TAG R_2_7_3 + SOURCE_SUBDIR expat/ + + GIT_SHALLOW TRUE + OVERRIDE_FIND_PACKAGE TRUE + USES_TERMINAL_DOWNLOAD TRUE + GIT_PROGRESS TRUE + DOWNLOAD_EXTRACT_TIMESTAMP ON + EXCLUDE_FROM_ALL + + ) + FetchContent_MakeAvailable(expat) + + add_library(EXPAT::EXPAT ALIAS expat) + endif() set(Boost_USE_STATIC_LIBS ${BUILD_STATIC_LIBS}) find_package(Boost COMPONENTS program_options) if(Boost_FOUND) @@ -139,7 +250,6 @@ if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/m set(CPPCHECK 0 CACHE INTERNAL "") if(NOT OSMIUM_INCLUDE_DIR) - if(boost_SOURCE_DIR) include_directories(BEFORE SYSTEM ${boost_SOURCE_DIR}/libs/any/include @@ -179,15 +289,39 @@ if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/m ${boost_SOURCE_DIR}/libs/property_map/include ${boost_SOURCE_DIR}/libs/qvm/include ${boost_SOURCE_DIR}/libs/rational/include + ${boost_SOURCE_DIR}/libs/smart_ptr/include ${boost_SOURCE_DIR}/libs/tokenizer/include ${boost_SOURCE_DIR}/libs/tti/include ${boost_SOURCE_DIR}/libs/unordered/include ) endif() - add_subdirectory(mapgen/earth/libosmium) - set(OSMIUM_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mapgen/earth/libosmium/include) + # TODO: support system installed libosmium + if(NOT FETCH_DEPS) + add_subdirectory(mapgen/earth/libosmium) + set(OSMIUM_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mapgen/earth/libosmium/include) + else() + FetchContent_Declare(libosmium + GIT_REPOSITORY https://github.com/osmcode/libosmium + GIT_TAG v2.22.0 + #SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/contrib/libosmium + SOURCE_SUBDIR cmake + GIT_SUBMODULES_RECURSE OFF + + GIT_SHALLOW TRUE + OVERRIDE_FIND_PACKAGE TRUE + USES_TERMINAL_DOWNLOAD TRUE + GIT_PROGRESS TRUE + DOWNLOAD_EXTRACT_TIMESTAMP ON + EXCLUDE_FROM_ALL + + ) + FetchContent_MakeAvailable(libosmium) + set(OSMIUM_INCLUDE_DIR ${libosmium_SOURCE_DIR}/include ${PROTOZERO_INCLUDE_DIR}/include) + endif() + include_directories(BEFORE SYSTEM ${OSMIUM_INCLUDE_DIR}) + endif() find_package(BZip2) if(BZIP2_FOUND) @@ -214,6 +348,9 @@ if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/m set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/mapgen/earth/osmium-tool/cmake/Modules/") # add_subdirectory(mapgen/earth/osmium-tool) set(OSMIUM_TOOL_SRC mapgen/earth/osmium-tool/src/) + + configure_file(${OSMIUM_TOOL_SRC}/version.cpp.in ${PROJECT_BINARY_DIR}/${OSMIUM_TOOL_SRC}/version.cpp) + add_library(osmium-tool-lib ${PROJECT_BINARY_DIR}/${OSMIUM_TOOL_SRC}/version.cpp ${OSMIUM_TOOL_SRC}command_extract.cpp @@ -240,7 +377,10 @@ if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/m ${OSMIUM_TOOL_SRC}extract/strategy_simple.cpp ${OSMIUM_TOOL_SRC}extract/strategy_smart.cpp ) - target_link_libraries(osmium-tool-lib PUBLIC Boost::program_options) + target_link_libraries(osmium-tool-lib + PRIVATE ${OSMIUM_LIRARY} + PUBLIC Boost::program_options) + target_include_directories(osmium-tool-lib PRIVATE ${OSMIUM_INCLUDE_DIR}) set(OSMIUM_TOOL_LIBRARY osmium-tool-lib) set(FREEMINER_COMMON_LIBRARIES ${FREEMINER_COMMON_LIBRARIES} ${OSMIUM_TOOL_LIBRARY}) diff --git a/src/external/websocketpp b/src/external/websocketpp index b6d67195b..3b86173af 160000 --- a/src/external/websocketpp +++ b/src/external/websocketpp @@ -1 +1 @@ -Subproject commit b6d67195bc689e597ffabdb06a4fdd8bc5c9ec39 +Subproject commit 3b86173af2b936df997f1a32609ea09336447eb1 diff --git a/src/map.cpp b/src/map.cpp index 393e130f9..bbf3dfdd9 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -105,6 +105,7 @@ MapSector *Map::getSectorNoGenerate(v2s16 p) return getSectorNoGenerateNoLock(p); } +/* MapBlock *Map::getBlockNoCreateNoEx(v3s16 p3d) { v2s16 p2d(p3d.X, p3d.Z); diff --git a/src/mapgen/earth/osmium-tool b/src/mapgen/earth/osmium-tool index 71570dc88..0177227bd 160000 --- a/src/mapgen/earth/osmium-tool +++ b/src/mapgen/earth/osmium-tool @@ -1 +1 @@ -Subproject commit 71570dc889d3df6de7554c2032b88bfc1c648cbb +Subproject commit 0177227bd2677c20a0732d545bc801bc55d71a01 diff --git a/util/buildbot/buildwin32.sh b/util/buildbot/buildwin32.sh index 34767f707..f6f3d12de 100755 --- a/util/buildbot/buildwin32.sh +++ b/util/buildbot/buildwin32.sh @@ -52,6 +52,8 @@ cd $builddir [ -d build ] && rm -rf build cmake_args=( + -DFETCH_DEPS=1 + -DCMAKE_TOOLCHAIN_FILE=$toolchain_file -DCMAKE_INSTALL_PREFIX=/tmp -DBUILD_CLIENT=1 -DBUILD_SERVER=0 diff --git a/util/buildbot/buildwin64.sh b/util/buildbot/buildwin64.sh index c63a18901..9a4044bdc 100755 --- a/util/buildbot/buildwin64.sh +++ b/util/buildbot/buildwin64.sh @@ -52,6 +52,8 @@ cd $builddir [ -d build ] && rm -rf build cmake_args=( + -DFETCH_DEPS=1 + -DCMAKE_TOOLCHAIN_FILE=$toolchain_file -DCMAKE_INSTALL_PREFIX=/tmp -DBUILD_CLIENT=1 -DBUILD_SERVER=0