mirror of
https://github.com/bdnugget/freeminer.git
synced 2026-11-07 06:57:27 +00:00
Use osmium-tool as lib
This commit is contained in:
1 parent
68800baeb9
commit
39c1569e76
10 files changed
+460
-383
No files matched your search
@@ -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
|
||||
@@ -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
@@ -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 === ^^^
|
||||
@@ -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
@@ -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:
|
||||
@@ -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
|
||||
|
||||
Submodule
+1
Submodule src/mapgen/earth/json added at a0e9fb1e63.
Submodule
+1
Submodule src/mapgen/earth/libosmium added at 7ab87418a0.
Submodule
+1
Submodule src/mapgen/earth/osmium-tool added at 71570dc889.
@@ -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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user