initial commit
This commit is contained in:
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()
|
||||
Reference in New Issue
Block a user