Use osmium-tool as lib

This commit is contained in:
proller committed 2025-11-30 19:00:22 +01:00
1 parent 68800baeb9
commit 39c1569e76
10 files changed
+460 -383

No files matched your search

+9
View File
@@ -28,3 +28,12 @@
[submodule "src/mapgen/earth/arnis-cpp"]
path = src/mapgen/earth/arnis-cpp
url = https://github.com/freeminer/arnis-cpp
[submodule "src/mapgen/earth/osmium-tool"]
path = src/mapgen/earth/osmium-tool
url = https://github.com/osmcode/osmium-tool.git
[submodule "src/mapgen/earth/libosmium"]
path = src/mapgen/earth/libosmium
url = https://github.com/osmcode/libosmium.git
[submodule "src/mapgen/earth/json"]
path = src/mapgen/earth/json
url = https://github.com/nlohmann/json.git
+1 -1
View File
@@ -19,7 +19,7 @@ if [ -z "$NO_DEPS" ]; then
SUDO=${SUDO=$(which sudo ||:)}
if [ "$DIST" = "Debian" ] || [ "$DIST" = "Ubuntu" ]; then
${SUDO} apt update
${SUDO} env DEBIAN_FRONTEND=noninteractive apt install -y git subversion build-essential cmake ninja-build ccache libsdl2-dev libbz2-dev libzstd-dev libjpeg-dev libfreetype6-dev libxxf86vm-dev libxi-dev libsqlite3-dev libhiredis-dev libvorbis-dev libopenal-dev libcurl4-openssl-dev libssl-dev libluajit-5.1-dev libgettextpo0 libmsgpack-dev libboost-system-dev clang lld llvm libc++-dev libc++abi-dev libosmium2-dev
${SUDO} env DEBIAN_FRONTEND=noninteractive apt install -y git subversion build-essential cmake ninja-build ccache libsdl2-dev libbz2-dev libzstd-dev libjpeg-dev libfreetype6-dev libxxf86vm-dev libxi-dev libsqlite3-dev libhiredis-dev libvorbis-dev libopenal-dev libcurl4-openssl-dev libssl-dev libluajit-5.1-dev libgettextpo0 libmsgpack-dev libboost-system-dev libboost-program-options-dev clang lld llvm libc++-dev libc++abi-dev
for PACKAGE in libpng12-dev libpng-dev libgles1-mesa-dev libgles2-mesa-dev libgl1-mesa-dev ; do
${SUDO} apt install -y $PACKAGE ||:
done
+168 -168
View File
@@ -5,60 +5,60 @@ find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
set(ENV{CCACHE_SLOPPINESS} pch_defines,time_macros)
set(ENV{CCACHE_SLOPPINESS} pch_defines,time_macros)
endif(CCACHE_FOUND)
set(BUILD_CLIENT TRUE CACHE BOOL "Build client")
if(WIN32 OR APPLE)
# win32 broken! http://forum.freeminer.org/threads/building-errors.182/#post-1852
#if( ${CMAKE_SYSTEM_VERSION} VERSION_LESS 6.0 )
# MESSAGE(FATAL_ERROR "Building is not supported for Windows ${CMAKE_SYSTEM_VERSION}")
#endif()
set(BUILD_SERVER FALSE CACHE BOOL "Build server")
# win32 broken! http://forum.freeminer.org/threads/building-errors.182/#post-1852
#if( ${CMAKE_SYSTEM_VERSION} VERSION_LESS 6.0 )
# MESSAGE(FATAL_ERROR "Building is not supported for Windows ${CMAKE_SYSTEM_VERSION}")
#endif()
set(BUILD_SERVER FALSE CACHE BOOL "Build server")
else()
set(BUILD_SERVER TRUE CACHE BOOL "Build server")
set(BUILD_SERVER TRUE CACHE BOOL "Build server")
endif()
if(${CMAKE_VERSION} VERSION_LESS 3.13)
function(add_link_options)
foreach(arg IN LISTS ARGN)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${arg}")
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${arg}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${arg}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${arg}")
endforeach()
endfunction()
function(add_link_options)
foreach(arg IN LISTS ARGN)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${arg}")
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${arg}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${arg}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${arg}")
endforeach()
endfunction()
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
include (CheckCXXSourceCompiles)
include (CMakePushCheckState)
include(CheckCXXSourceCompiles)
include(CMakePushCheckState)
set (TEST_FLAG "-fuse-ld=lld")
set (CMAKE_REQUIRED_FLAGS ${TEST_FLAG})
check_cxx_source_compiles(" int main() { return 0; } " HAVE_LLD)
set (CMAKE_REQUIRED_FLAGS "")
if (HAVE_LLD)
add_link_options(-fuse-ld=lld)
endif ()
set(TEST_FLAG "-fuse-ld=lld")
set(CMAKE_REQUIRED_FLAGS ${TEST_FLAG})
check_cxx_source_compiles(" int main() { return 0; } " HAVE_LLD)
set(CMAKE_REQUIRED_FLAGS "")
if(HAVE_LLD)
add_link_options(-fuse-ld=lld)
endif()
endif()
if(USE_LIBCXX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
find_library (LIBCXX_LIBRARY c++)
find_library (LIBCXXABI_LIBRARY c++abi)
if (LIBCXX_LIBRARY AND LIBCXXABI_LIBRARY)
add_link_options(-stdlib=libc++)
add_compile_options(-stdlib=libc++)
message(STATUS "Using libc++ and lld linker: ${LIBCXX_LIBRARY}, ${LIBCXXABI_LIBRARY}")
endif()
find_library(LIBCXX_LIBRARY c++)
find_library(LIBCXXABI_LIBRARY c++abi)
if(LIBCXX_LIBRARY AND LIBCXXABI_LIBRARY)
add_link_options(-stdlib=libc++)
add_compile_options(-stdlib=libc++)
message(STATUS "Using libc++ and lld linker: ${LIBCXX_LIBRARY}, ${LIBCXXABI_LIBRARY}")
endif()
endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR SANITIZE_ADDRESS OR SANITIZE_THREAD OR SANITIZE_MEMORY OR SANITIZE_UNDEFINED)
set(ENABLE_SYSTEM_JSONCPP 0 CACHE BOOL "")
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR SANITIZE_ADDRESS OR SANITIZE_THREAD OR SANITIZE_MEMORY OR SANITIZE_UNDEFINED)
set(ENABLE_SYSTEM_JSONCPP 0 CACHE BOOL "")
endif()
option (USE_STATIC_LIBRARIES "Set to FALSE to use shared libraries" ON)
if (USE_STATIC_LIBRARIES)
option(USE_STATIC_LIBRARIES "Set to FALSE to use shared libraries" ON)
if(USE_STATIC_LIBRARIES)
set(BUILD_SHARED_LIBS OFF)
endif()
# ===
@@ -81,25 +81,25 @@ set(HAVE_THREAD_LOCAL 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(HAVE_FUTURE 1)
set(HAVE_FUTURE 1)
set(CMAKE_REQUIRED_FLAGS "")
option(ENABLE_THREADS "Use more threads (might be slower on 1-2 core machines)" 1)
if(ENABLE_THREADS)
set(ENABLE_THREADS 1)
set(ENABLE_THREADS 1)
else()
set(ENABLE_THREADS 0)
set(ENABLE_THREADS 0)
endif()
option(MINETEST_PROTO "Use minetest protocol (Slow and buggy)" 1)
if(MINETEST_PROTO)
set(MINETEST_TRANSPORT 1 CACHE BOOL "")
message(STATUS "Using minetest compatible protocol (some features missing)")
set(MINETEST_TRANSPORT 1 CACHE BOOL "")
message(STATUS "Using minetest compatible protocol (some features missing)")
endif()
if (MINETEST_TRANSPORT)
message(STATUS "Using minetest compatible transport (slow)")
if(MINETEST_TRANSPORT)
message(STATUS "Using minetest compatible transport (slow)")
endif()
#
@@ -109,154 +109,154 @@ endif()
include(CheckCXXCompilerFlag)
if(STATIC_BUILD)
set(STATIC_BUILD 1)
set(STATIC_BUILD 1)
else()
set(STATIC_BUILD 0)
set(STATIC_BUILD 0)
endif()
if(NOT MSVC)
# set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-inconsistent-missing-override")
# set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-inconsistent-missing-override")
if("${CMAKE_GENERATOR}" STREQUAL "Ninja" )
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_compile_options(-fdiagnostics-color)
elseif ( CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8 )
add_compile_options(-fdiagnostics-color=always)
endif ()
endif ()
if("${CMAKE_GENERATOR}" STREQUAL "Ninja")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_compile_options(-fdiagnostics-color)
elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8)
add_compile_options(-fdiagnostics-color=always)
endif()
endif()
if(SANITIZE_ADDRESS)
message(STATUS "Build with sanitize=address")
add_compile_options(-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=address)
set(ENABLE_SYSTEM_JSONCPP 0)
endif()
if(SANITIZE_THREAD)
message(STATUS "Build with sanitize=thread")
add_compile_options(-fsanitize=thread -fPIE -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=thread -fPIE)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-pie)
endif()
if(SANITIZE_ADDRESS)
message(STATUS "Build with sanitize=address")
add_compile_options(-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=address)
set(ENABLE_SYSTEM_JSONCPP 0)
endif()
if(SANITIZE_MEMORY)
message(STATUS "Build with sanitize=memory")
add_compile_options(-fsanitize=memory -fPIE -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=memory -pie)
endif()
if(SANITIZE_THREAD)
message(STATUS "Build with sanitize=thread")
add_compile_options(-fsanitize=thread -fPIE -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=thread -fPIE)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-pie)
endif()
set(ENABLE_SYSTEM_JSONCPP 0)
endif()
if(SANITIZE_UNDEFINED)
add_compile_options(-fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=undefined)
endif()
if(SANITIZE_MEMORY)
message(STATUS "Build with sanitize=memory")
add_compile_options(-fsanitize=memory -fPIE -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=memory -pie)
set(ENABLE_SYSTEM_JSONCPP 0)
endif()
endif()
if(SANITIZE_UNDEFINED)
add_compile_options(-fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls)
add_link_options(-fsanitize=undefined)
set(ENABLE_SYSTEM_JSONCPP 0)
endif()
if (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR SANITIZE_ADDRESS OR SANITIZE_THREAD OR SANITIZE_MEMORY OR SANITIZE_UNDEFINED))
option(ENABLE_TCMALLOC "Enable tcmalloc" 1)
endif()
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR SANITIZE_ADDRESS OR SANITIZE_THREAD OR SANITIZE_MEMORY OR SANITIZE_UNDEFINED))
option(ENABLE_TCMALLOC "Enable tcmalloc" 1)
endif()
if(ENABLE_GPERF OR ENABLE_TCMALLOC)
#set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(ENABLE_GPERF OR ENABLE_TCMALLOC)
#set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (USE_STATIC_LIBRARIES AND TCMALLOC_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if(USE_STATIC_LIBRARIES AND TCMALLOC_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
find_library(TCMALLOC_LIBRARY NAMES tcmalloc_debug tcmalloc)
else()
find_library(TCMALLOC_LIBRARY NAMES tcmalloc tcmalloc_and_profiler)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
find_library(TCMALLOC_LIBRARY NAMES tcmalloc_debug tcmalloc)
else()
find_library(TCMALLOC_LIBRARY NAMES tcmalloc tcmalloc_and_profiler)
endif()
if(ENABLE_GPERF)
find_library(PROFILER_LIBRARY NAMES profiler tcmalloc_and_profiler)
endif()
if(ENABLE_GPERF)
find_library(PROFILER_LIBRARY NAMES profiler tcmalloc_and_profiler)
endif()
if (USE_STATIC_LIBRARIES AND TCMALLOC_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if(USE_STATIC_LIBRARIES AND TCMALLOC_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if (PROFILER_LIBRARY)
# set(PLATFORM_LIBS ${PLATFORM_LIBS} -Wl,--no-as-needed ${PROFILER_LIBRARY} -Wl,--as-needed)
set(PLATFORM_LIBS ${PLATFORM_LIBS} ${PROFILER_LIBRARY})
endif()
if(PROFILER_LIBRARY)
# set(PLATFORM_LIBS ${PLATFORM_LIBS} -Wl,--no-as-needed ${PROFILER_LIBRARY} -Wl,--as-needed)
set(PLATFORM_LIBS ${PLATFORM_LIBS} ${PROFILER_LIBRARY})
endif()
if (TCMALLOC_LIBRARY)
set(PLATFORM_LIBS ${PLATFORM_LIBS} ${TCMALLOC_LIBRARY})
add_compile_options(-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free)
endif()
if(TCMALLOC_LIBRARY)
set(PLATFORM_LIBS ${PLATFORM_LIBS} ${TCMALLOC_LIBRARY})
add_compile_options(-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free)
endif()
message(STATUS "Build with tcmalloc ${TCMALLOC_LIBRARY} ${PROFILER_LIBRARY}")
endif()
message(STATUS "Build with tcmalloc ${TCMALLOC_LIBRARY} ${PROFILER_LIBRARY}")
endif()
# too noisy
option(ENABLE_UNWIND "Enable unwind" 1)
if(ENABLE_UNWIND)
#if(USE_STATIC_LIBRARIES AND UNWIND_STATIC)
# list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
#endif()
#find_path(
# UNWIND_INCLUDE_DIR
# NAMES unwind.h libunwind.h
# DOC "unwind include directory"
#)
#find_library(UNWIND_LIBRARY NAMES unwind)
#
#if(USE_STATIC_LIBRARIES AND UNWIND_STATIC)
# list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
#endif()
##set(UNWIND_LIBRARY unwind::unwind )
#find_package_handle_standard_args(
# UNWIND
# REQUIRED_VARS UNWIND_INCLUDE_DIR UNWIND_LIBRARY UNWIND_PLATFORM_LIBRARY
# VERSION_VAR UNWIND_VERSION
#)
#if(UNWIND_FOUND)
# set(UNWIND_INCLUDE_DIRS ${UNWIND_INCLUDE_DIR})
# if(NOT TARGET Unwind::unwind)
# add_library(Unwind::unwind UNKNOWN IMPORTED)
# set_target_properties(Unwind::unwind PROPERTIES
# IMPORTED_LOCATION "${_UNWIND_library_generic}"
# INTERFACE_LINK_LIBRARIES "${_UNWIND_library_target}"
# INTERFACE_INCLUDE_DIRECTORIES "${UNWIND_INCLUDE_DIR}"
# )
# endif()
# message(STATUS "Build with unwind ${Backtrace_LIBRARIES} : ${Backtrace_INCLUDE_DIRS} : ${Backtrace_HEADER}")
#endif()
#
#if(UNWIND_FOUND)
# CHECK_CXX_SOURCE_RUNS("
# #include <${Backtrace_HEADER}> // for backtrace
# int main(int argc, char *argv[]) {
# void *callstack[128];
# const int nMaxFrames = sizeof(callstack) / sizeof(callstack[0]);
# char buf[1024];
# int nFrames = backtrace(callstack, nMaxFrames);
# return 0;
# }
# "
# USE_UNWIND)
# if(NOT USE_UNWIND)
# set(USE_UNWIND 0)
# endif()
# # set(USE_UNWIND 1)
# #SET(PLATFORM_LIBS ${PLATFORM_LIBS} ${Backtrace_LIBRARIES})
# #message(STATUS "Build with unwind ${Backtrace_LIBRARIES} : ${Backtrace_INCLUDE_DIRS} : ${Backtrace_HEADER}")
# include_directories(SYSTEM ${Backtrace_INCLUDE_DIRS})
#endif()
find_package(Unwind)
if (Unwind_FOUND)
SET(PLATFORM_LIBS ${PLATFORM_LIBS} Unwind::unwind)
endif()
endif()
option(ENABLE_UNWIND "Enable unwind" 1)
if(ENABLE_UNWIND)
#if(USE_STATIC_LIBRARIES AND UNWIND_STATIC)
# list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
#endif()
#find_path(
# UNWIND_INCLUDE_DIR
# NAMES unwind.h libunwind.h
# DOC "unwind include directory"
#)
#find_library(UNWIND_LIBRARY NAMES unwind)
#
#if(USE_STATIC_LIBRARIES AND UNWIND_STATIC)
# list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
#endif()
##set(UNWIND_LIBRARY unwind::unwind )
#find_package_handle_standard_args(
# UNWIND
# REQUIRED_VARS UNWIND_INCLUDE_DIR UNWIND_LIBRARY UNWIND_PLATFORM_LIBRARY
# VERSION_VAR UNWIND_VERSION
#)
#if(UNWIND_FOUND)
# set(UNWIND_INCLUDE_DIRS ${UNWIND_INCLUDE_DIR})
# if(NOT TARGET Unwind::unwind)
# add_library(Unwind::unwind UNKNOWN IMPORTED)
# set_target_properties(Unwind::unwind PROPERTIES
# IMPORTED_LOCATION "${_UNWIND_library_generic}"
# INTERFACE_LINK_LIBRARIES "${_UNWIND_library_target}"
# INTERFACE_INCLUDE_DIRECTORIES "${UNWIND_INCLUDE_DIR}"
# )
# endif()
# message(STATUS "Build with unwind ${Backtrace_LIBRARIES} : ${Backtrace_INCLUDE_DIRS} : ${Backtrace_HEADER}")
#endif()
#
#if(UNWIND_FOUND)
# CHECK_CXX_SOURCE_RUNS("
# #include <${Backtrace_HEADER}> // for backtrace
# int main(int argc, char *argv[]) {
# void *callstack[128];
# const int nMaxFrames = sizeof(callstack) / sizeof(callstack[0]);
# char buf[1024];
# int nFrames = backtrace(callstack, nMaxFrames);
# return 0;
# }
# "
# USE_UNWIND)
# if(NOT USE_UNWIND)
# set(USE_UNWIND 0)
# endif()
# # set(USE_UNWIND 1)
# #SET(PLATFORM_LIBS ${PLATFORM_LIBS} ${Backtrace_LIBRARIES})
# #message(STATUS "Build with unwind ${Backtrace_LIBRARIES} : ${Backtrace_INCLUDE_DIRS} : ${Backtrace_HEADER}")
# include_directories(SYSTEM ${Backtrace_INCLUDE_DIRS})
#endif()
find_package(Unwind)
if(Unwind_FOUND)
SET(PLATFORM_LIBS ${PLATFORM_LIBS} Unwind::unwind)
endif()
endif()
if(CMAKE_SYSTEM_NAME MATCHES "(BSD|DragonFly)") # Darwin|
SET(PLATFORM_LIBS ${PLATFORM_LIBS} execinfo)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "(BSD|DragonFly)") # Darwin|
SET(PLATFORM_LIBS ${PLATFORM_LIBS} execinfo)
endif()
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${OTHER_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${OTHER_FLAGS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${OTHER_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${OTHER_FLAGS}")
endif()
# === fm === ^^^
+69 -69
View File
@@ -3,88 +3,88 @@ set(USE_LEVELDB FALSE)
if(ENABLE_LEVELDB)
if (LIBCXX_LIBRARY)
set(SYSTEM_LEVELDB 0 CACHE BOOL "")
endif()
if(LIBCXX_LIBRARY)
set(SYSTEM_LEVELDB 0 CACHE BOOL "")
endif()
if (SYSTEM_LEVELDB)
if(USE_STATIC_LIBRARIES AND LEVELDB_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if(SYSTEM_LEVELDB)
if(USE_STATIC_LIBRARIES AND LEVELDB_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
find_library(LEVELDB_LIBRARY NAMES leveldb libleveldb)
find_path(LEVELDB_INCLUDE_DIR db.h PATH_SUFFIXES leveldb)
find_library(SNAPPY_LIBRARY snappy)
find_path(SNAPPY_INCLUDE_DIR snappy.h PATH_SUFFIXES snappy)
find_library(LEVELDB_LIBRARY NAMES leveldb libleveldb)
find_path(LEVELDB_INCLUDE_DIR db.h PATH_SUFFIXES leveldb)
find_library(SNAPPY_LIBRARY snappy)
find_path(SNAPPY_INCLUDE_DIR snappy.h PATH_SUFFIXES snappy)
if(USE_STATIC_LIBRARIES AND LEVELDB_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
if(USE_STATIC_LIBRARIES AND LEVELDB_STATIC)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()
endif()
endif()
message (STATUS "Snappy library: ${SNAPPY_LIBRARY} : ${SNAPPY_INCLUDE_DIR}")
message (STATUS "Leveldb library: ${LEVELDB_LIBRARY} : ${LEVELDB_INCLUDE_DIR}")
message(STATUS "Snappy library: ${SNAPPY_LIBRARY} : ${SNAPPY_INCLUDE_DIR}")
message(STATUS "Leveldb library: ${LEVELDB_LIBRARY} : ${LEVELDB_INCLUDE_DIR}")
if ((NOT SNAPPY_INCLUDE_DIR OR NOT SNAPPY_LIBRARY) AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/snappy/snappy.h)
set(SNAPPY_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/snappy)
# Snappy have no cmake by default,
# git clone --recursive --depth 1 https://github.com/google/snappy src/external/snappy
# But we can collect something from pulls
# wget -O src/external/snappy/CMakeLists.txt https://raw.githubusercontent.com/adasworks/snappy-cmake/master/CMakeLists.txt
set(SNAPPY_BUILD_TESTS 0 CACHE INTERNAL "")
set(SNAPPY_BUILD_BENCHMARKS 0 CACHE INTERNAL "")
set(SNAPPY_INSTALL 0 CACHE INTERNAL "")
set(HAVE_TCMALLOC 0 CACHE INTERNAL "")
if((NOT SNAPPY_INCLUDE_DIR OR NOT SNAPPY_LIBRARY) AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/snappy/snappy.h)
set(SNAPPY_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/snappy)
# Snappy have no cmake by default,
# git clone --recursive --depth 1 https://github.com/google/snappy src/external/snappy
# But we can collect something from pulls
# wget -O src/external/snappy/CMakeLists.txt https://raw.githubusercontent.com/adasworks/snappy-cmake/master/CMakeLists.txt
set(SNAPPY_BUILD_TESTS 0 CACHE INTERNAL "")
set(SNAPPY_BUILD_BENCHMARKS 0 CACHE INTERNAL "")
set(SNAPPY_INSTALL 0 CACHE INTERNAL "")
set(HAVE_TCMALLOC 0 CACHE INTERNAL "")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/snappy)
set(SNAPPY_LIBRARY snappy)
set(HAVE_SNAPPY 1 CACHE INTERNAL "")
message(STATUS "Using bundled snappy ${SNAPPY_LIBRARY} : ${SNAPPY_INCLUDE_DIR}")
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/snappy)
set(SNAPPY_LIBRARY snappy)
set(HAVE_SNAPPY 1 CACHE INTERNAL "")
message(STATUS "Using bundled snappy ${SNAPPY_LIBRARY} : ${SNAPPY_INCLUDE_DIR}")
endif()
if ((NOT LEVELDB_INCLUDE_DIR OR NOT LEVELDB_LIBRARY) AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/leveldb/include/leveldb/db.h)
set(LEVELDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/leveldb/include)
# bad try direct make build
#find_path(LEVELDB_MAKEFILE_DIR Makefile ${PROJECT_SOURCE_DIR}/external/leveldb NO_DEFAULT_PATH)
#if (LEVELDB_MAKEFILE_DIR)
# execute_process(COMMAND "make -f ${LEVELDB_MAKEFILE_DIR}/Makefile" WORKING_DIRECTORY LEVELDB_MAKEFILE_DIR OUTPUT_VARIABLE LMKE ERROR_VARIABLE LMKE)
#message(STATUS "leveldb mk=${LMKE}")
#endif()
#
# good cmake try
# Leveldb have no cmake by default,
# git clone --recursive --depth 1 https://github.com/google/leveldb src/external/leveldb
# But we can collect something from pulls
# wget -O src/external/leveldb/CMakeLists.txt https://raw.githubusercontent.com/proller/leveldb/patch-2/CMakeLists.txt
# wget -O src/external/leveldb/leveldbConfig.cmake.in https://raw.githubusercontent.com/tamaskenez/leveldb-cmake-win/native_windows_port_1_18/leveldbConfig.cmake.in
set(LEVELDB_BUILD_TESTS 0 CACHE INTERNAL "")
set(LEVELDB_BUILD_BENCHMARKS 0 CACHE INTERNAL "")
set(LEVELDB_INSTALL 0 CACHE INTERNAL "")
set(HAVE_CLANG_THREAD_SAFETY 0 CACHE INTERNAL "") # -Werror remove
if(EMSCRIPTEN) # BUG?
include_directories(${ZSTD_INCLUDE_DIR})
endif()
if((NOT LEVELDB_INCLUDE_DIR OR NOT LEVELDB_LIBRARY) AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/leveldb/include/leveldb/db.h)
set(LEVELDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/leveldb/include)
# bad try direct make build
#find_path(LEVELDB_MAKEFILE_DIR Makefile ${PROJECT_SOURCE_DIR}/external/leveldb NO_DEFAULT_PATH)
#if (LEVELDB_MAKEFILE_DIR)
# execute_process(COMMAND "make -f ${LEVELDB_MAKEFILE_DIR}/Makefile" WORKING_DIRECTORY LEVELDB_MAKEFILE_DIR OUTPUT_VARIABLE LMKE ERROR_VARIABLE LMKE)
#message(STATUS "leveldb mk=${LMKE}")
#endif()
#
# good cmake try
# Leveldb have no cmake by default,
# git clone --recursive --depth 1 https://github.com/google/leveldb src/external/leveldb
# But we can collect something from pulls
# wget -O src/external/leveldb/CMakeLists.txt https://raw.githubusercontent.com/proller/leveldb/patch-2/CMakeLists.txt
# wget -O src/external/leveldb/leveldbConfig.cmake.in https://raw.githubusercontent.com/tamaskenez/leveldb-cmake-win/native_windows_port_1_18/leveldbConfig.cmake.in
set(LEVELDB_BUILD_TESTS 0 CACHE INTERNAL "")
set(LEVELDB_BUILD_BENCHMARKS 0 CACHE INTERNAL "")
set(LEVELDB_INSTALL 0 CACHE INTERNAL "")
set(HAVE_CLANG_THREAD_SAFETY 0 CACHE INTERNAL "") # -Werror remove
if(EMSCRIPTEN) # BUG?
include_directories(${ZSTD_INCLUDE_DIR})
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/leveldb)
set(LEVELDB_LIBRARY leveldb)
message(STATUS "Using bundled leveldb ${LEVELDB_INCLUDE_DIR} ${LEVELDB_LIBRARY}")
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/leveldb)
set(LEVELDB_LIBRARY leveldb)
message(STATUS "Using bundled leveldb ${LEVELDB_INCLUDE_DIR} ${LEVELDB_LIBRARY}")
endif()
if(SNAPPY_LIBRARY AND SNAPPY_INCLUDE_DIR)
include_directories(SYSTEM ${SNAPPY_INCLUDE_DIR})
endif()
if(SNAPPY_LIBRARY AND SNAPPY_INCLUDE_DIR)
include_directories(SYSTEM ${SNAPPY_INCLUDE_DIR})
endif()
if(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
set(USE_LEVELDB TRUE)
message(STATUS "LevelDB backend enabled. ${LEVELDB_LIBRARY} : ${LEVELDB_INCLUDE_DIR}")
include_directories(SYSTEM ${LEVELDB_INCLUDE_DIR})
elseif (NOT FORCE_LEVELDB)
message(WARNING "LevelDB not found! Player data cannot be saved in singleplayer or server")
endif()
if(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
set(USE_LEVELDB TRUE)
message(STATUS "LevelDB backend enabled. ${LEVELDB_LIBRARY} : ${LEVELDB_INCLUDE_DIR}")
include_directories(SYSTEM ${LEVELDB_INCLUDE_DIR})
elseif(NOT FORCE_LEVELDB)
message(WARNING "LevelDB not found! Player data cannot be saved in singleplayer or server")
endif()
endif(ENABLE_LEVELDB)
# this is needed because VS builds install LevelDB via nuget
if(FORCE_LEVELDB)
set(USE_LEVELDB 1)
set(USE_LEVELDB 1)
endif()
+185 -137
View File
@@ -4,37 +4,37 @@
find_package(MsgPack REQUIRED)
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
OPTION(ENABLE_SCTP "Enable SCTP networking (EXPERIMENTAL)" 0)
OPTION(USE_MULTI "Enable MT+ENET+WSS networking" 1)
OPTION(ENABLE_SCTP "Enable SCTP networking (EXPERIMENTAL)" 0)
OPTION(USE_MULTI "Enable MT+ENET+WSS networking" 1)
endif()
if(USE_MULTI)
#set(ENABLE_SCTP 1 CACHE BOOL "") # Maybe bugs
set(ENABLE_ENET 1 CACHE BOOL "")
#set(ENABLE_WEBSOCKET_SCTP 1 CACHE BOOL "") # NOT FINISHED
if (NOT ANDROID)
set(ENABLE_WEBSOCKET 1 CACHE BOOL "")
endif()
#set(ENABLE_SCTP 1 CACHE BOOL "") # Maybe bugs
set(ENABLE_ENET 1 CACHE BOOL "")
#set(ENABLE_WEBSOCKET_SCTP 1 CACHE BOOL "") # NOT FINISHED
if(NOT ANDROID)
set(ENABLE_WEBSOCKET 1 CACHE BOOL "")
endif()
endif()
if(ENABLE_WEBSOCKET OR ENABLE_WEBSOCKET_SCTP)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp/CMakeLists.txt)
find_package(Boost)
if(Boost_FOUND)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp)
# add_subdirectory(external/websocketpp)
# set(WEBSOCKETPP_LIBRARY websocketpp::websocketpp)
message(STATUS "Using websocket: ${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp")
find_package(OpenSSL)
set(WEBSOCKETPP_LIBRARY ${WEBSOCKETPP_LIBRARY} OpenSSL::SSL)
set(USE_WEBSOCKET 1 CACHE BOOL "")
#TODO:
# set(USE_WEBSOCKET_SCTP 1 CACHE BOOL "")
endif()
else()
#set(USE_WEBSOCKET 0)
#set(USE_WEBSOCKET_SCTP 0)
find_package(Boost)
if(Boost_FOUND)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp)
# add_subdirectory(external/websocketpp)
# set(WEBSOCKETPP_LIBRARY websocketpp::websocketpp)
message(STATUS "Using websocket: ${CMAKE_CURRENT_SOURCE_DIR}/external/websocketpp")
find_package(OpenSSL)
set(WEBSOCKETPP_LIBRARY ${WEBSOCKETPP_LIBRARY} OpenSSL::SSL)
set(USE_WEBSOCKET 1 CACHE BOOL "")
#TODO:
# set(USE_WEBSOCKET_SCTP 1 CACHE BOOL "")
endif()
else()
#set(USE_WEBSOCKET 0)
#set(USE_WEBSOCKET_SCTP 0)
endif()
endif()
@@ -44,42 +44,42 @@ if(ENABLE_SCTP AND NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp/usrsc
endif()
if(ENABLE_SCTP)
# from external/usrsctp/usrsctplib/CMakeLists.txt :
if(SCTP_DEBUG)
set(sctp_debug 1 CACHE INTERNAL "")
add_definitions(-DSCTP_DEBUG=1)
endif()
set(sctp_build_programs 0 CACHE INTERNAL "")
set(sctp_werror 0 CACHE INTERNAL "")
set(WERROR 0 CACHE INTERNAL "") #old
# from external/usrsctp/usrsctplib/CMakeLists.txt :
if(SCTP_DEBUG)
set(sctp_debug 1 CACHE INTERNAL "")
add_definitions(-DSCTP_DEBUG=1)
endif()
set(sctp_build_programs 0 CACHE INTERNAL "")
set(sctp_werror 0 CACHE INTERNAL "")
set(WERROR 0 CACHE INTERNAL "") #old
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp)
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp/usrsctplib)
set(SCTP_LIBRARY usrsctp)
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp/usrsctplib)
set(SCTP_LIBRARY usrsctp)
set(USE_SCTP 1)
set(USE_SCTP 1)
message(STATUS "Using sctp: ${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp ${SCTP_LIBRARY} SCTP_DEBUG=${SCTP_DEBUG}")
#else()
#set(USE_SCTP 0)
message(STATUS "Using sctp: ${CMAKE_CURRENT_SOURCE_DIR}/external/usrsctp ${SCTP_LIBRARY} SCTP_DEBUG=${SCTP_DEBUG}")
#else()
#set(USE_SCTP 0)
endif()
if(ENABLE_ENET)
if(NOT ENABLE_SYSTEM_ENET AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/enet/include/enet/enet.h)
add_subdirectory(external/enet)
set(ENET_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/enet/include)
set(ENET_LIBRARY enet)
endif()
if(NOT ENET_LIBRARY)
find_library(ENET_LIBRARY NAMES enet)
find_path(ENET_INCLUDE_DIR enet/enet.h)
endif()
if(ENET_LIBRARY AND ENET_INCLUDE_DIR)
include_directories(${ENET_INCLUDE_DIR})
message(STATUS "Using enet: ${ENET_INCLUDE_DIR} ${ENET_LIBRARY}")
set(USE_ENET 1)
endif()
if(NOT ENABLE_SYSTEM_ENET AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/enet/include/enet/enet.h)
add_subdirectory(external/enet)
set(ENET_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/enet/include)
set(ENET_LIBRARY enet)
endif()
if(NOT ENET_LIBRARY)
find_library(ENET_LIBRARY NAMES enet)
find_path(ENET_INCLUDE_DIR enet/enet.h)
endif()
if(ENET_LIBRARY AND ENET_INCLUDE_DIR)
include_directories(${ENET_INCLUDE_DIR})
message(STATUS "Using enet: ${ENET_INCLUDE_DIR} ${ENET_LIBRARY}")
set(USE_ENET 1)
endif()
endif()
#set(TinyTIFF_BUILD_TESTS 0 CACHE INTERNAL "")
@@ -88,63 +88,108 @@ endif()
option(ENABLE_TIFF "Enable tiff (feotiff for mapgen earth)" 1)
if(ENABLE_TIFF AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/libtiff/CMakeLists.txt)
set(tiff-tools 0 CACHE INTERNAL "")
set(tiff-tests 0 CACHE INTERNAL "")
set(tiff-docs 0 CACHE INTERNAL "")
add_subdirectory(external/libtiff)
set(TIFF_LIRARY TIFF::tiff)
set(TIFF_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/libtiff/libtiff ${CMAKE_CURRENT_SOURCE_DIR}/external/libtiff/libtiff)
include_directories(BEFORE SYSTEM ${TIFF_INCLUDE_DIR})
message(STATUS "Using tiff: ${TIFF_INCLUDE_DIR} ${TIFF_LIRARY}")
set(USE_TIFF 1)
set(tiff-tools 0 CACHE INTERNAL "")
set(tiff-tests 0 CACHE INTERNAL "")
set(tiff-docs 0 CACHE INTERNAL "")
add_subdirectory(external/libtiff)
set(TIFF_LIRARY TIFF::tiff)
set(TIFF_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/libtiff/libtiff ${CMAKE_CURRENT_SOURCE_DIR}/external/libtiff/libtiff)
include_directories(BEFORE SYSTEM ${TIFF_INCLUDE_DIR})
message(STATUS "Using tiff: ${TIFF_INCLUDE_DIR} ${TIFF_LIRARY}")
set(USE_TIFF 1)
endif()
option(ENABLE_OSMIUM "Enable Osmium" 1)
if (ENABLE_OSMIUM)
find_path(OSMIUM_INCLUDE_DIR osmium/osm.hpp)
if(ENABLE_OSMIUM)
find_path(OSMIUM_INCLUDE_DIR osmium/osm.hpp)
endif()
if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/libosmium/CMakeLists.txt))
find_package(Boost)
if(Boost_FOUND)
set(BUILD_TESTING 0 CACHE INTERNAL "")
set(BUILD_DATA_TESTS 0 CACHE INTERNAL "")
set(BUILD_EXAMPLES 0 CACHE INTERNAL "")
set(BUILD_BENCHMARKS 0 CACHE INTERNAL "")
if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/mapgen/earth/libosmium/CMakeLists.txt))
set(Boost_USE_STATIC_LIBS ${BUILD_STATIC_LIBS})
find_package(Boost COMPONENTS program_options)
if(Boost_FOUND)
set(BUILD_TESTING 0 CACHE INTERNAL "")
set(BUILD_DATA_TESTS 0 CACHE INTERNAL "")
set(BUILD_EXAMPLES 0 CACHE INTERNAL "")
set(BUILD_BENCHMARKS 0 CACHE INTERNAL "")
if (NOT OSMIUM_INCLUDE_DIR)
add_subdirectory(external/libosmium)
set(OSMIUM_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/libosmium/include)
include_directories(BEFORE SYSTEM ${OSMIUM_INCLUDE_DIR})
endif()
find_package(BZip2)
if(BZIP2_FOUND)
set (OSMIUM_LIRARY ${OSMIUM_LIRARY} BZip2::BZip2)
endif()
find_package(EXPAT)
if(EXPAT_FOUND)
set (OSMIUM_LIRARY ${OSMIUM_LIRARY} EXPAT::EXPAT)
endif()
set(USE_OSMIUM 1)
message(STATUS "Using osmium: ${OSMIUM_INCLUDE_DIR} : ${OSMIUM_LIRARY}")
endif()
if(NOT OSMIUM_INCLUDE_DIR)
add_subdirectory(mapgen/earth/libosmium)
set(OSMIUM_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mapgen/earth/libosmium/include)
include_directories(BEFORE SYSTEM ${OSMIUM_INCLUDE_DIR})
endif()
find_package(BZip2)
if(BZIP2_FOUND)
set(OSMIUM_LIRARY ${OSMIUM_LIRARY} BZip2::BZip2)
endif()
find_package(EXPAT)
if(EXPAT_FOUND)
set(OSMIUM_LIRARY ${OSMIUM_LIRARY} EXPAT::EXPAT)
endif()
set(USE_OSMIUM 1)
message(STATUS "Using osmium: ${OSMIUM_INCLUDE_DIR} : ${OSMIUM_LIRARY}")
option(ENABLE_OSMIUM_TOOL "Enable Osmium tool" 1)
if(ENABLE_OSMIUM_TOOL)
set(USE_OSMIUM_TOOL 1)
endif()
if(USE_OSMIUM_TOOL)
add_subdirectory(mapgen/earth/json)
set(NLOHMANN_INCLUDE_DIR mapgen/earth/json/include)
include_directories(BEFORE SYSTEM ${NLOHMANN_INCLUDE_DIR})
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_LIBRARY osmium-tool-lib)
set(OSMIUM_TOOL_SRC mapgen/earth/osmium-tool/src/)
add_library(${OSMIUM_TOOL_LIBRARY}
${OSMIUM_TOOL_SRC}command_extract.cpp
${PROJECT_BINARY_DIR}/${OSMIUM_TOOL_SRC}/version.cpp
${OSMIUM_TOOL_SRC}cmd.cpp
${OSMIUM_TOOL_SRC}cmd_factory.cpp
${OSMIUM_TOOL_SRC}id_file.cpp
${OSMIUM_TOOL_SRC}io.cpp
${OSMIUM_TOOL_SRC}util.cpp
${OSMIUM_TOOL_SRC}command_help.cpp
${OSMIUM_TOOL_SRC}option_clean.cpp
${OSMIUM_TOOL_SRC}export/export_format_json.cpp
${OSMIUM_TOOL_SRC}export/export_format_pg.cpp
${OSMIUM_TOOL_SRC}export/export_format_text.cpp
${OSMIUM_TOOL_SRC}export/export_handler.cpp
${OSMIUM_TOOL_SRC}extract/extract_bbox.cpp
${OSMIUM_TOOL_SRC}extract/extract.cpp
${OSMIUM_TOOL_SRC}extract/extract_polygon.cpp
${OSMIUM_TOOL_SRC}extract/geojson_file_parser.cpp
${OSMIUM_TOOL_SRC}extract/geometry_util.cpp
${OSMIUM_TOOL_SRC}extract/osm_file_parser.cpp
${OSMIUM_TOOL_SRC}extract/poly_file_parser.cpp
${OSMIUM_TOOL_SRC}extract/strategy_complete_ways.cpp
${OSMIUM_TOOL_SRC}extract/strategy_complete_ways_with_history.cpp
${OSMIUM_TOOL_SRC}extract/strategy_simple.cpp
${OSMIUM_TOOL_SRC}extract/strategy_smart.cpp
)
endif()
endif()
endif()
option(ENABLE_ICONV "Enable utf8 convert via iconv " FALSE)
if(ENABLE_ICONV)
find_package(Iconv)
if(ICONV_INCLUDE_DIR)
set(USE_ICONV 1)
message(STATUS "iconv.h found: ${ICONV_INCLUDE_DIR}")
else()
message(STATUS "iconv.h NOT found")
endif()
find_package(Iconv)
if(ICONV_INCLUDE_DIR)
set(USE_ICONV 1)
message(STATUS "iconv.h found: ${ICONV_INCLUDE_DIR}")
else()
message(STATUS "iconv.h NOT found")
endif()
endif()
if(NOT USE_ICONV)
set(USE_ICONV 0)
set(USE_ICONV 0)
endif()
#option(ENABLE_MANDELBULBER "Use Mandelbulber source to generate more fractals in math mapgen" OFF)
@@ -153,72 +198,75 @@ set(USE_MANDELBULBER 1)
option(ENABLE_IPV4_DEFAULT "Do not use ipv6 dual socket " FALSE)
if(ENABLE_IPV4_DEFAULT)
set(USE_IPV4_DEFAULT 1)
set(USE_IPV4_DEFAULT 1)
else()
set(USE_IPV4_DEFAULT 0)
set(USE_IPV4_DEFAULT 0)
endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug" AND ${CMAKE_VERSION} VERSION_GREATER "3.11.0")
if(CMAKE_BUILD_TYPE STREQUAL "Debug" AND ${CMAKE_VERSION} VERSION_GREATER "3.11.0")
set(USE_DEBUG_DUMP ON CACHE BOOL "")
endif()
if (USE_DEBUG_DUMP)
if(USE_DEBUG_DUMP)
#get_target_property(MAGIC_ENUM_INCLUDE_DIR ch_contrib::magic_enum INTERFACE_INCLUDE_DIRECTORIES)
# CMake generator expression will do insane quoting when it encounters special character like quotes, spaces, etc.
# Prefixing "SHELL:" will force it to use the original text.
#set (INCLUDE_DEBUG_HELPERS "SHELL:-I\"${MAGIC_ENUM_INCLUDE_DIR}\" -include \"${ClickHouse_SOURCE_DIR}/base/base/dump.h\"")
set (INCLUDE_DEBUG_HELPERS "SHELL:-I\"${CMAKE_CURRENT_SOURCE_DIR}/debug/\" -include \"${CMAKE_CURRENT_SOURCE_DIR}/debug/dump.h\"")
set(INCLUDE_DEBUG_HELPERS "SHELL:-I\"${CMAKE_CURRENT_SOURCE_DIR}/debug/\" -include \"${CMAKE_CURRENT_SOURCE_DIR}/debug/dump.h\"")
#set (INCLUDE_DEBUG_HELPERS "SHELL:-include \"${CMAKE_CURRENT_SOURCE_DIR}/util/dump.h\"")
# Use generator expression as we don't want to pollute CMAKE_CXX_FLAGS, which will interfere with CMake check system.
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:${INCLUDE_DEBUG_HELPERS}>)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDUMP_STREAM=actionstream)
else()
add_definitions(-DDUMP_STREAM=verbosestream)
endif()
endif ()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDUMP_STREAM=actionstream)
else()
#add_definitions(-DDUMP_STREAM=verbosestream)
add_definitions(-DDUMP_STREAM=actionstream)
endif()
endif()
set(FMcommon_SRCS ${FMcommon_SRCS}
circuit_element_virtual.cpp
circuit_element.cpp
circuit.cpp
fm_abm_world.cpp
fm_bitset.cpp
fm_liquid.cpp
fm_map.cpp
fm_server.cpp
fm_world_merge.cpp
fm_far_calc.cpp
key_value_storage.cpp
log_types.cpp
stat.cpp
content_abm_grow_tree.cpp
content_abm.cpp
fm_abm.cpp
fm_clientiface.cpp
fm_serverenvironment.cpp
)
circuit_element_virtual.cpp
circuit_element.cpp
circuit.cpp
fm_abm_world.cpp
fm_bitset.cpp
fm_liquid.cpp
fm_map.cpp
fm_server.cpp
fm_world_merge.cpp
fm_far_calc.cpp
key_value_storage.cpp
log_types.cpp
stat.cpp
content_abm_grow_tree.cpp
content_abm.cpp
fm_abm.cpp
fm_clientiface.cpp
fm_serverenvironment.cpp
)
set(FREEMINER_COMMON_LIBRARIES
${MSGPACK_LIBRARY}
${ENET_LIBRARY}
${SCTP_LIBRARY}
${WEBSOCKETPP_LIBRARY}
${TIFF_LIRARY}
${OSMIUM_TOOL_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_LIBRARIES}
${OSMIUM_LIRARY}
)
set(FREEMINER_CLIENT_LIBRARIES
${MSGPACK_LIBRARY}
${ENET_LIBRARY}
${SCTP_LIBRARY}
${WEBSOCKETPP_LIBRARY}
${TIFF_LIRARY}
${OSMIUM_LIRARY}
${FREEMINER_COMMON_LIBRARIES}
)
find_package(PNG REQUIRED)
set(FREEMINER_SERVER_LIBRARIES
${MSGPACK_LIBRARY}
${ENET_LIBRARY}
${SCTP_LIBRARY}
${WEBSOCKETPP_LIBRARY}
${TIFF_LIRARY}
${OSMIUM_LIRARY}
${PNG_LIBRARY}
${FREEMINER_COMMON_LIBRARIES}
${PNG_LIBRARY}
)
# == end freeminer:
+1
View File
@@ -21,6 +21,7 @@
#cmakedefine01 USE_MANDELBULBER
#cmakedefine01 USE_MULTI
#cmakedefine01 USE_OSMIUM
#cmakedefine01 USE_OSMIUM_TOOL
#cmakedefine01 USE_SCTP
#cmakedefine01 USE_SQLITE3
#cmakedefine01 USE_TIFF
+24 -8
View File
@@ -28,6 +28,7 @@ along with Freeminer. If not, see <http://www.gnu.org/licenses/>.
#include <string>
#include <system_error>
#include <tuple>
#include <filesystem>
#include "constants.h"
#include "debug/dump.h"
@@ -56,7 +57,6 @@ along with Freeminer. If not, see <http://www.gnu.org/licenses/>.
#include "voxelalgorithms.h"
#if USE_OSMIUM
#include "earth/osmium-inl.h"
#include <filesystem>
#include <osmium/area/assembler.hpp>
#include <osmium/area/multipolygon_manager.hpp>
#include <osmium/dynamic_handler.hpp>
@@ -69,6 +69,9 @@ along with Freeminer. If not, see <http://www.gnu.org/licenses/>.
#include <osmium/osm/node.hpp>
#include <osmium/osm/way.hpp>
#include <osmium/tags/tags_filter.hpp>
#if USE_OSMIUM_TOOL
#include "mapgen/earth/osmium-tool/src/command_extract.hpp"
#endif
#endif
std::unique_ptr<maps_holder_t> MapgenEarth::maps_holder;
@@ -443,13 +446,26 @@ void MapgenEarth::generateBuildings()
return true;
}
std::stringstream cmd;
// TODO: use osmium tool as lib
// --option types=multipolygon,route
cmd << "osmium extract --output-format pbf --strategy smart --option types=any "
<< "--bbox " << bbox << " --output " << filename << ".tmp" << " "
<< path_name;
exec_to_string(cmd.str());
#if USE_OSMIUM_TOOL
{
verbosestream << "Extracting " << bbox << "\n";
CommandExtract extract{{}};
const std::vector<std::string> arguments{"--output-format", "pbf",
"--strategy", "smart", "--option", "types=any", "--bbox",
bbox, "--output", filename + ".tmp", path_name};
extract.setup(arguments);
extract.run();
}
#else
{
std::stringstream cmd;
cmd << "osmium extract --output-format pbf --strategy smart --option types=any "
<< "--bbox " << bbox << " --output " << filename << ".tmp" << " "
<< path_name;
exec_to_string(cmd.str());
}
#endif
if (!std::filesystem::exists(filename + ".tmp")) {
return false;
}