initial commit
This commit is contained in:
16
cmake/arch.cmake
Normal file
16
cmake/arch.cmake
Normal file
@@ -0,0 +1,16 @@
|
||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||
message(FATAL_ERROR "32-bit compilation is not supported")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)")
|
||||
set(IS_ARM_SYSTEM 1)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_ARM64 AND NOT IS_ARM_SYSTEM AND NOT PROJECT_REQUIRE_ALPINE)
|
||||
message(FATAL_ERROR "aarch64 cross-compile is not supported")
|
||||
endif()
|
||||
|
||||
string(REPLACE "_" "-" PROJECT_MARCH ${PROJECT_BUILD_ARCH})
|
||||
if("${PROJECT_BUILD_ARCH}" STREQUAL "aarch64")
|
||||
set(PROJECT_MARCH armv8-a)
|
||||
endif()
|
||||
123
cmake/flags.cmake
Normal file
123
cmake/flags.cmake
Normal file
@@ -0,0 +1,123 @@
|
||||
list(APPEND PROJECT_COMMON_FLAG_LIST
|
||||
-D_FILE_OFFSET_BITS=64
|
||||
-D_GNU_SOURCE
|
||||
-D_LARGEFILE64_SOURCE
|
||||
-D_LARGEFILE_SOURCE
|
||||
-D_TIME_BITS=64
|
||||
-march=${PROJECT_MARCH}
|
||||
-mtune=generic
|
||||
)
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
list(APPEND PROJECT_COMMON_FLAG_LIST
|
||||
${PROJECT_COMMON_FLAG_LIST}
|
||||
-Wa,-mbig-obj
|
||||
-flarge-source-files
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND PROJECT_DEBUG_FLAG_LIST
|
||||
-DDEBUG
|
||||
-D_DEBUG
|
||||
-Og
|
||||
-fno-omit-frame-pointer
|
||||
-g
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_RELEASE_FLAG_LIST
|
||||
-DNDEBUG
|
||||
-D_NDEBUG
|
||||
-O3
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_CXXFLAGS_LIST
|
||||
-Wall
|
||||
-Wcast-align
|
||||
-Wconversion
|
||||
-Wdouble-promotion
|
||||
-Wextra
|
||||
-Wformat=2
|
||||
-Wmisleading-indentation
|
||||
-Wnon-virtual-dtor
|
||||
-Wnull-dereference
|
||||
-Wold-style-cast
|
||||
-Woverloaded-virtual
|
||||
-Wpedantic
|
||||
-Wshadow
|
||||
-Wsign-conversion
|
||||
-Wunused
|
||||
)
|
||||
|
||||
if (NOT PROJECT_IS_DARWIN)
|
||||
list(APPEND PROJECT_CXXFLAGS_LIST
|
||||
-Wduplicated-branches
|
||||
-Wduplicated-cond
|
||||
-Wlogical-op
|
||||
-Wno-useless-cast
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND PROJECT_CFLAGS_LIST
|
||||
${PROJECT_COMMON_FLAG_LIST}
|
||||
-std=c${CMAKE_C_STANDARD}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_CXXFLAGS_LIST
|
||||
${PROJECT_COMMON_FLAG_LIST}
|
||||
-std=gnu++${CMAKE_CXX_STANDARD}
|
||||
)
|
||||
|
||||
if(NOT PROJECT_IS_DARWIN AND PROJECT_STATIC_LINK)
|
||||
list(APPEND PROJECT_CMAKE_EXE_LINKER_FLAGS
|
||||
-static-libgcc
|
||||
-static-libstdc++
|
||||
-static
|
||||
)
|
||||
endif()
|
||||
|
||||
list(JOIN PROJECT_COMMON_FLAG_LIST " " PROJECT_COMMON_FLAG_LIST)
|
||||
list(JOIN PROJECT_DEBUG_FLAG_LIST " " PROJECT_DEBUG_FLAG_LIST)
|
||||
list(JOIN PROJECT_RELEASE_FLAG_LIST " " PROJECT_RELEASE_FLAG_LIST)
|
||||
|
||||
list(JOIN PROJECT_CFLAGS_LIST " " PROJECT_CFLAGS_LIST)
|
||||
list(JOIN PROJECT_CXXFLAGS_LIST " " PROJECT_CXXFLAGS_LIST)
|
||||
|
||||
list(JOIN PROJECT_CMAKE_EXE_LINKER_FLAGS " " PROJECT_CMAKE_EXE_LINKER_FLAGS)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROJECT_CFLAGS_LIST}")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${PROJECT_DEBUG_FLAG_LIST}")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${PROJECT_RELEASE_FLAG_LIST}")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-include cstdint -include utility ${CMAKE_CXX_FLAGS} ${PROJECT_CXXFLAGS_LIST}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PROJECT_DEBUG_FLAG_LIST}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${PROJECT_RELEASE_FLAG_LIST}")
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${PROJECT_CMAKE_EXE_LINKER_FLAGS}")
|
||||
|
||||
set(EXTERNAL_CMAKE_CXX_FLAGS "-include cstdint -include utility ${PROJECT_COMMON_FLAG_LIST}")
|
||||
if (NOT PROJECT_IS_DARWIN)
|
||||
set(EXTERNAL_CMAKE_CXX_FLAGS "-fext-numeric-literals ${EXTERNAL_CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
|
||||
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
-DCMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE}
|
||||
-DCMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE}
|
||||
-DCMAKE_CXX_FLAGS=${EXTERNAL_CMAKE_CXX_FLAGS}
|
||||
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
|
||||
-DCMAKE_C_FLAGS=${PROJECT_COMMON_FLAG_LIST}
|
||||
-DCMAKE_C_STANDARD=${CMAKE_C_STANDARD}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_INSTALL_PREFIX=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
|
||||
)
|
||||
|
||||
if(CMAKE_TOOLCHAIN_FILE)
|
||||
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||
)
|
||||
endif()
|
||||
|
||||
string(REPLACE ";" "|" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}")
|
||||
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
|
||||
)
|
||||
188
cmake/functions.cmake
Normal file
188
cmake/functions.cmake
Normal file
@@ -0,0 +1,188 @@
|
||||
if (PROJECT_MACOS_ICNS_NAME)
|
||||
set(PROJECT_MACOS_ICNS_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/assets/${PROJECT_MACOS_ICNS_NAME}")
|
||||
endif()
|
||||
|
||||
function(set_common_target_options name)
|
||||
target_compile_definitions(${name} PUBLIC
|
||||
${PROJECT_DEFINITIONS}
|
||||
${${name}_DEFINITIONS}
|
||||
)
|
||||
|
||||
target_include_directories(${name} BEFORE PUBLIC
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/include
|
||||
)
|
||||
|
||||
target_link_directories(${name} BEFORE PUBLIC
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/lib
|
||||
)
|
||||
|
||||
if (PROJECT_STATIC_LINK)
|
||||
target_compile_definitions(${name} PRIVATE U_STATIC_IMPLEMENTATION)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${name} PRIVATE
|
||||
ICU::io
|
||||
ICU::i18n
|
||||
ICU::uc
|
||||
ICU::data
|
||||
)
|
||||
|
||||
target_include_directories(${name} AFTER PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include
|
||||
${name}_INCLUDES
|
||||
)
|
||||
|
||||
if(PROJECT_DEPENDENCIES)
|
||||
add_dependencies(${name} ${PROJECT_DEPENDENCIES})
|
||||
endif()
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
set_property(TARGET ${name} PROPERTY LINK_SEARCH_START_STATIC 1)
|
||||
endif()
|
||||
endfunction(set_common_target_options)
|
||||
|
||||
function(add_project_executable2 name dependencies libraries headers sources is_win32)
|
||||
if (PROJECT_WINDOWS_VERSION_RC)
|
||||
list(APPEND sources ${PROJECT_WINDOWS_VERSION_RC})
|
||||
endif()
|
||||
|
||||
if (PROJECT_IS_DARWIN AND PROJECT_MACOS_ICNS_SOURCE AND "${name}" STREQUAL "${PROJECT_NAME}")
|
||||
set_source_files_properties(${PROJECT_MACOS_ICNS_SOURCE} PROPERTIES
|
||||
MACOSX_PACKAGE_LOCATION "Resources"
|
||||
)
|
||||
|
||||
add_executable(${name}
|
||||
MACOSX_BUNDLE
|
||||
${headers}
|
||||
${sources}
|
||||
${PROJECT_MACOS_ICNS_SOURCE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
|
||||
)
|
||||
|
||||
set_target_properties(${name} PROPERTIES
|
||||
MACOSX_BUNDLE TRUE
|
||||
MACOSX_BUNDLE_ICON_FILE "${PROJECT_MACOS_ICNS_NAME}"
|
||||
RESOURCE "${PROJECT_MACOS_ICNS_SOURCE}"
|
||||
)
|
||||
else()
|
||||
add_executable(${name}
|
||||
${headers}
|
||||
${sources}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
foreach(dependency ${dependencies})
|
||||
set_common_target_options(${dependency})
|
||||
endforeach()
|
||||
|
||||
set_common_target_options(${name})
|
||||
|
||||
if(dependencies)
|
||||
add_dependencies(${name} ${dependencies})
|
||||
endif()
|
||||
|
||||
target_link_libraries(${name} PRIVATE ${libraries})
|
||||
|
||||
if(PROJECT_ENABLE_SDL AND PROJECT_IS_MINGW)
|
||||
target_link_libraries(${name} PRIVATE SDL2::SDL2main)
|
||||
endif ()
|
||||
|
||||
if (is_win32 AND PROJECT_IS_MINGW)
|
||||
target_link_options(${name} PRIVATE -mwindows)
|
||||
endif()
|
||||
endfunction(add_project_executable2)
|
||||
|
||||
function(add_project_executable name dependencies libraries)
|
||||
file(GLOB_RECURSE headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hh
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hxx
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cxx
|
||||
)
|
||||
|
||||
if(PROJECT_ENABLE_WXWIDGETS OR PROJECT_ENABLE_SDL OR PROJECT_ENABLE_SFML OR PROJECT_ENABLE_NANA)
|
||||
set(IS_WIN32 ON)
|
||||
endif()
|
||||
|
||||
add_project_executable2(${name} "${dependencies}" "${libraries}" "${headers}" "${sources}" "${IS_WIN32}")
|
||||
|
||||
if(PROJECT_ENABLE_WXWIDGETS)
|
||||
target_link_libraries(${name} PRIVATE ${wxWidgets_LIBRARIES})
|
||||
endif()
|
||||
endfunction(add_project_executable)
|
||||
|
||||
function(add_project_library name dependencies libraries additional_sources)
|
||||
file(GLOB_RECURSE headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hh
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/*.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/${name}/include/*.hxx
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
${additional_sources}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cxx
|
||||
)
|
||||
|
||||
add_library(${name} STATIC
|
||||
${headers}
|
||||
${sources}
|
||||
)
|
||||
|
||||
set_common_target_options(${name})
|
||||
|
||||
set_target_properties(${name} PROPERTIES PREFIX "")
|
||||
target_link_libraries(${name} PRIVATE ${libraries})
|
||||
endfunction(add_project_library)
|
||||
|
||||
function(add_project_test_executable name dependencies libraries)
|
||||
if(PROJECT_ENABLE_TESTING)
|
||||
find_package(GTest ${GTEST_VERSION} REQUIRED)
|
||||
enable_testing()
|
||||
|
||||
file(GLOB_RECURSE headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/${name}/include/*.hxx
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/*.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hh
|
||||
${PROJECT_SUPPORT_DIR}/test/include/*.hpp
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cxx
|
||||
${PROJECT_SUPPORT_DIR}/test/src/*.cpp
|
||||
${additional_sources}
|
||||
)
|
||||
|
||||
add_project_executable2(${name} "${dependencies}" "${libraries}" "${headers}" "${sources}" OFF)
|
||||
|
||||
target_compile_definitions(${name} PRIVATE -DPROJECT_TESTING)
|
||||
|
||||
target_include_directories(${name} SYSTEM BEFORE
|
||||
${GTEST_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
target_include_directories(${name} AFTER PRIVATE
|
||||
${PROJECT_SUPPORT_DIR}/test/include
|
||||
)
|
||||
|
||||
target_link_libraries(${name} PRIVATE
|
||||
GTest::gtest
|
||||
GTest::gmock
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
43
cmake/hashes.cmake
Normal file
43
cmake/hashes.cmake
Normal file
@@ -0,0 +1,43 @@
|
||||
set(BINUTILS_HASH ce2017e059d63e67ddb9240e9d4ec49c2893605035cd60e92ad53177f4377237)
|
||||
set(BOOST2_HASH 7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca)
|
||||
set(BOOST_HASH 9de758db755e8330a01d995b0a24d09798048400ac25c03fc5ea9be364b13c93)
|
||||
set(CLI11_HASH 17e02b4cddc2fa348e5dbdbb582c59a3486fa2b2433e70a0c3bacb871334fd55)
|
||||
set(CPP_HTTPLIB_HASH a66f908f50ccb119769adce44fe1eac75f81b6ffab7c4ac0211bb663ffeb2688)
|
||||
set(CURL_HASH d4d9a5001b491f5726efe9b50bc4aad03029506e73c9261272e809c64b05e814)
|
||||
set(CXXOPTS_HASH 3bfc70542c521d4b55a46429d808178916a579b28d048bd8c727ee76c39e2072)
|
||||
set(EXPAT_HASH 85372797ff0673a8fc4a6be16466bb5a0ca28c0dcf3c6f7ac1686b4a3ba2aabb)
|
||||
set(FLAC_HASH aea54ed186ad07a34750399cb27fc216a2b62d0ffcd6dc2e3064a3518c3146f8)
|
||||
set(FMT_HASH aa3e8fbb6a0066c03454434add1f1fc23299e85758ceec0d7d2d974431481e40)
|
||||
set(FONTCONFIG_HASH 6a33dc555cc9ba8b10caf7695878ef134eeb36d0af366041f639b1da9b6ed220)
|
||||
set(FREETYPE2_HASH 174d9e53402e1bf9ec7277e22ec199ba3e55a6be2c0740cb18c0ee9850fc8c34)
|
||||
set(GCC_HASH 7294d65cc1a0558cb815af0ca8c7763d86f7a31199794ede3f630c0d1b0a5723)
|
||||
set(GTEST_HASH 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c)
|
||||
set(ICU_HASH a2c443404f00098e9e90acf29dc318e049d2dc78d9ae5f46efb261934a730ce2)
|
||||
set(INNOSETUP_HASH fa73bf47a4da250d185d07561c2bfda387e5e20db77e4570004cf6a133cc10b1)
|
||||
set(JSON_HASH 4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187)
|
||||
set(LIBDSM_HASH 747c4563d6291303d9b085c9e7dc96ac44f91871dcac3e20480fdcc066eee88a)
|
||||
set(LIBEVENT_HASH 7180a979aaa7000e1264da484f712d403fcf7679b1e9212c4e3d09f5c93efc24)
|
||||
set(LIBICONV_HASH 3b08f5f4f9b4eb82f151a7040bfd6fe6c6fb922efe4b1659c66ea933276965e8)
|
||||
set(LIBJPEG_TURBO_HASH 560f6338b547544c4f9721b18d8b87685d433ec78b3c644c70d77adad22c55e6)
|
||||
set(LIBPNG_HASH 71158e53cfdf2877bc99bcab33641d78df3f48e6e0daad030afe9cb8c031aa46)
|
||||
set(LIBSODIUM_HASH 8e5aeca07a723a27bbecc3beef14b0068d37e7fc0e97f51b3f1c82d2a58005c1)
|
||||
set(LIBTASN_HASH 1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a)
|
||||
set(MINGW_HASH 5afe822af5c4edbf67daaf45eec61d538f49eef6b19524de64897c6b95828caf)
|
||||
set(NANA_HASH 56f7b1ed006c750fccf8ef15ab1e83f96751f2dfdcb68d93e5f712a6c9b58bcb)
|
||||
set(NUSPELL_HASH 5d4baa1daf833a18dc06ae0af0571d9574cc849d47daff6b9ce11dac0a5ded6a)
|
||||
set(OGG_HASH 83e6704730683d004d20e21b8f7f55dcb3383cdf84c0daedf30bde175f774638)
|
||||
set(OPENAL_HASH 7e1fecdeb45e7f78722b776c5cf30bd33934b961d7fd2a11e0494e064cc631ce)
|
||||
set(OPENSSL_HASH b6a5f44b7eb69e3fa35dbf15524405b44837a481d43d81daddde3ff21fcbb8e9)
|
||||
set(PKG_CONFIG_HASH 6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591)
|
||||
set(PUGIXML_HASH 655ade57fa703fb421c2eb9a0113b5064bddb145d415dd1f88c79353d90d511a)
|
||||
set(ROCKSDB_HASH 7ec942baab802b2845188d02bc5d4e42c29236e61bcbc08f5b3a6bdd92290c22)
|
||||
set(SDL_HASH f50e59da0d383b2c84d43db625c6e23aae58f8f90eabd2944e2138ccc253744b)
|
||||
set(SECP256K1_HASH 61583939f1f25b92e6401e5b819e399da02562de663873df3056993b40148701)
|
||||
set(SFML_HASH 15ff4d608a018f287c6a885db0a2da86ea389e516d2323629e4d4407a7ce047f)
|
||||
set(SPDLOG_HASH 15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67)
|
||||
set(SQLITE_HASH 1d3049dd0f830a025a53105fc79fd2ab9431aea99e137809d064d8ee8356b032)
|
||||
set(STDUUID_HASH b1176597e789531c38481acbbed2a6894ad419aab0979c10410d59eb0ebf40d3)
|
||||
set(VORBIS_HASH 270c76933d0934e42c5ee0a54a36280e2d87af1de3cc3e584806357e237afd13)
|
||||
set(WINFSP_HASH 073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a)
|
||||
set(WXWIDGETS_HASH f936c8d694f9c49a367a376f99c751467150a4ed7cbf8f4723ef19b2d2d9998d)
|
||||
set(ZLIB_HASH 17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c)
|
||||
100
cmake/libraries.cmake
Normal file
100
cmake/libraries.cmake
Normal file
@@ -0,0 +1,100 @@
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
set(Boost_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
set(CURL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
set(OPENSSL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
set(SFML_STATIC_LIBRARIES ${PROJECT_STATIC_LINK})
|
||||
if (PROJECT_IS_DARWIN)
|
||||
set(ZLIB_USE_STATIC_LIBS OFF)
|
||||
else()
|
||||
set(ZLIB_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
endif()
|
||||
set(wxWidgets_USE_STATIC ${PROJECT_STATIC_LINK})
|
||||
set(ICU_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
|
||||
include(cmake/libraries/icu.cmake)
|
||||
include(cmake/libraries/openssl.cmake)
|
||||
include(cmake/libraries/boost.cmake)
|
||||
include(cmake/libraries/backward_cpp.cmake)
|
||||
include(cmake/libraries/cli11.cmake)
|
||||
include(cmake/libraries/cpp_httplib.cmake)
|
||||
include(cmake/libraries/curl.cmake)
|
||||
include(cmake/libraries/cxxopts.cmake)
|
||||
include(cmake/libraries/dtl.cmake)
|
||||
include(cmake/libraries/flac.cmake)
|
||||
include(cmake/libraries/fmt.cmake)
|
||||
include(cmake/libraries/fontconfig.cmake)
|
||||
include(cmake/libraries/freetype2.cmake)
|
||||
include(cmake/libraries/fuse.cmake)
|
||||
include(cmake/libraries/fzf.cmake)
|
||||
include(cmake/libraries/gtkmm.cmake)
|
||||
include(cmake/libraries/json.cmake)
|
||||
include(cmake/libraries/libbitcoin_system.cmake)
|
||||
include(cmake/libraries/libdsm.cmake)
|
||||
include(cmake/libraries/libevent.cmake)
|
||||
include(cmake/libraries/libiconv.cmake)
|
||||
include(cmake/libraries/libjpeg_turbo.cmake)
|
||||
include(cmake/libraries/libpng.cmake)
|
||||
include(cmake/libraries/libsodium.cmake)
|
||||
include(cmake/libraries/libtasn.cmake)
|
||||
include(cmake/libraries/nana.cmake)
|
||||
include(cmake/libraries/nuspell.cmake)
|
||||
include(cmake/libraries/ogg.cmake)
|
||||
include(cmake/libraries/openal.cmake)
|
||||
include(cmake/libraries/pugixml.cmake)
|
||||
include(cmake/libraries/rocksdb.cmake)
|
||||
include(cmake/libraries/sago_platform_folders.cmake)
|
||||
include(cmake/libraries/sdl.cmake)
|
||||
include(cmake/libraries/secp256k1.cmake)
|
||||
include(cmake/libraries/sfml.cmake)
|
||||
include(cmake/libraries/spdlog.cmake)
|
||||
include(cmake/libraries/sqlite.cmake)
|
||||
include(cmake/libraries/stduuid.cmake)
|
||||
include(cmake/libraries/testing.cmake)
|
||||
include(cmake/libraries/tpl.cmake)
|
||||
include(cmake/libraries/vlc.cmake)
|
||||
include(cmake/libraries/vorbis.cmake)
|
||||
include(cmake/libraries/winfsp.cmake)
|
||||
include(cmake/libraries/wxwidgets.cmake)
|
||||
|
||||
if(PROJECT_BUILD)
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${ZLIB_INCLUDE_DIRS})
|
||||
link_libraries(${ZLIB_LIBRARIES})
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
link_libraries(
|
||||
advapi32
|
||||
bcrypt
|
||||
comdlg32
|
||||
crypt32
|
||||
dbghelp
|
||||
gdi32
|
||||
httpapi
|
||||
iphlpapi
|
||||
kernel32
|
||||
mswsock
|
||||
ncrypt
|
||||
ole32
|
||||
oleaut32
|
||||
rpcrt4
|
||||
secur32
|
||||
shell32
|
||||
shlwapi
|
||||
user32
|
||||
userenv
|
||||
uuid
|
||||
version
|
||||
winhttp
|
||||
wininet
|
||||
winspool
|
||||
ws2_32
|
||||
)
|
||||
elseif(NOT PROJECT_IS_DARWIN)
|
||||
link_libraries(
|
||||
uring
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
11
cmake/libraries/backward_cpp.cmake
Normal file
11
cmake/libraries/backward_cpp.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
if(PROJECT_ENABLE_BACKWARD_CPP AND PROJECT_BUILD)
|
||||
if(PROJECT_IS_MINGW)
|
||||
add_definitions(-DPROJECT_ENABLE_BACKWARD_CPP)
|
||||
|
||||
link_libraries(msvcr90)
|
||||
else()
|
||||
add_definitions(-DBACKWARD_HAS_BFD)
|
||||
|
||||
link_libraries(bfd)
|
||||
endif()
|
||||
endif()
|
||||
152
cmake/libraries/boost.cmake
Normal file
152
cmake/libraries/boost.cmake
Normal file
@@ -0,0 +1,152 @@
|
||||
if(PROJECT_ENABLE_BOOST)
|
||||
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
set(BOOST_MAJOR_VERSION ${BOOST2_MAJOR_VERSION})
|
||||
set(BOOST_MINOR_VERSION ${BOOST2_MINOR_VERSION})
|
||||
set(BOOST_PATCH_VERSION ${BOOST2_PATCH_VERSION})
|
||||
endif()
|
||||
|
||||
set(BOOST_ROOT ${PROJECT_EXTERNAL_BUILD_ROOT})
|
||||
set(BOOST_INCLUDE_DIR ${BOOST_ROOT}/include/boost-${BOOST_MINOR_VERSION}_${BOOST_MINOR_VERSION})
|
||||
|
||||
set(PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBOOST_INCLUDE_DIR=${BOOST_INCLUDE_DIR}
|
||||
-DBOOST_ROOT=${BOOST_ROOT}
|
||||
)
|
||||
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_BOOST)
|
||||
|
||||
if (PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION} EXACT
|
||||
REQUIRED
|
||||
COMPONENTS
|
||||
atomic
|
||||
chrono
|
||||
date_time
|
||||
filesystem
|
||||
iostreams
|
||||
locale
|
||||
log
|
||||
log_setup
|
||||
program_options
|
||||
random
|
||||
regex
|
||||
serialization
|
||||
system
|
||||
thread
|
||||
wserialization
|
||||
)
|
||||
else()
|
||||
if(PROJECT_IS_DARWIN)
|
||||
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||
set(CMAKE_USE_PTHREADS_INIT 1)
|
||||
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
endif()
|
||||
|
||||
find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION}
|
||||
REQUIRED
|
||||
COMPONENTS
|
||||
atomic
|
||||
chrono
|
||||
date_time
|
||||
filesystem
|
||||
iostreams
|
||||
locale
|
||||
log
|
||||
log_setup
|
||||
program_options
|
||||
random
|
||||
regex
|
||||
serialization
|
||||
thread
|
||||
wserialization
|
||||
)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM
|
||||
${Boost_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
link_libraries(
|
||||
${Boost_LIBRARIES}
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
if (PROJECT_ENABLE_LIBBITCOIN_SYSTEM OR NOT CMAKE_HOST_WIN32)
|
||||
if(PROJECT_CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(BOOST_BUILD_TYPE_LOWER debug)
|
||||
else()
|
||||
set(BOOST_BUILD_TYPE_LOWER release)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_ARM64)
|
||||
set(BOOST_ARCH arm)
|
||||
else()
|
||||
set(BOOST_ARCH x86)
|
||||
endif()
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
set(BOOST_LINK static)
|
||||
else()
|
||||
set(BOOST_LINK "static,shared")
|
||||
endif()
|
||||
|
||||
set(BOOST_BUILD_ARGS
|
||||
--openssldir=$ENV{OPENSSL_ROOT_DIR}
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
address-model=64
|
||||
architecture=${BOOST_ARCH}
|
||||
cxxstd=20
|
||||
cxxstd-dialect=gnu
|
||||
cxxflags=-std=gnu++${CMAKE_CXX_STANDARD}
|
||||
cxxstd=${CMAKE_CXX_STANDARD}
|
||||
define=BOOST_ASIO_HAS_STD_STRING_VIEW
|
||||
define=BOOST_SYSTEM_NO_DEPRECATED
|
||||
link=${BOOST_LINK}
|
||||
linkflags=-std=gnu++${CMAKE_CXX_STANDARD}
|
||||
threading=multi
|
||||
variant=${BOOST_BUILD_TYPE_LOWER}
|
||||
)
|
||||
|
||||
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
set(BOOST_URL_HASH SHA256=${BOOST2_HASH})
|
||||
else()
|
||||
set(BOOST_URL_HASH SHA256=${BOOST_HASH})
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(boost_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz
|
||||
URL_HASH ${BOOST_URL_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./bootstrap.sh
|
||||
--with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread
|
||||
BUILD_COMMAND
|
||||
./b2
|
||||
-sNO_BZIP2=1
|
||||
-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
${BOOST_BUILD_ARGS}
|
||||
INSTALL_COMMAND
|
||||
./b2
|
||||
-sNO_BZIP2=1
|
||||
-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
${BOOST_BUILD_ARGS}
|
||||
install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES boost_project)
|
||||
|
||||
if(PROJECT_IS_DARWIN OR PROJECT_REQUIRE_ALPINE)
|
||||
add_dependencies(boost_project icu_project)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_HOST_WIN32)
|
||||
add_dependencies(boost_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
26
cmake/libraries/cli11.cmake
Normal file
26
cmake/libraries/cli11.cmake
Normal file
@@ -0,0 +1,26 @@
|
||||
if(PROJECT_ENABLE_CLI11)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_CLI11)
|
||||
|
||||
find_package(CLI11 ${CLI11_VERSION} REQUIRED)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(cli11_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/CLI11-${CLI11_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CLI11_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCLI11_WARNINGS_AS_ERRORS=OFF
|
||||
-DCLI11_SINGLE_FILE=ON
|
||||
-DCLI11_BUILD_DOCS=OFF
|
||||
-DCLI11_BUILD_TESTS=OFF
|
||||
-DCLI11_BUILD_EXAMPLES=OFF
|
||||
-DCLI11_INSTALL=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES cli11_project)
|
||||
endif()
|
||||
endif()
|
||||
36
cmake/libraries/cpp_httplib.cmake
Normal file
36
cmake/libraries/cpp_httplib.cmake
Normal file
@@ -0,0 +1,36 @@
|
||||
if(PROJECT_ENABLE_CPP_HTTPLIB)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(
|
||||
-DCPPHTTPLIB_OPENSSL_SUPPORT
|
||||
-DCPPHTTPLIB_TCP_NODELAY=true
|
||||
-DCPPHTTPLIB_ZLIB_SUPPORT
|
||||
-DPROJECT_ENABLE_CPP_HTTPLIB
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(cpphttplib_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/cpp-httplib-${CPP_HTTPLIB_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CPP_HTTPLIB_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DHTTPLIB_REQUIRE_BROTLI=OFF
|
||||
-DHTTPLIB_REQUIRE_OPENSSL=ON
|
||||
-DHTTPLIB_REQUIRE_ZLIB=ON
|
||||
-DHTTPLIB_TEST=OFF
|
||||
-DHTTPLIB_USE_BROTLI_IF_AVAILABLE=OFF
|
||||
-DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=ON
|
||||
-DHTTPLIB_USE_ZLIB_IF_AVAILABLE=ON
|
||||
-DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES cpphttplib_project)
|
||||
|
||||
add_dependencies(cpphttplib_project curl_project)
|
||||
if (NOT CMAKE_HOST_WIN32)
|
||||
add_dependencies(cpphttplib_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
56
cmake/libraries/curl.cmake
Normal file
56
cmake/libraries/curl.cmake
Normal file
@@ -0,0 +1,56 @@
|
||||
if(PROJECT_ENABLE_CURL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_CURL)
|
||||
|
||||
find_package(CURL ${CURL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${CURL_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(CURL::libcurl)
|
||||
|
||||
if (EXISTS ${PROJECT_DIST_DIR}/cacert.pem)
|
||||
file(REMOVE ${PROJECT_DIST_DIR}/cacert.pem)
|
||||
endif()
|
||||
file(DOWNLOAD https://curl.haxx.se/ca/cacert.pem ${PROJECT_DIST_DIR}/cacert.pem)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(curl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/curl-${CURL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CURL_HASH}
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_CURL_EXE=OFF
|
||||
-DBUILD_LIBCURL_DOCS=OFF
|
||||
-DBUILD_MISC_DOCS=OFF
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_CURL=ON
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCURL_BROTLI=OFF
|
||||
-DCURL_CA_BUNDLE=./cacert.pem
|
||||
-DCURL_CA_FALLBACK=ON
|
||||
-DCURL_DISABLE_LDAP=ON
|
||||
-DCURL_USE_LIBPSL=OFF
|
||||
-DCURL_USE_LIBSSH2=OFF
|
||||
-DCURL_USE_OPENSSL=${PROJECT_ENABLE_OPENSSL}
|
||||
-DCURL_ZLIB=ON
|
||||
-DCURL_ZSTD=OFF
|
||||
-DENABLE_CURL_MANUAL=OFF
|
||||
-DENABLE_THREADED_RESOLVER=ON
|
||||
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
|
||||
-DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS}
|
||||
-DUSE_LIBIDN2=OFF
|
||||
-DUSE_NGHTTP2=OFF
|
||||
-DZLIB_USE_STATIC_LIBS=${ZLIB_USE_STATIC_LIBS}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES curl_project)
|
||||
|
||||
if (NOT CMAKE_HOST_WIN32)
|
||||
add_dependencies(curl_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
23
cmake/libraries/cxxopts.cmake
Normal file
23
cmake/libraries/cxxopts.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
if(PROJECT_ENABLE_CXXOPTS)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_CXXOPTS)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(cxxopts_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/cxxopts-v${CXXOPTS_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CXXOPTS_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCXXOPTS_BUILD_EXAMPLES=OFF
|
||||
-DCXXOPTS_BUILD_TESTS=OFF
|
||||
-DCXXOPTS_ENABLE_INSTALL=ON
|
||||
-DCXXOPTS_ENABLE_WARNINGS=OFF
|
||||
-DCXXOPTS_USE_UNICODE_HELP=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES cxxopts_project)
|
||||
endif()
|
||||
endif()
|
||||
18
cmake/libraries/dtl.cmake
Normal file
18
cmake/libraries/dtl.cmake
Normal file
@@ -0,0 +1,18 @@
|
||||
if(PROJECT_ENABLE_DTL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_DTL)
|
||||
else()
|
||||
ExternalProject_Add(dtl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/dtl-v${DTL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=d6dcc7834b4117b5c14456ea73b907d0e2bafa5058e3a06b2c504d53517438c5
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES dtl_project)
|
||||
endif()
|
||||
endif()
|
||||
31
cmake/libraries/flac.cmake
Normal file
31
cmake/libraries/flac.cmake
Normal file
@@ -0,0 +1,31 @@
|
||||
if(PROJECT_ENABLE_FLAC)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FLAC)
|
||||
|
||||
find_package(FLAC ${FLAC_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FLAC_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(FLAC::FLAC)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(flac_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/flac-${FLAC_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${FLAC_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_EXAMPLES=OFF
|
||||
-DBUILD_PROGRAMS=OFF
|
||||
-DBUILD_TESTING=OFF
|
||||
-DBUILD_DOCS=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DINSTALL_MANPAGES=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES flac_project)
|
||||
|
||||
add_dependencies(flac_project libiconv_project vorbis_project)
|
||||
endif()
|
||||
endif()
|
||||
26
cmake/libraries/fmt.cmake
Normal file
26
cmake/libraries/fmt.cmake
Normal file
@@ -0,0 +1,26 @@
|
||||
if(PROJECT_ENABLE_FMT)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FMT)
|
||||
|
||||
find_package(fmt ${FMT_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FMT_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(fmt::fmt)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(fmt_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/fmt-${FMT_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${FMT_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DFMT_DOC=OFF
|
||||
-DFMT_TEST=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES fmt_project)
|
||||
endif()
|
||||
endif()
|
||||
38
cmake/libraries/fontconfig.cmake
Normal file
38
cmake/libraries/fontconfig.cmake
Normal file
@@ -0,0 +1,38 @@
|
||||
if(PROJECT_ENABLE_FONTCONFIG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FONTCONFIG)
|
||||
|
||||
find_package(Fontconfig ${FONTCONFIG_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FONTCONFIG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Fontconfig::Fontconfig)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(fontconfig_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/fontconfig-${FONTCONFIG_VERSION}.tar.xz
|
||||
URL_HASH SHA256=${FONTCONFIG_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND meson
|
||||
setup
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
_build
|
||||
BUILD_COMMAND meson
|
||||
compile
|
||||
-C _build
|
||||
INSTALL_COMMAND meson
|
||||
install
|
||||
-C _build
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES fontconfig_project)
|
||||
|
||||
add_dependencies(fontconfig_project
|
||||
freetype2_project
|
||||
libjpeg_turbo_project
|
||||
libpng_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
32
cmake/libraries/freetype2.cmake
Normal file
32
cmake/libraries/freetype2.cmake
Normal file
@@ -0,0 +1,32 @@
|
||||
if(PROJECT_ENABLE_FREETYPE2)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FREETYPE2)
|
||||
|
||||
find_package(Freetype ${FREETYPE2_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FREETYPE_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Freetype::Freetype)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(freetype2_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/freetype-${FREETYPE2_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${FREETYPE2_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND meson
|
||||
setup
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
_build
|
||||
BUILD_COMMAND meson
|
||||
compile
|
||||
-C _build
|
||||
INSTALL_COMMAND meson
|
||||
install
|
||||
-C _build
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES freetype2_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
45
cmake/libraries/fuse.cmake
Normal file
45
cmake/libraries/fuse.cmake
Normal file
@@ -0,0 +1,45 @@
|
||||
if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FUSE)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${PROJECT_FUSE_INCLUDE_DIRS})
|
||||
|
||||
if(PROJECT_FUSE STREQUAL "fuse3")
|
||||
add_definitions(-DFUSE_USE_VERSION=30)
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(libfuse3.a)
|
||||
else()
|
||||
link_libraries(fuse3)
|
||||
endif()
|
||||
elseif(PROJECT_FUSE STREQUAL "fuse2")
|
||||
add_definitions(-DFUSE_USE_VERSION=29)
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(libfuse.a)
|
||||
else()
|
||||
link_libraries(fuse)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if (PROJECT_IS_DARWIN)
|
||||
find_library(OSXFUSE NO_CACHE NAMES OSXFUSE)
|
||||
if (NOT OSXFUSE)
|
||||
message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)")
|
||||
endif ()
|
||||
set(PROJECT_FUSE fuse2)
|
||||
else()
|
||||
pkg_check_modules(LIBFUSE3 fuse3>=3.0.0)
|
||||
if(LIBFUSE3_FOUND)
|
||||
set(PROJECT_FUSE fuse3)
|
||||
set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE3_INCLUDE_DIRS})
|
||||
else()
|
||||
pkg_check_modules(LIBFUSE2 fuse>=2.9.0)
|
||||
if(LIBFUSE2_FOUND)
|
||||
set(PROJECT_FUSE fuse2)
|
||||
set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE2_INCLUDE_DIRS})
|
||||
else()
|
||||
message(FATAL_ERROR "fuse library not found")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
3
cmake/libraries/fzf.cmake
Normal file
3
cmake/libraries/fzf.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
if(PROJECT_ENABLE_FZF AND PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FZF)
|
||||
endif()
|
||||
23
cmake/libraries/gtkmm.cmake
Normal file
23
cmake/libraries/gtkmm.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
if(PROJECT_ENABLE_GTKMM)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_GTKMM)
|
||||
|
||||
find_package(PNG REQUIRED)
|
||||
|
||||
pkg_check_modules(GTKMM REQUIRED gtkmm-${GTKMM_VERSION})
|
||||
|
||||
add_definitions(${GTKMM_DEFINITIONS})
|
||||
|
||||
include_directories(
|
||||
${GTKMM_INCLUDE_DIRS}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
link_directories(${GTKMM_LIBRARY_DIRS})
|
||||
|
||||
link_libraries(
|
||||
${GTKMM_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
24
cmake/libraries/icu.cmake
Normal file
24
cmake/libraries/icu.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
if((PROJECT_IS_DARWIN OR PROJECT_REQUIRE_ALPINE) AND NOT PROJECT_IS_MINGW AND NOT PROJECT_BUILD)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(ICU_ENABLE_SHARED yes)
|
||||
else()
|
||||
set(ICU_ENABLE_SHARED no)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(icu_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/mingw64/icu-release-${ICU_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${ICU_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND chmod +x ${PROJECT_3RD_PARTY_DIR}/icu_configure.sh
|
||||
CONFIGURE_COMMAND cd icu4c/source && ${PROJECT_3RD_PARTY_DIR}/icu_configure.sh
|
||||
${PROJECT_MARCH}
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${ICU_ENABLE_SHARED}
|
||||
BUILD_COMMAND cd icu4c/source && make -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
INSTALL_COMMAND cd icu4c/source && make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES icu_project)
|
||||
endif()
|
||||
29
cmake/libraries/json.cmake
Normal file
29
cmake/libraries/json.cmake
Normal file
@@ -0,0 +1,29 @@
|
||||
if(PROJECT_ENABLE_JSON)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_JSON)
|
||||
|
||||
find_package(nlohmann_json ${JSON_VERSION} REQUIRED)
|
||||
|
||||
if(PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX)
|
||||
include_directories(BEFORE SYSTEM /mingw64/include/nlohmann)
|
||||
else()
|
||||
include_directories(BEFORE SYSTEM ${PROJECT_EXTERNAL_BUILD_ROOT}/include/nlohmann)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(json_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/json-${JSON_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${JSON_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DJSON_BuildTests=OFF
|
||||
-DJSON_Install=ON
|
||||
-DJSON_MultipleHeaders=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES json_project)
|
||||
endif()
|
||||
endif()
|
||||
51
cmake/libraries/libbitcoin_system.cmake
Normal file
51
cmake/libraries/libbitcoin_system.cmake
Normal file
@@ -0,0 +1,51 @@
|
||||
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(
|
||||
-DPROJECT_ENABLE_LIBBITCOIN_SYSTEM
|
||||
-DBC_STATIC
|
||||
-DECMULT_GEN_PREC_BITS=4
|
||||
-DECMULT_WINDOW_SIZE=15
|
||||
-DWITH_ICU
|
||||
)
|
||||
|
||||
set(LIBBITCOIN_SYSTEM_ROOT ${PROJECT_BUILD_DIR}/external/src/libbitcoin_system_project)
|
||||
|
||||
include_directories(SYSTEM BEFORE ${LIBBITCOIN_SYSTEM_ROOT}/include)
|
||||
|
||||
set(PROJECT_ADDITIONAL_SOURCES
|
||||
${PROJECT_ADDITIONAL_SOURCES}
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/config/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/error.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/formats/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/math/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/math/external/*.c
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/message/network_address.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/unicode/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/utility/istream_reader.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/utility/ostream_writer.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/utility/string.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/dictionary.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/electrum.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/electrum_dictionary.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/mnemonic.cpp
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(libbitcoin_system_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libbitcoin-system-${LIBBITCOIN_SYSTEM_VERSION}.tar.gz
|
||||
URL_HASH SHA256=0d10d79472e914620223f1ddb9396b0fa92ae5eb0b31acc14b9aa634a01d78b6
|
||||
CONFIGURE_COMMAND echo "No configure"
|
||||
BUILD_COMMAND echo "No build"
|
||||
INSTALL_COMMAND echo "No install"
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libbitcoin_system_project)
|
||||
|
||||
if(NOT PROJECT_IS_MINGW_UNIX)
|
||||
add_dependencies(libbitcoin_system_project
|
||||
boost_project
|
||||
secp256k1_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
87
cmake/libraries/libdsm.cmake
Normal file
87
cmake/libraries/libdsm.cmake
Normal file
@@ -0,0 +1,87 @@
|
||||
if(PROJECT_ENABLE_LIBDSM)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBDSM)
|
||||
|
||||
find_library(libdsm_LIBRARIES NAMES libdsm.a)
|
||||
|
||||
link_libraries(${libdsm_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
set(_meson_c_args "-I${PROJECT_EXTERNAL_BUILD_ROOT}/deps/include")
|
||||
set(_meson_c_link_args "-L${PROJECT_EXTERNAL_BUILD_ROOT}/deps/lib -L${PROJECT_EXTERNAL_BUILD_ROOT}/deps/lib64")
|
||||
set(_meson_host_arg "")
|
||||
set(_meson_host_file "${PROJECT_EXTERNAL_BUILD_ROOT}/libdsm_host_machine.ini")
|
||||
|
||||
if(PROJECT_IS_DARWIN)
|
||||
set(_mac_arch_raw "${CMAKE_OSX_ARCHITECTURES}")
|
||||
string(TOLOWER "${_mac_arch_raw}" _mac_arch)
|
||||
|
||||
if(_mac_arch MATCHES ";")
|
||||
set(_meson_c_args "${_meson_c_args}|-arch|arm64|-arch|x86_64")
|
||||
set(_meson_c_link_args "${_meson_c_link_args}|-arch|arm64|-arch|x86_64")
|
||||
else()
|
||||
if(_mac_arch STREQUAL "arm64")
|
||||
set(_meson_cpu_family "aarch64")
|
||||
set(_meson_cpu "arm64")
|
||||
set(_meson_c_args "${_meson_c_args}|-arch|arm64")
|
||||
set(_meson_c_link_args "${_meson_c_link_args}|-arch|arm64")
|
||||
elseif(_mac_arch STREQUAL "x86_64")
|
||||
set(_meson_cpu_family "x86_64")
|
||||
set(_meson_cpu "x86_64")
|
||||
set(_meson_c_args "${_meson_c_args}|-arch|x86_64")
|
||||
set(_meson_c_link_args "${_meson_c_link_args}|-arch|x86_64")
|
||||
endif()
|
||||
|
||||
if(DEFINED _meson_cpu_family AND DEFINED _meson_cpu)
|
||||
file(WRITE "${_meson_host_file}"
|
||||
"[binaries]
|
||||
c = 'clang'
|
||||
cpp = 'clang++'
|
||||
|
||||
[host_machine]
|
||||
system = 'darwin'
|
||||
cpu_family = '${_meson_cpu_family}'
|
||||
cpu = '${_meson_cpu}'
|
||||
endian = 'little'
|
||||
"
|
||||
)
|
||||
|
||||
set(_meson_host_arg "--native-file=${_meson_host_file}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libdsm_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libdsm-${LIBDSM_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBDSM_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/libdsm_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/libdsm_project
|
||||
CONFIGURE_COMMAND meson
|
||||
setup
|
||||
-Dc_args="${_meson_c_args}"
|
||||
-Dcpp_args="${_meson_c_args}"
|
||||
-Dc_link_args="${_meson_c_link_args}"
|
||||
-Dcpp_link_args="${_meson_c_link_args}"
|
||||
${_meson_host_arg}
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-Dbinaries=false
|
||||
-Ddefault_library=static
|
||||
_build
|
||||
BUILD_COMMAND meson
|
||||
compile -C _build
|
||||
INSTALL_COMMAND meson
|
||||
install -C _build
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libdsm_project)
|
||||
|
||||
add_dependencies(libdsm_project
|
||||
libiconv_project
|
||||
libtasn1_project
|
||||
openssl_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
49
cmake/libraries/libevent.cmake
Normal file
49
cmake/libraries/libevent.cmake
Normal file
@@ -0,0 +1,49 @@
|
||||
if(PROJECT_ENABLE_LIBEVENT)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBEVENT)
|
||||
|
||||
if(PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
|
||||
pkg_check_modules(LIBEVENT REQUIRED libevent>=${LIBEVENT_VERSION})
|
||||
else()
|
||||
set(LIBEVENT_STATIC_LINK ${PROJECT_STATIC_LINK})
|
||||
find_package(Libevent ${LIBEVENT_VERSION} REQUIRED)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM ${LIBEVENT_INCLUDE_DIRS})
|
||||
if (PROJECT_IS_MINGW_UNIX)
|
||||
unset(LIBEVENT_LIBRARIES)
|
||||
set(LIBEVENT_LIBRARIES
|
||||
/mingw64/lib/libevent.dll.a
|
||||
/mingw64/lib/libevent_core.dll.a
|
||||
/mingw64/lib/libevent_extra.dll.a
|
||||
)
|
||||
endif()
|
||||
link_libraries(${LIBEVENT_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(LIBEVENT_LIBRARY_TYPE BOTH)
|
||||
else()
|
||||
set(LIBEVENT_LIBRARY_TYPE STATIC)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libevent_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libevent-${LIBEVENT_VERSION}-stable.tar.gz
|
||||
URL_HASH SHA256=${LIBEVENT_HASH}
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/libevent_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/libevent_project
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DEVENT__DISABLE_OPENSSL=ON
|
||||
-DEVENT__DISABLE_SAMPLES=ON
|
||||
-DEVENT__DISABLE_TESTS=ON
|
||||
-DEVENT__LIBRARY_TYPE=${LIBEVENT_LIBRARY_TYPE}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libevent_project)
|
||||
endif()
|
||||
endif()
|
||||
25
cmake/libraries/libiconv.cmake
Normal file
25
cmake/libraries/libiconv.cmake
Normal file
@@ -0,0 +1,25 @@
|
||||
if(PROJECT_ENABLE_LIBICONV)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBICONV)
|
||||
|
||||
find_library(libiconv_LIBRARIES NAMES libiconv.a)
|
||||
|
||||
link_libraries(${libiconv_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libiconv_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libiconv-${LIBICONV_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBICONV_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./configure
|
||||
--enable-shared=no
|
||||
--enable-static=yes
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libiconv_project)
|
||||
endif()
|
||||
endif()
|
||||
27
cmake/libraries/libjpeg_turbo.cmake
Normal file
27
cmake/libraries/libjpeg_turbo.cmake
Normal file
@@ -0,0 +1,27 @@
|
||||
if(PROJECT_ENABLE_LIBJPEG_TURBO)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBJPEG_TURBO)
|
||||
|
||||
find_package(JPEG ${LIBJPEG_TURBO_VERSION} REQUIRED)
|
||||
|
||||
include_directories(${JPEG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(JPEG::JPEG)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libjpeg_turbo_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libjpeg_turbo-${LIBJPEG_TURBO_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBJPEG_TURBO_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DENABLE_SHARED=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DENABLE_STATIC=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libjpeg_turbo_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
30
cmake/libraries/libpng.cmake
Normal file
30
cmake/libraries/libpng.cmake
Normal file
@@ -0,0 +1,30 @@
|
||||
if(PROJECT_ENABLE_LIBPNG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_PNG)
|
||||
|
||||
find_package(PNG ${LIBPNG_VERSION} REQUIRED )
|
||||
|
||||
include_directories(${PNG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(PNG::PNG)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libpng_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libpng-v${LIBPNG_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBPNG_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DENABLE_SHARED=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DPNG_SHARED=ON
|
||||
-DPNG_STATIC=ON
|
||||
-DPNG_TESTS=OFF
|
||||
-DPNG_TOOLS=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libpng_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
48
cmake/libraries/libsodium.cmake
Normal file
48
cmake/libraries/libsodium.cmake
Normal file
@@ -0,0 +1,48 @@
|
||||
if(PROJECT_ENABLE_LIBSODIUM)
|
||||
if(PROJECT_BUILD)
|
||||
pkg_check_modules(SODIUM libsodium>=${LIBSODIUM_VERSION} REQUIRED)
|
||||
|
||||
add_definitions(-DPROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${SODIUM_INCLUDE_DIRS})
|
||||
|
||||
if(PROJECT_IS_MINGW_UNIX)
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(/mingw64/lib/libsodium.a)
|
||||
else()
|
||||
link_libraries(/mingw64/lib/libsodium.dll.a)
|
||||
endif()
|
||||
else()
|
||||
link_libraries(${SODIUM_LIBRARIES})
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_IS_MINGW)
|
||||
set(LIBSODIUM_TYPE mingw64)
|
||||
else()
|
||||
set(LIBSODIUM_TYPE linux)
|
||||
endif()
|
||||
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(LIBSODIUM_ENABLE_SHARED yes)
|
||||
else()
|
||||
set(LIBSODIUM_ENABLE_SHARED no)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libsodium_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libsodium-${LIBSODIUM_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBSODIUM_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ${PROJECT_3RD_PARTY_DIR}/libsodium_configure.sh
|
||||
${LIBSODIUM_TYPE}
|
||||
${PROJECT_MARCH}
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${LIBSODIUM_ENABLE_SHARED}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libsodium_project)
|
||||
endif()
|
||||
endif()
|
||||
30
cmake/libraries/libtasn.cmake
Normal file
30
cmake/libraries/libtasn.cmake
Normal file
@@ -0,0 +1,30 @@
|
||||
if(PROJECT_ENABLE_LIBTASN)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBTASN)
|
||||
|
||||
find_library(libtasn1_LIBRARIES NAMES libtasn1.a)
|
||||
|
||||
link_libraries(${libtasn1_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libtasn1_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libtasn1-${LIBTASN_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBTASN_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./configure
|
||||
--disable-doc
|
||||
--enable-shared=no
|
||||
--enable-static=yes
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libtasn1_project)
|
||||
|
||||
if (PROJECT_ENABLE_OPENSSL)
|
||||
add_dependencies(libtasn1_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
48
cmake/libraries/nana.cmake
Normal file
48
cmake/libraries/nana.cmake
Normal file
@@ -0,0 +1,48 @@
|
||||
if(PROJECT_ENABLE_NANA)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_NANA)
|
||||
|
||||
find_library(NANA_LIBRARIES NAMES nana REQUIRED)
|
||||
|
||||
if (NOT PROJECT_IS_MINGW)
|
||||
find_package(X11 REQUIRED)
|
||||
endif()
|
||||
|
||||
include_directories(SYSTEM ${X11_INCLUDE_DIR})
|
||||
|
||||
link_libraries(
|
||||
${NANA_LIBRARIES}
|
||||
${X11_LIBRARIES}
|
||||
)
|
||||
|
||||
if (NOT PROJECT_IS_MINGW)
|
||||
link_libraries(
|
||||
X11::Xft
|
||||
X11::Xcursor
|
||||
)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(nana_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/nana-v${NANA_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${NANA_HASH}
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/nana_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/nana_project
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DNANA_CMAKE_ENABLE_AUDIO=OFF
|
||||
-DNANA_CMAKE_ENABLE_JPEG=ON
|
||||
-DNANA_CMAKE_ENABLE_PNG=ON
|
||||
-DNANA_CMAKE_INSTALL=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES nana_project)
|
||||
|
||||
add_dependencies(nana_project libjpeg_turbo_project libpng_project)
|
||||
endif()
|
||||
endif()
|
||||
27
cmake/libraries/nuspell.cmake
Normal file
27
cmake/libraries/nuspell.cmake
Normal file
@@ -0,0 +1,27 @@
|
||||
if(PROJECT_ENABLE_NUSPELL)
|
||||
if(PROJECT_BUILD)
|
||||
find_package(Nuspell ${NUSPELL_VERSION} REQUIRED)
|
||||
|
||||
add_definitions(-DPROJECT_ENABLE_NUSPELL)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${NUSPELL_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Nuspell::nuspell)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(nuspell_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/nuspell-v${NUSPELL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${NUSPELL_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_DOCS=OFF
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-DBUILD_TOOLS=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES nuspell_project)
|
||||
endif()
|
||||
endif()
|
||||
24
cmake/libraries/ogg.cmake
Normal file
24
cmake/libraries/ogg.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
if(PROJECT_ENABLE_OGG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_OGG)
|
||||
|
||||
find_package(Ogg ${OGG_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${OGG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Ogg::ogg)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(ogg_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/ogg-v${OGG_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${OGG_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES ogg_project)
|
||||
endif()
|
||||
endif()
|
||||
24
cmake/libraries/openal.cmake
Normal file
24
cmake/libraries/openal.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
if(PROJECT_ENABLE_OPENAL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_OPENAL)
|
||||
|
||||
find_package(OpenAL ${OPENAL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${OPENAL_INCLUDE_DIR})
|
||||
|
||||
link_libraries(${OPENAL_LIBRARY})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(openal_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/openal-${OPENAL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${OPENAL_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES openal_project)
|
||||
endif()
|
||||
endif()
|
||||
59
cmake/libraries/openssl.cmake
Normal file
59
cmake/libraries/openssl.cmake
Normal file
@@ -0,0 +1,59 @@
|
||||
set(OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT_DIR})
|
||||
|
||||
if(PROJECT_ENABLE_OPENSSL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_OPENSSL)
|
||||
|
||||
find_package(OpenSSL ${OPENSSL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${OPENSSL_INCLUDE_DIR})
|
||||
|
||||
link_libraries(
|
||||
OpenSSL::Crypto
|
||||
OpenSSL::SSL
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_IS_MINGW)
|
||||
set(OPENSSL_COMPILE_TYPE mingw64)
|
||||
elseif(PROJECT_IS_DARWIN)
|
||||
if(PROJECT_IS_ARM64)
|
||||
set(OPENSSL_COMPILE_TYPE darwin64-arm64)
|
||||
else()
|
||||
set(OPENSSL_COMPILE_TYPE darwin64-x86_64)
|
||||
endif()
|
||||
elseif(PROJECT_IS_ARM64)
|
||||
set(OPENSSL_COMPILE_TYPE linux-aarch64)
|
||||
else()
|
||||
set(OPENSSL_COMPILE_TYPE linux-x86_64)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_MINGW_UNIX)
|
||||
set(OPENSSL_CROSS_PREFIX "--cross-compile-prefix=x86_64-w64-mingw32-")
|
||||
endif()
|
||||
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(OPENSSL_NO_SHARED shared)
|
||||
else()
|
||||
set(OPENSSL_NO_SHARED no-shared)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(openssl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/openssl-${OPENSSL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${OPENSSL_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./Configure
|
||||
${OPENSSL_COMPILE_TYPE}
|
||||
${OPENSSL_CROSS_PREFIX}
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
no-apps
|
||||
no-docs
|
||||
${OPENSSL_NO_SHARED}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
28
cmake/libraries/pugixml.cmake
Normal file
28
cmake/libraries/pugixml.cmake
Normal file
@@ -0,0 +1,28 @@
|
||||
if(PROJECT_ENABLE_PUGIXML)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_PUGIXML)
|
||||
|
||||
find_package(pugixml ${PUGIXML_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${PUGIXML_INCLUDE_DIR})
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(pugixml::static)
|
||||
else()
|
||||
link_libraries(pugixml::pugixml)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(pugixml_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/pugixml-${PUGIXML_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${PUGIXML_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES pugixml_project)
|
||||
endif()
|
||||
endif()
|
||||
38
cmake/libraries/rocksdb.cmake
Normal file
38
cmake/libraries/rocksdb.cmake
Normal file
@@ -0,0 +1,38 @@
|
||||
if(PROJECT_ENABLE_ROCKSDB)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_ROCKSDB)
|
||||
find_library(ROCKSDB_LIBRARY NAMES librocksdb.a REQUIRED)
|
||||
link_libraries(${ROCKSDB_LIBRARY})
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(rocksdb_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/rocksdb-${ROCKSDB_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${ROCKSDB_HASH}
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DFAIL_ON_WARNINGS=OFF
|
||||
-DPORTABLE=1
|
||||
-DROCKSDB_BUILD_SHARED=OFF
|
||||
-DROCKSDB_INSTALL_ON_WINDOWS=ON
|
||||
-DWITH_BENCHMARK=OFF
|
||||
-DWITH_BENCHMARK_TOOLS=OFF
|
||||
-DWITH_BZ2=OFF
|
||||
-DWITH_CORE_TOOLS=OFF
|
||||
-DWITH_EXAMPLES=OFF
|
||||
-DWITH_GFLAGS=OFF
|
||||
-DWITH_IOSTATS_CONTEXT=OFF
|
||||
-DWITH_PERF_CONTEXT=OFF
|
||||
-DWITH_TESTS=OFF
|
||||
-DWITH_TOOLS=OFF
|
||||
-DWITH_TRACE_TOOLS=OFF
|
||||
-DWITH_ZLIB=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES rocksdb_project)
|
||||
endif()
|
||||
endif()
|
||||
3
cmake/libraries/sago_platform_folders.cmake
Normal file
3
cmake/libraries/sago_platform_folders.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
if(PROJECT_ENABLE_SAGO_PLATFORM_FOLDERS AND PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SAGO_PLATFORM_FOLDERS)
|
||||
endif()
|
||||
33
cmake/libraries/sdl.cmake
Normal file
33
cmake/libraries/sdl.cmake
Normal file
@@ -0,0 +1,33 @@
|
||||
if(PROJECT_ENABLE_SDL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SDL)
|
||||
|
||||
set(SDL2_NO_MWINDOWS ON)
|
||||
find_package(SDL2 ${SDL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(SDL2::SDL2)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(SDL_CONFIGURE_OPTS --enable-shared=yes --enable-static=yes)
|
||||
else()
|
||||
set(SDL_CONFIGURE_OPTS --enable-shared=no --enable-static=yes)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(sdl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/sdl-${SDL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SDL_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./configure
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${SDL_CONFIGURE_OPTS}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES sdl_project)
|
||||
endif()
|
||||
endif()
|
||||
35
cmake/libraries/secp256k1.cmake
Normal file
35
cmake/libraries/secp256k1.cmake
Normal file
@@ -0,0 +1,35 @@
|
||||
if(PROJECT_ENABLE_SECP256K1)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SECP256K1)
|
||||
|
||||
pkg_check_modules(SECP256K1 libsecp256k1=${SECP256K1_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${SECP256K1_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(${SECP256K1_LINK_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(SECP256K1_ENABLE_SHARED yes)
|
||||
else()
|
||||
set(SECP256K1_ENABLE_SHARED no)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(secp256k1_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/secp256k1-${SECP256K1_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SECP256K1_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./autogen.sh && ./configure
|
||||
--enable-shared=${SECP256K1_ENABLE_SHARED}
|
||||
--enable-static=yes
|
||||
--enable-module-ecdh
|
||||
--enable-module-recovery
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES secp256k1_project)
|
||||
endif()
|
||||
endif()
|
||||
59
cmake/libraries/sfml.cmake
Normal file
59
cmake/libraries/sfml.cmake
Normal file
@@ -0,0 +1,59 @@
|
||||
if(PROJECT_ENABLE_SFML)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SFML)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(X11 REQUIRED)
|
||||
|
||||
find_package(SFML ${SFML_VERSION}
|
||||
COMPONENTS
|
||||
audio
|
||||
graphics
|
||||
network
|
||||
system
|
||||
window
|
||||
REQUIRED
|
||||
)
|
||||
|
||||
if(NOT PROJECT_BUILD_SHARED_LIBS)
|
||||
set(SFML_STATIC_LIB_APPEND "-s")
|
||||
endif()
|
||||
|
||||
link_libraries(
|
||||
${X11_LIBRARIES}
|
||||
sfml-audio${SFML_STATIC_LIB_APPEND}
|
||||
sfml-graphics${SFML_STATIC_LIB_APPEND}
|
||||
sfml-network${SFML_STATIC_LIB_APPEND}
|
||||
sfml-system${SFML_STATIC_LIB_APPEND}
|
||||
sfml-window${SFML_STATIC_LIB_APPEND}
|
||||
)
|
||||
|
||||
include_directories(BEFORE SYSTEM
|
||||
${X11_INCLUDE_DIR}
|
||||
${SFML_INCLUDE_DIR}
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(sfml_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/SFML-${SFML_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SFML_HASH}
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/SFML_patch.sh
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES sfml_project)
|
||||
|
||||
add_dependencies(sfml_project
|
||||
flac_project
|
||||
fontconfig_project
|
||||
freetype2_project
|
||||
openal_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
26
cmake/libraries/spdlog.cmake
Normal file
26
cmake/libraries/spdlog.cmake
Normal file
@@ -0,0 +1,26 @@
|
||||
if(PROJECT_ENABLE_SPDLOG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SPDLOG)
|
||||
|
||||
find_package(spdlog ${SPDLOG_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${SPDLOG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(spdlog::spdlog)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(spdlog_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/spdlog-${SPDLOG_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SPDLOG_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DSPDLOG_BUILD_EXAMPLE=OFF
|
||||
-DSPDLOG_FMT_EXTERNAL=OFF
|
||||
-DSPDLOG_FMT_EXTERNAL_HO=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES spdlog_project)
|
||||
endif()
|
||||
endif()
|
||||
29
cmake/libraries/sqlite.cmake
Normal file
29
cmake/libraries/sqlite.cmake
Normal file
@@ -0,0 +1,29 @@
|
||||
if(PROJECT_ENABLE_SQLITE)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SQLITE)
|
||||
if (PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
|
||||
pkg_check_modules(SQLITE3 REQUIRED sqlite3)
|
||||
include_directories(SYSTEM BEFORE ${SQLITE3_INCLUDE_DIRS})
|
||||
link_libraries(${SQLITE3_LIBRARIES})
|
||||
else()
|
||||
set(SQLITE_SYSTEM_ROOT ${PROJECT_BUILD_DIR}/external/src/sqlite_project)
|
||||
|
||||
include_directories(SYSTEM BEFORE ${SQLITE_SYSTEM_ROOT})
|
||||
|
||||
list(APPEND PROJECT_ADDITIONAL_SOURCES
|
||||
${SQLITE_SYSTEM_ROOT}/sqlite3.c
|
||||
)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW OR PROJECT_IS_MINGW_UNIX)
|
||||
ExternalProject_Add(sqlite_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/sqlite-amalgamation-${SQLITE_VERSION}.zip
|
||||
URL_HASH SHA256=${SQLITE_HASH}
|
||||
CONFIGURE_COMMAND echo "No configure"
|
||||
BUILD_COMMAND echo "No build"
|
||||
INSTALL_COMMAND echo "No install"
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES sqlite_project)
|
||||
endif()
|
||||
endif()
|
||||
27
cmake/libraries/stduuid.cmake
Normal file
27
cmake/libraries/stduuid.cmake
Normal file
@@ -0,0 +1,27 @@
|
||||
if(PROJECT_ENABLE_STDUUID)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_STDUUID)
|
||||
|
||||
find_package(stduuid REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${stduuid_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(${stduuid_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(stduuid_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/stduuid-${STDUUID_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${STDUUID_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DUUID_BUILD_TESTS=OFF
|
||||
-DUUID_ENABLE_INSTALL=ON
|
||||
-DUUID_USING_CXX20_SPAN=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES stduuid_project)
|
||||
endif()
|
||||
endif()
|
||||
18
cmake/libraries/testing.cmake
Normal file
18
cmake/libraries/testing.cmake
Normal file
@@ -0,0 +1,18 @@
|
||||
if (PROJECT_ENABLE_TESTING)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_TESTING)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(gtest_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/googletest-${GTEST_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${GTEST_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES gtest_project)
|
||||
endif()
|
||||
endif()
|
||||
24
cmake/libraries/tpl.cmake
Normal file
24
cmake/libraries/tpl.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
if(PROJECT_ENABLE_TPL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_TPL)
|
||||
|
||||
find_package(tiny-process-library REQUIRED)
|
||||
|
||||
link_libraries(tiny-process-library::tiny-process-library)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(tpl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/tiny-process-library.tar.gz
|
||||
URL_HASH SHA256=82e46657e697aff5bf980387c86ef3aa05bb184622abbd75663a4df549c68f73
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES tpl_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
16
cmake/libraries/vlc.cmake
Normal file
16
cmake/libraries/vlc.cmake
Normal file
@@ -0,0 +1,16 @@
|
||||
if(PROJECT_ENABLE_VLC AND PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_VLC)
|
||||
if (PROJECT_IS_MINGW)
|
||||
set(libvlc_INCLUDE_DIRS ${PROJECT_3RD_PARTY_DIR}/vlc/sdk/include)
|
||||
|
||||
set(libvlc_LIBRARIES
|
||||
${PROJECT_3RD_PARTY_DIR}/vlc/sdk/lib/libvlc.lib
|
||||
${PROJECT_3RD_PARTY_DIR}/vlc/sdk/lib/libvlccore.lib
|
||||
)
|
||||
else()
|
||||
pkg_check_modules(libvlc REQUIRED libvlc>=${VLC_VERSION})
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM ${libvlc_INCLUDE_DIRS})
|
||||
link_libraries(${libvlc_LIBRARIES})
|
||||
endif()
|
||||
34
cmake/libraries/vorbis.cmake
Normal file
34
cmake/libraries/vorbis.cmake
Normal file
@@ -0,0 +1,34 @@
|
||||
if(PROJECT_ENABLE_VORBIS)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_VORBIS)
|
||||
|
||||
if(PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
|
||||
pkg_check_modules(VORBIS REQUIRED vorbis>=${VORBIS_VERSION})
|
||||
link_libraries(${VORBIS_LINK_LIBRARIES})
|
||||
else()
|
||||
find_package(Vorbis ${VORBIS_VERSION} REQUIRED)
|
||||
link_libraries(Vorbis::vorbis)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM ${VORBIS_INCLUDE_DIRS})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(vorbis_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/vorbis-v${VORBIS_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${VORBIS_HASH}
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/vorbis_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/vorbis_project
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES vorbis_project)
|
||||
|
||||
add_dependencies(vorbis_project ogg_project)
|
||||
endif()
|
||||
endif()
|
||||
15
cmake/libraries/winfsp.cmake
Normal file
15
cmake/libraries/winfsp.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
if(PROJECT_ENABLE_WINFSP AND PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_WINFSP)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/inc)
|
||||
|
||||
link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/lib)
|
||||
|
||||
if(PROJECT_IS_ARM64)
|
||||
link_libraries(winfsp-a64)
|
||||
else()
|
||||
link_libraries(winfsp-x64)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
51
cmake/libraries/wxwidgets.cmake
Normal file
51
cmake/libraries/wxwidgets.cmake
Normal file
@@ -0,0 +1,51 @@
|
||||
if(PROJECT_ENABLE_WXWIDGETS)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_WXWIDGETS)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
set(wxWidgets_USE_WINDOWS OFF)
|
||||
find_package(wxWidgets ${WXWIDGETS_VERSION} REQUIRED
|
||||
COMPONENTS
|
||||
net
|
||||
core
|
||||
base
|
||||
gl
|
||||
adv
|
||||
xml
|
||||
aui
|
||||
html
|
||||
media
|
||||
propgrid
|
||||
qa
|
||||
ribbon
|
||||
richtext
|
||||
stc
|
||||
webview
|
||||
xrc
|
||||
)
|
||||
|
||||
if(wxWidgets_USE_FILE)
|
||||
include(${wxWidgets_USE_FILE})
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(wxwidgets_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/wxWidgets-${WXWIDGETS_VERSION}.tar.bz2
|
||||
URL_HASH SHA256=${WXWIDGETS_HASH}
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DwxBUILD_MONOLITHIC=OFF
|
||||
-DwxBUILD_SHARED=${PROJECT_BUILD_SHARED_LIBS}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES wxwidgets_project)
|
||||
|
||||
add_dependencies(wxwidgets_project curl_project)
|
||||
endif()
|
||||
endif()
|
||||
40
cmake/options.cmake
Normal file
40
cmake/options.cmake
Normal file
@@ -0,0 +1,40 @@
|
||||
option(PROJECT_ENABLE_BACKWARD_CPP "Enable backward-cpp" OFF)
|
||||
option(PROJECT_ENABLE_BOOST "Enable boost libraries" OFF)
|
||||
option(PROJECT_ENABLE_CLI11 "Enable CLI11 library" OFF)
|
||||
option(PROJECT_ENABLE_CPP_HTTPLIB "Enable cpp-httplib" OFF)
|
||||
option(PROJECT_ENABLE_CURL "Enable curl library" OFF)
|
||||
option(PROJECT_ENABLE_CXXOPTS "Enable cxxopts library" OFF)
|
||||
option(PROJECT_ENABLE_DTL "Enable DTL" OFF)
|
||||
option(PROJECT_ENABLE_FLAC "Enable FLAC library" OFF)
|
||||
option(PROJECT_ENABLE_FMT "Enable fmt library" OFF)
|
||||
option(PROJECT_ENABLE_FONTCONFIG "Enable fontconfig library" OFF)
|
||||
option(PROJECT_ENABLE_FREETYPE2 "Enable freetype2 library" OFF)
|
||||
option(PROJECT_ENABLE_FUSE "Enable FUSE" OFF)
|
||||
option(PROJECT_ENABLE_FZF "Enable fzf" OFF)
|
||||
option(PROJECT_ENABLE_GTKMM "Enable gtkmm" OFF)
|
||||
option(PROJECT_ENABLE_JSON "Enable JSON for Modern C++ library" OFF)
|
||||
option(PROJECT_ENABLE_LIBBITCOIN_SYSTEM "Enable libbitcoin-system library" OFF)
|
||||
option(PROJECT_ENABLE_LIBDSM "Enable dsm library" OFF)
|
||||
option(PROJECT_ENABLE_LIBEVENT "Enable libevent library" OFF)
|
||||
option(PROJECT_ENABLE_LIBJPEG_TURBO "Enable libjpeg-turbo library" OFF)
|
||||
option(PROJECT_ENABLE_LIBPNG "Enable libpng library" OFF)
|
||||
option(PROJECT_ENABLE_LIBSODIUM "Enable libsodium library" OFF)
|
||||
option(PROJECT_ENABLE_NANA "Enable nana library" OFF)
|
||||
option(PROJECT_ENABLE_NUSPELL "Enable nuspell" OFF)
|
||||
option(PROJECT_ENABLE_OGG "Enable OGG library" OFF)
|
||||
option(PROJECT_ENABLE_OPENAL "Enable OpenAL" OFF)
|
||||
option(PROJECT_ENABLE_OPENSSL "Enable OpenSSL library" OFF)
|
||||
option(PROJECT_ENABLE_PUGIXML "Enable PugiXML library" OFF)
|
||||
option(PROJECT_ENABLE_ROCKSDB "Enable RocksDB library" OFF)
|
||||
option(PROJECT_ENABLE_SAGO_PLATFORM_FOLDERS "Enable Sago platform folders" OFF)
|
||||
option(PROJECT_ENABLE_SECP256K1 "Enable secp256k1 library" OFF)
|
||||
option(PROJECT_ENABLE_SFML "Enable SFML" OFF)
|
||||
option(PROJECT_ENABLE_SPDLOG "Enable spdlog library" OFF)
|
||||
option(PROJECT_ENABLE_SQLITE "Enable SQLite" OFF)
|
||||
option(PROJECT_ENABLE_STDUUID "Enable stduuid library" OFF)
|
||||
option(PROJECT_ENABLE_TESTING "Enable building unit tests" OFF)
|
||||
option(PROJECT_ENABLE_TPL "Enable tiny process library" OFF)
|
||||
option(PROJECT_ENABLE_VLC "Enable VLC" OFF)
|
||||
option(PROJECT_ENABLE_VORBIS "Enable Vorbis library" OFF)
|
||||
option(PROJECT_ENABLE_WINFSP "Enable WinFSP" OFF)
|
||||
option(PROJECT_ENABLE_WXWIDGETS "Enable wxWidgets library" OFF)
|
||||
23
cmake/os.cmake
Normal file
23
cmake/os.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
if(MSVC)
|
||||
message(FATAL_ERROR "MSVC will not be supported")
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
message(FATAL_ERROR "FreeBSD is not currently supported")
|
||||
endif()
|
||||
|
||||
if(PROJECT_REQUIRE_ALPINE AND NOT PROJECT_IS_ALPINE AND PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX)
|
||||
message(FATAL_ERROR "Project requires Alpine Linux to build")
|
||||
endif()
|
||||
|
||||
if (PROJECT_IS_DARWIN)
|
||||
if (PROJECT_IS_ARM64)
|
||||
set(CMAKE_OSX_ARCHITECTURES "arm64")
|
||||
else()
|
||||
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (PROJECT_IS_DARWIN AND NOT PROJECT_MACOS_BUNDLE_ID)
|
||||
message(FATAL_ERROR "'PROJECT_MACOS_BUNDLE_ID' is not set in 'config.sh'")
|
||||
endif()
|
||||
51
cmake/settings.cmake
Normal file
51
cmake/settings.cmake
Normal file
@@ -0,0 +1,51 @@
|
||||
set(CMAKE_COLOR_MAKEFILE OFF)
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
|
||||
else()
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
set(CMAKE_BUILD_TYPE ${PROJECT_CMAKE_BUILD_TYPE})
|
||||
|
||||
file(MAKE_DIRECTORY ${PROJECT_EXTERNAL_BUILD_ROOT}/lib)
|
||||
file(CREATE_LINK ${PROJECT_EXTERNAL_BUILD_ROOT}/lib ${PROJECT_EXTERNAL_BUILD_ROOT}/lib64 SYMBOLIC)
|
||||
|
||||
list(PREPEND CMAKE_PREFIX_PATH
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/share
|
||||
)
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
list(PREPEND CMAKE_PREFIX_PATH
|
||||
/mingw64
|
||||
)
|
||||
|
||||
include_directories(BEFORE
|
||||
/mingw64/include
|
||||
)
|
||||
|
||||
link_directories(BEFORE
|
||||
/mingw64/lib
|
||||
/mingw64/lib64
|
||||
)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM
|
||||
${PROJECT_SUPPORT_DIR}/include
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/include
|
||||
)
|
||||
|
||||
link_directories(BEFORE
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/lib
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/lib64
|
||||
)
|
||||
Reference in New Issue
Block a user