fix
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good

This commit is contained in:
Scott E. Graves 2023-12-01 11:12:58 -06:00
parent fbe4df0251
commit 5ec91e2d20
19 changed files with 973 additions and 973 deletions

View File

@ -1,273 +1,273 @@
cmake_minimum_required(VERSION 3.22) cmake_minimum_required(VERSION 3.22)
project(repertory) project(repertory)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW) cmake_policy(SET CMP0135 NEW)
endif() endif()
include(CheckIncludeFileCXX) include(CheckIncludeFileCXX)
include(CheckIncludeFiles) include(CheckIncludeFiles)
include(ExternalProject) include(ExternalProject)
set(REPERTORY_MAJOR 2) set(REPERTORY_MAJOR 2)
set(REPERTORY_MINOR 0) set(REPERTORY_MINOR 0)
set(REPERTORY_REV 1) set(REPERTORY_REV 1)
set(REPERTORY_RELEASE_NUM 0) set(REPERTORY_RELEASE_NUM 0)
set(REPERTORY_RELEASE_ITER rc) set(REPERTORY_RELEASE_ITER rc)
set(REPERTORY_VERSION ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}-${REPERTORY_RELEASE_ITER}) set(REPERTORY_VERSION ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}-${REPERTORY_RELEASE_ITER})
include(cmake/arch_detection.cmake) include(cmake/arch_detection.cmake)
include(cmake/os_detection.cmake) include(cmake/os_detection.cmake)
include(cmake/options.cmake) include(cmake/options.cmake)
include(cmake/settings.cmake) include(cmake/settings.cmake)
include(cmake/flags.cmake) include(cmake/flags.cmake)
include(cmake/versions.cmake) include(cmake/versions.cmake)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem") if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem")
file(REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem) file(REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem)
endif() endif()
file(DOWNLOAD https://curl.haxx.se/ca/cacert.pem ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem) file(DOWNLOAD https://curl.haxx.se/ca/cacert.pem ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem)
unset(REPERTORY_GIT_REV CACHE) unset(REPERTORY_GIT_REV CACHE)
execute_process( execute_process(
COMMAND git rev-parse --short HEAD COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_VARIABLE REPERTORY_GIT_REV OUTPUT_VARIABLE REPERTORY_GIT_REV
ERROR_QUIET ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
if (UNIX) if (UNIX)
check_include_files(sys/xattr.h HAS_SETXATTR) check_include_files(sys/xattr.h HAS_SETXATTR)
if (HAS_SETXATTR) if (HAS_SETXATTR)
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DHAS_SETXATTR) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DHAS_SETXATTR)
endif() endif()
endif() endif()
if (LINUX OR MINGW) if (LINUX OR MINGW)
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0) if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
message(FATAL_ERROR "Require at least gcc-8.0") message(FATAL_ERROR "Require at least gcc-8.0")
endif() endif()
set(ENV{PKG_CONFIG_PATH} set(ENV{PKG_CONFIG_PATH}
"${EXTERNAL_BUILD_ROOT}/lib/pkgconfig:${EXTERNAL_BUILD_ROOT}/share/pkgconfig:$ENV{PKG_CONFIG_PATH}" "${EXTERNAL_BUILD_ROOT}/lib/pkgconfig:${EXTERNAL_BUILD_ROOT}/share/pkgconfig:$ENV{PKG_CONFIG_PATH}"
) )
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_LIBS ON)
if (NOT MINGW) if (NOT MINGW)
include_directories(/usr/local/include) include_directories(/usr/local/include)
link_directories( link_directories(
/usr/local/lib /usr/local/lib
/usr/local/lib64 /usr/local/lib64
) )
endif() endif()
if (REPERTORY_MUSL) if (REPERTORY_MUSL)
find_library(LIBFUSE3 NO_CACHE NAMES libfuse3.a) find_library(LIBFUSE3 NO_CACHE NAMES libfuse3.a)
else() else()
if (NOT MINGW) if (NOT MINGW)
find_library(LIBDL_LIBRARY NO_CACHE NAMES dl) find_library(LIBDL_LIBRARY NO_CACHE NAMES dl)
find_library(LIBFUSE3 NO_CACHE NAMES fuse3) find_library(LIBFUSE3 NO_CACHE NAMES fuse3)
endif() endif()
endif() endif()
if (REPERTORY_MUSL OR MINGW) if (REPERTORY_MUSL OR MINGW)
find_library(LIBPTHREAD_LIBRARY NO_CACHE NAMES libpthread.a) find_library(LIBPTHREAD_LIBRARY NO_CACHE NAMES libpthread.a)
else() else()
find_library(LIBPTHREAD_LIBRARY NO_CACHE NAMES pthread) find_library(LIBPTHREAD_LIBRARY NO_CACHE NAMES pthread)
endif() endif()
if (LIBFUSE3 AND NOT MINGW) if (LIBFUSE3 AND NOT MINGW)
pkg_check_modules(LIBFUSE3 REQUIRED fuse3>=3.0.0) pkg_check_modules(LIBFUSE3 REQUIRED fuse3>=3.0.0)
set(LIBFUSE3_LIBRARIES ${LIBFUSE3}) set(LIBFUSE3_LIBRARIES ${LIBFUSE3})
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DFUSE_USE_VERSION=30) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DFUSE_USE_VERSION=30)
endif() endif()
if(NOT LIBFUSE3_LIBRARIES AND NOT MINGW) if(NOT LIBFUSE3_LIBRARIES AND NOT MINGW)
pkg_check_modules(LIBFUSE2 REQUIRED fuse>=2.9.0) pkg_check_modules(LIBFUSE2 REQUIRED fuse>=2.9.0)
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DFUSE_USE_VERSION=29) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DFUSE_USE_VERSION=29)
endif() endif()
if (NOT LIBPTHREAD_LIBRARY) if (NOT LIBPTHREAD_LIBRARY)
message(FATAL_ERROR "'libpthread' not found") message(FATAL_ERROR "'libpthread' not found")
endif() endif()
if (REPERTORY_MUSL) if (REPERTORY_MUSL)
if (LIBFUSE3_LIBRARIES) if (LIBFUSE3_LIBRARIES)
set(LIBFUSE3_LIBRARIES libfuse3.a) set(LIBFUSE3_LIBRARIES libfuse3.a)
else() else()
set(LIBFUSE2_LIBRARIES libfuse.a) set(LIBFUSE2_LIBRARIES libfuse.a)
endif() endif()
set(REPERTORY_LINK_LIBRARIES set(REPERTORY_LINK_LIBRARIES
${REPERTORY_LINK_LIBRARIES} ${REPERTORY_LINK_LIBRARIES}
${LIBPTHREAD_LIBRARY} ${LIBPTHREAD_LIBRARY}
) )
else() else()
if (NOT MINGW AND NOT LIBDL_LIBRARY) if (NOT MINGW AND NOT LIBDL_LIBRARY)
message(FATAL_ERROR "'libdl' not found") message(FATAL_ERROR "'libdl' not found")
endif() endif()
set(REPERTORY_LINK_LIBRARIES set(REPERTORY_LINK_LIBRARIES
${REPERTORY_LINK_LIBRARIES} ${REPERTORY_LINK_LIBRARIES}
${LIBPTHREAD_LIBRARY} ${LIBPTHREAD_LIBRARY}
${LIBDL_LIBRARY} ${LIBDL_LIBRARY}
) )
endif() endif()
elseif (FREEBSD) elseif (FREEBSD)
message(FATAL_ERROR "FreeBSD is currently not supported") message(FATAL_ERROR "FreeBSD is currently not supported")
elseif (MACOS) elseif (MACOS)
set(CMAKE_OSX_ARCHITECTURES x86_64) set(CMAKE_OSX_ARCHITECTURES x86_64)
find_library(LIBDL_LIBRARY NO_CACHE NAMES dl) find_library(LIBDL_LIBRARY NO_CACHE NAMES dl)
if (NOT LIBDL_LIBRARY) if (NOT LIBDL_LIBRARY)
message(FATAL_ERROR "'libdl' not found") message(FATAL_ERROR "'libdl' not found")
endif() endif()
find_library(LIBPTHREAD_LIBRARY NO_CACHE NAMES pthread) find_library(LIBPTHREAD_LIBRARY NO_CACHE NAMES pthread)
if (NOT LIBPTHREAD_LIBRARY) if (NOT LIBPTHREAD_LIBRARY)
message(FATAL_ERROR "'libpthread' not found") message(FATAL_ERROR "'libpthread' not found")
endif() endif()
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DFUSE_USE_VERSION=29 -DBOOST_ASIO_HAS_STD_STRING_VIEW) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DFUSE_USE_VERSION=29 -DBOOST_ASIO_HAS_STD_STRING_VIEW)
include_directories(/usr/local/include) include_directories(/usr/local/include)
find_library(OSXFUSE NO_CACHE NAMES OSXFUSE) find_library(OSXFUSE NO_CACHE NAMES OSXFUSE)
if (NOT OSXFUSE) if (NOT OSXFUSE)
message(FATAL_ERROR "FUSE for macOS not found (https://osxfuse.github.io/)") message(FATAL_ERROR "FUSE for macOS not found (https://osxfuse.github.io/)")
endif () endif ()
set(LIBFUSE2_LIBRARIES fuse) set(LIBFUSE2_LIBRARIES fuse)
set(REPERTORY_LINK_LIBRARIES set(REPERTORY_LINK_LIBRARIES
${REPERTORY_LINK_LIBRARIES} ${REPERTORY_LINK_LIBRARIES}
${LIBDL_LIBRARY} ${LIBDL_LIBRARY}
${LIBPTHREAD_LIBRARY} ${LIBPTHREAD_LIBRARY}
"-L/usr/local/lib" "-L/usr/local/lib"
"-framework Foundation" "-framework Foundation"
"-framework AppKit" "-framework AppKit"
"-framework Security" "-framework Security"
"-framework SystemConfiguration" "-framework SystemConfiguration"
) )
elseif (MSVC) elseif (MSVC)
message(FATAL_ERROR "MSVC is currently not supported [MinGW-64 should be used]") message(FATAL_ERROR "MSVC is currently not supported [MinGW-64 should be used]")
endif() endif()
if (MINGW) if (MINGW)
set(WINFSP_LIBRARY_BASENAME winfsp-x64) set(WINFSP_LIBRARY_BASENAME winfsp-x64)
include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/inc) include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/inc)
link_directories(${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/lib) link_directories(${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/lib)
set(REPERTORY_LINK_LIBRARIES set(REPERTORY_LINK_LIBRARIES
${REPERTORY_LINK_LIBRARIES} ${REPERTORY_LINK_LIBRARIES}
${WINFSP_LIBRARY_BASENAME}.lib ${WINFSP_LIBRARY_BASENAME}.lib
mswsock mswsock
) )
set(REPERTORY_VER_FILEVERSION ${REPERTORY_MAJOR},${REPERTORY_MINOR},${REPERTORY_REV},${REPERTORY_RELEASE_NUM}) set(REPERTORY_VER_FILEVERSION ${REPERTORY_MAJOR},${REPERTORY_MINOR},${REPERTORY_REV},${REPERTORY_RELEASE_NUM})
set(REPERTORY_VER_FILEVERSION_STR ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}.${REPERTORY_RELEASE_NUM}) set(REPERTORY_VER_FILEVERSION_STR ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}.${REPERTORY_RELEASE_NUM})
set(REPERTORY_VER_PRODUCTVERSION ${REPERTORY_MAJOR},${REPERTORY_MINOR},${REPERTORY_REV},${REPERTORY_RELEASE_NUM}) set(REPERTORY_VER_PRODUCTVERSION ${REPERTORY_MAJOR},${REPERTORY_MINOR},${REPERTORY_REV},${REPERTORY_RELEASE_NUM})
set(REPERTORY_VER_PRODUCTVERSION_STR ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}.${REPERTORY_RELEASE_NUM}) set(REPERTORY_VER_PRODUCTVERSION_STR ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}.${REPERTORY_RELEASE_NUM})
set(REPERTORY_VER_PRERELEASE VS_FF_PRERELEASE) set(REPERTORY_VER_PRERELEASE VS_FF_PRERELEASE)
set(REPERTORY_VER_COMPANYNAME_STR "https://git.fifthgrid.com/blockstorage") set(REPERTORY_VER_COMPANYNAME_STR "https://git.fifthgrid.com/blockstorage")
set(REPERTORY_VER_LEGALCOPYRIGHT_STR "Copyright 2018-2023 <MIT License> <https://git.fifthgrid.com/blockstorage/repertory>") set(REPERTORY_VER_LEGALCOPYRIGHT_STR "Copyright 2018-2023 <MIT License> <https://git.fifthgrid.com/blockstorage/repertory>")
set(REPERTORY_VER_FILEDESCRIPTION_STR "Mount utility for Sia and S3") set(REPERTORY_VER_FILEDESCRIPTION_STR "Mount utility for Sia and S3")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in ${CMAKE_CURRENT_SOURCE_DIR}/src/version.rc @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in ${CMAKE_CURRENT_SOURCE_DIR}/src/version.rc @ONLY)
set(WINDOWS_VERSION_RC ${CMAKE_CURRENT_SOURCE_DIR}/src/version.rc) set(WINDOWS_VERSION_RC ${CMAKE_CURRENT_SOURCE_DIR}/src/version.rc)
set(REPERTORY_LINK_LIBRARIES set(REPERTORY_LINK_LIBRARIES
${REPERTORY_LINK_LIBRARIES} ${REPERTORY_LINK_LIBRARIES}
advapi32${LIB_EXT} advapi32${LIB_EXT}
bcrypt${LIB_EXT} bcrypt${LIB_EXT}
comdlg32${LIB_EXT} comdlg32${LIB_EXT}
crypt32${LIB_EXT} crypt32${LIB_EXT}
gdi32${LIB_EXT} gdi32${LIB_EXT}
httpapi${LIB_EXT} httpapi${LIB_EXT}
kernel32${LIB_EXT} kernel32${LIB_EXT}
ncrypt${LIB_EXT} ncrypt${LIB_EXT}
ole32${LIB_EXT} ole32${LIB_EXT}
oleaut32${LIB_EXT} oleaut32${LIB_EXT}
rpcrt4${LIB_EXT} rpcrt4${LIB_EXT}
secur32${LIB_EXT} secur32${LIB_EXT}
shell32${LIB_EXT} shell32${LIB_EXT}
shlwapi${LIB_EXT} shlwapi${LIB_EXT}
user32${LIB_EXT} user32${LIB_EXT}
userenv${LIB_EXT} userenv${LIB_EXT}
uuid${LIB_EXT} uuid${LIB_EXT}
version${LIB_EXT} version${LIB_EXT}
winhttp${LIB_EXT} winhttp${LIB_EXT}
wininet${LIB_EXT} wininet${LIB_EXT}
winspool${LIB_EXT} winspool${LIB_EXT}
ws2_32${LIB_EXT} ws2_32${LIB_EXT}
) )
endif() endif()
include_directories(SYSTEM include_directories(SYSTEM
${EXTERNAL_BUILD_ROOT}/include ${EXTERNAL_BUILD_ROOT}/include
) )
link_directories( link_directories(
${EXTERNAL_BUILD_ROOT}/lib ${EXTERNAL_BUILD_ROOT}/lib
) )
include(cmake/zlib.cmake) include(cmake/zlib.cmake)
include(cmake/openssl.cmake) include(cmake/openssl.cmake)
include(cmake/curl.cmake) include(cmake/curl.cmake)
include(cmake/boost.cmake) include(cmake/boost.cmake)
include(cmake/rocksdb.cmake) include(cmake/rocksdb.cmake)
include(cmake/libsodium.cmake) include(cmake/libsodium.cmake)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common.cpp.in ${CMAKE_CURRENT_SOURCE_DIR}/src/common.cpp @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common.cpp.in ${CMAKE_CURRENT_SOURCE_DIR}/src/common.cpp @ONLY)
include_directories(include) include_directories(include)
include_directories(SYSTEM include_directories(SYSTEM
${Boost_INCLUDE_DIR} ${Boost_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cpp-httplib ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cpp-httplib
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/stduuid ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/stduuid
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/json ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/json
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/pugixml/src ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/pugixml/src
${CURL_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS}
${LIBFUSE2_INCLUDE_DIRS} ${LIBFUSE2_INCLUDE_DIRS}
${LIBFUSE3_INCLUDE_DIRS} ${LIBFUSE3_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR}
${ROCKSDB_INCLUDE_DIRS} ${ROCKSDB_INCLUDE_DIRS}
) )
set(REPERTORY_LINK_LIBRARIES set(REPERTORY_LINK_LIBRARIES
${ROCKSDB_LIBRARIES} ${ROCKSDB_LIBRARIES}
${LIBFUSE2_LIBRARIES} ${LIBFUSE2_LIBRARIES}
${LIBFUSE3_LIBRARIES} ${LIBFUSE3_LIBRARIES}
${Boost_LIBRARIES} ${Boost_LIBRARIES}
${CURL_LIBRARIES} ${CURL_LIBRARIES}
${OPENSSL_LIBRARIES} ${OPENSSL_LIBRARIES}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
${LIBSODIUM_LIBRARIES} ${LIBSODIUM_LIBRARIES}
${REPERTORY_LINK_LIBRARIES} ${REPERTORY_LINK_LIBRARIES}
) )
file(GLOB_RECURSE REPERTORY_HEADERS file(GLOB_RECURSE REPERTORY_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/include/*.h ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
${CMAKE_CURRENT_SOURCE_DIR}/include/*.hh ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hh
${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp
${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.h ${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.h
${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.hh ${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.hh
${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.hpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/pugixml/src/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/pugixml/src/*.hpp
) )
file(GLOB_RECURSE REPERTORY_SOURCES file(GLOB_RECURSE REPERTORY_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/**/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/**/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/pugixml/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/pugixml/src/*.cpp
) )
list(REMOVE_ITEM REPERTORY_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp) list(REMOVE_ITEM REPERTORY_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
include(cmake/helpers.cmake) include(cmake/helpers.cmake)
include(cmake/librepertory.cmake) include(cmake/librepertory.cmake)
include(cmake/repertory.cmake) include(cmake/repertory.cmake)
include(cmake/unittests.cmake) include(cmake/unittests.cmake)
include(cmake/install.cmake) include(cmake/install.cmake)
message(STATUS "Repertory Version: ${REPERTORY_VERSION}") message(STATUS "Repertory Version: ${REPERTORY_VERSION}")
message(STATUS "Git Revision: ${REPERTORY_GIT_REV}") message(STATUS "Git Revision: ${REPERTORY_GIT_REV}")

View File

@ -1,10 +1,10 @@
if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
message(FATAL_ERROR "32-bit compilation is not supported") message(FATAL_ERROR "32-bit compilation is not supported")
else() else()
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)") if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)")
set(REPERTORY_UNIX_ARCH armv8-a) set(REPERTORY_UNIX_ARCH armv8-a)
set(IS_ARM64 TRUE) set(IS_ARM64 TRUE)
else() else()
set(REPERTORY_UNIX_ARCH x86-64) set(REPERTORY_UNIX_ARCH x86-64)
endif() endif()
endif() endif()

View File

@ -1,97 +1,97 @@
set(BOOST_VERSION ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_REVISION}) set(BOOST_VERSION ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_REVISION})
set(BOOST_VERSION2 ${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_REVISION}) set(BOOST_VERSION2 ${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_REVISION})
set(BOOST_PROJECT_NAME boost_${BOOST_VERSION}) set(BOOST_PROJECT_NAME boost_${BOOST_VERSION})
set(BOOST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${BOOST_PROJECT_NAME}) set(BOOST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${BOOST_PROJECT_NAME})
set(BOOST_ADDRESS_MODEL 64) set(BOOST_ADDRESS_MODEL 64)
set(BOOST_DOWNLOAD_URL https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION2}.tar.gz) set(BOOST_DOWNLOAD_URL https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION2}.tar.gz)
if (IS_CLANG_COMPILER) if (IS_CLANG_COMPILER)
set(BOOST_TOOLSET --with-toolset=clang) set(BOOST_TOOLSET --with-toolset=clang)
else () else ()
set(BOOST_OPENSSL_DIR "--openssldir=${EXTERNAL_BUILD_ROOT}") set(BOOST_OPENSSL_DIR "--openssldir=${EXTERNAL_BUILD_ROOT}")
endif() endif()
if (IS_ARM64) if (IS_ARM64)
set (BOOST_ARCH arm) set (BOOST_ARCH arm)
else() else()
set (BOOST_ARCH x86) set (BOOST_ARCH x86)
endif() endif()
set (BOOST_COMMON_ARGS set (BOOST_COMMON_ARGS
${BOOST_OPENSSL_DIR} ${BOOST_OPENSSL_DIR}
--prefix=${EXTERNAL_BUILD_ROOT} --prefix=${EXTERNAL_BUILD_ROOT}
address-model=${BOOST_ADDRESS_MODEL} address-model=${BOOST_ADDRESS_MODEL}
architecture=${BOOST_ARCH} architecture=${BOOST_ARCH}
cxxflags=-std=c++${CMAKE_CXX_STANDARD} cxxflags=-std=c++${CMAKE_CXX_STANDARD}
cxxstd=${CMAKE_CXX_STANDARD} cxxstd=${CMAKE_CXX_STANDARD}
define=BOOST_ASIO_HAS_STD_STRING_VIEW define=BOOST_ASIO_HAS_STD_STRING_VIEW
define=BOOST_SYSTEM_NO_DEPRECATED define=BOOST_SYSTEM_NO_DEPRECATED
link=static link=static
linkflags=-std=c++${CMAKE_CXX_STANDARD} linkflags=-std=c++${CMAKE_CXX_STANDARD}
threading=multi threading=multi
variant=${CMAKE_BUILD_TYPE_LOWER} variant=${CMAKE_BUILD_TYPE_LOWER}
-sZLIB_BINARY=zlibstatic${DEBUG_EXTRA} -sZLIB_BINARY=zlibstatic${DEBUG_EXTRA}
-sZLIB_LIBPATH="${EXTERNAL_BUILD_ROOT}/lib" -sZLIB_LIBPATH="${EXTERNAL_BUILD_ROOT}/lib"
-sZLIB_INCLUDE="${EXTERNAL_BUILD_ROOT}/include" -sZLIB_INCLUDE="${EXTERNAL_BUILD_ROOT}/include"
) )
if (MINGW) if (MINGW)
if (NOT CMAKE_HOST_WIN32) if (NOT CMAKE_HOST_WIN32)
set(BOOST_COMMON_ARGS set(BOOST_COMMON_ARGS
${BOOST_COMMON_ARGS} ${BOOST_COMMON_ARGS}
--user-config=./user-config.jam --user-config=./user-config.jam
) )
endif() endif()
set(BOOST_TARGET_OS target-os=windows) set(BOOST_TARGET_OS target-os=windows)
endif() endif()
ExternalProject_Add(boost_project ExternalProject_Add(boost_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL ${BOOST_DOWNLOAD_URL} URL ${BOOST_DOWNLOAD_URL}
PREFIX ${BOOST_BUILD_ROOT} PREFIX ${BOOST_BUILD_ROOT}
BUILD_IN_SOURCE 1 BUILD_IN_SOURCE 1
CONFIGURE_COMMAND CONFIGURE_COMMAND
cp -f ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/user-config.jam . && cp -f ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/user-config.jam . &&
./bootstrap.sh ./bootstrap.sh
${BOOST_TOOLSET} ${BOOST_TOOLSET}
${BOOST_TARGET_OS} ${BOOST_TARGET_OS}
--with-libraries=atomic,chrono,date_time,filesystem,random,regex,serialization,system,thread --with-libraries=atomic,chrono,date_time,filesystem,random,regex,serialization,system,thread
BUILD_COMMAND BUILD_COMMAND
./b2 ./b2
${BOOST_COMMON_ARGS} ${BOOST_COMMON_ARGS}
${BOOST_TARGET_OS} ${BOOST_TARGET_OS}
INSTALL_COMMAND INSTALL_COMMAND
./b2 ./b2
${BOOST_COMMON_ARGS} ${BOOST_COMMON_ARGS}
${BOOST_TARGET_OS} ${BOOST_TARGET_OS}
install install
) )
add_dependencies(boost_project openssl_project) add_dependencies(boost_project openssl_project)
if (MINGW AND CMAKE_HOST_WIN32) if (MINGW AND CMAKE_HOST_WIN32)
set(BOOST_GCC_VERSION ${CMAKE_CXX_COMPILER_VERSION}) set(BOOST_GCC_VERSION ${CMAKE_CXX_COMPILER_VERSION})
string(REPLACE "." ";" BOOST_GCC_VERSION_LIST ${BOOST_GCC_VERSION}) string(REPLACE "." ";" BOOST_GCC_VERSION_LIST ${BOOST_GCC_VERSION})
list(GET BOOST_GCC_VERSION_LIST 0 BOOST_GCC_MAJOR_VERSION) list(GET BOOST_GCC_VERSION_LIST 0 BOOST_GCC_MAJOR_VERSION)
set(BOOST_LIB_EXTRA "-mgw${BOOST_GCC_MAJOR_VERSION}-mt${DEBUG_EXTRA2}-x64-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}") set(BOOST_LIB_EXTRA "-mgw${BOOST_GCC_MAJOR_VERSION}-mt${DEBUG_EXTRA2}-x64-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}")
endif() endif()
set(Boost_LIBRARIES set(Boost_LIBRARIES
libboost_system${BOOST_LIB_EXTRA}.a libboost_system${BOOST_LIB_EXTRA}.a
libboost_atomic${BOOST_LIB_EXTRA}.a libboost_atomic${BOOST_LIB_EXTRA}.a
libboost_chrono${BOOST_LIB_EXTRA}.a libboost_chrono${BOOST_LIB_EXTRA}.a
libboost_date_time${BOOST_LIB_EXTRA}.a libboost_date_time${BOOST_LIB_EXTRA}.a
libboost_filesystem${BOOST_LIB_EXTRA}.a libboost_filesystem${BOOST_LIB_EXTRA}.a
libboost_random${BOOST_LIB_EXTRA}.a libboost_random${BOOST_LIB_EXTRA}.a
libboost_regex${BOOST_LIB_EXTRA}.a libboost_regex${BOOST_LIB_EXTRA}.a
libboost_serialization${BOOST_LIB_EXTRA}.a libboost_serialization${BOOST_LIB_EXTRA}.a
libboost_thread${BOOST_LIB_EXTRA}.a libboost_thread${BOOST_LIB_EXTRA}.a
) )
add_dependencies(boost_project zlib_project) add_dependencies(boost_project zlib_project)
if (CMAKE_HOST_WIN32) if (CMAKE_HOST_WIN32)
include_directories(SYSTEM ${EXTERNAL_BUILD_ROOT}/include/boost-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}) include_directories(SYSTEM ${EXTERNAL_BUILD_ROOT}/include/boost-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION})
endif() endif()

View File

@ -1,67 +1,67 @@
set(CURL_PROJECT_NAME curl_${CURL_VERSION}) set(CURL_PROJECT_NAME curl_${CURL_VERSION})
set(CURL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${CURL_PROJECT_NAME}) set(CURL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${CURL_PROJECT_NAME})
if (OPENSSL_ROOT_DIR) if (OPENSSL_ROOT_DIR)
set(CURL_OPENSSL_EXTRA -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}) set(CURL_OPENSSL_EXTRA -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR})
elseif(LINUX OR MINGW) elseif(LINUX OR MINGW)
set(CURL_OPENSSL_EXTRA -DOPENSSL_ROOT_DIR=${EXTERNAL_BUILD_ROOT}) set(CURL_OPENSSL_EXTRA -DOPENSSL_ROOT_DIR=${EXTERNAL_BUILD_ROOT})
endif() endif()
set(CURL_CMAKE_ARGS set(CURL_CMAKE_ARGS
${CURL_OPENSSL_EXTRA} ${CURL_OPENSSL_EXTRA}
-DBUILD_CURL_EXE=OFF -DBUILD_CURL_EXE=OFF
-DBUILD_SHARED_LIBS=OFF -DBUILD_SHARED_LIBS=OFF
-DBUILD_TESTING=OFF -DBUILD_TESTING=OFF
-DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT} -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT}
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
-DCURL_CA_BUNDLE=./cacert.pem -DCURL_CA_BUNDLE=./cacert.pem
-DCURL_CA_FALLBACK=ON -DCURL_CA_FALLBACK=ON
-DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAP=ON
-DCURL_STATICLIB=ON -DCURL_STATICLIB=ON
-DCURL_USE_LIBPSL=OFF -DCURL_USE_LIBPSL=OFF
-DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH2=OFF
-DCURL_ZLIB=OFF -DCURL_ZLIB=OFF
-DENABLE_THREADED_RESOLVER=ON -DENABLE_THREADED_RESOLVER=ON
-DOPENSSL_USE_STATIC_LIBS=ON -DOPENSSL_USE_STATIC_LIBS=ON
-DUSE_LIBIDN2=OFF -DUSE_LIBIDN2=OFF
) )
if (CMAKE_TOOLCHAIN_FILE) if (CMAKE_TOOLCHAIN_FILE)
set(CURL_CMAKE_ARGS set(CURL_CMAKE_ARGS
${CURL_CMAKE_ARGS} ${CURL_CMAKE_ARGS}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
) )
endif() endif()
if (MINGW) if (MINGW)
set(CURL_CMAKE_ARGS set(CURL_CMAKE_ARGS
${CURL_CMAKE_ARGS} ${CURL_CMAKE_ARGS}
-DCURL_USE_OPENSSL=OFF -DCURL_USE_OPENSSL=OFF
-DUSE_WIN32_CRYPTO=ON -DUSE_WIN32_CRYPTO=ON
) )
else() else()
set(CURL_CMAKE_ARGS set(CURL_CMAKE_ARGS
${CURL_CMAKE_ARGS} ${CURL_CMAKE_ARGS}
-DCURL_USE_OPENSSL=ON -DCURL_USE_OPENSSL=ON
) )
endif() endif()
ExternalProject_Add(curl_project ExternalProject_Add(curl_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL https://github.com/curl/curl/archive/curl-${CURL_VERSION}.tar.gz URL https://github.com/curl/curl/archive/curl-${CURL_VERSION}.tar.gz
PREFIX ${CURL_BUILD_ROOT} PREFIX ${CURL_BUILD_ROOT}
CMAKE_ARGS ${CURL_CMAKE_ARGS} CMAKE_ARGS ${CURL_CMAKE_ARGS}
) )
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DCURL_STATICLIB=ON -DCURL_DISABLE_LDAP=ON) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DCURL_STATICLIB=ON -DCURL_DISABLE_LDAP=ON)
set(CURL_LIBRARIES libcurl${DEBUG_EXTRA2}${CMAKE_STATIC_LIBRARY_SUFFIX}) set(CURL_LIBRARIES libcurl${DEBUG_EXTRA2}${CMAKE_STATIC_LIBRARY_SUFFIX})
add_dependencies(curl_project add_dependencies(curl_project
openssl_project openssl_project
zlib_project zlib_project
) )

View File

@ -1,103 +1,103 @@
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(IS_CLANG_COMPILER TRUE) set(IS_CLANG_COMPILER TRUE)
endif() endif()
if (UNIX OR MINGW) if (UNIX OR MINGW)
set(REPERTORY_COMMON_FLAG_LIST set(REPERTORY_COMMON_FLAG_LIST
${REPERTORY_COMMON_FLAG_LIST} ${REPERTORY_COMMON_FLAG_LIST}
-D_FILE_OFFSET_BITS=64 -D_FILE_OFFSET_BITS=64
-march=${REPERTORY_UNIX_ARCH} -march=${REPERTORY_UNIX_ARCH}
-mtune=generic -mtune=generic
) )
if (MINGW) if (MINGW)
set(REPERTORY_COMMON_FLAG_LIST set(REPERTORY_COMMON_FLAG_LIST
${REPERTORY_COMMON_FLAG_LIST} ${REPERTORY_COMMON_FLAG_LIST}
-Wa,-mbig-obj -Wa,-mbig-obj
-flarge-source-files -flarge-source-files
) )
endif() endif()
set(REPERTORY_COMMON_FLAG_LIST_DEBUG set(REPERTORY_COMMON_FLAG_LIST_DEBUG
${REPERTORY_COMMON_FLAG_LIST_DEBUG} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}
-DDEBUG -DDEBUG
-D_DEBUG -D_DEBUG
-Og -Og
-fno-omit-frame-pointer -fno-omit-frame-pointer
-g -g
-gdwarf-4 -gdwarf-4
) )
set(REPERTORY_COMMON_FLAG_LIST_RELEASE set(REPERTORY_COMMON_FLAG_LIST_RELEASE
${REPERTORY_COMMON_FLAG_LIST_RELEASE} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}
-O3 -O3
-DNDEBUG -DNDEBUG
) )
if (NOT IS_CLANG_COMPILER) if (NOT IS_CLANG_COMPILER)
set(REPERTORY_GCC_FLAGS set(REPERTORY_GCC_FLAGS
-Wall -Wall
-Wcast-align -Wcast-align
-Wconversion -Wconversion
-Wdouble-promotion -Wdouble-promotion
-Wduplicated-branches -Wduplicated-branches
-Wduplicated-cond -Wduplicated-cond
-Wextra -Wextra
-Wformat=2 -Wformat=2
-Wlogical-op -Wlogical-op
-Wmisleading-indentation -Wmisleading-indentation
-Wnull-dereference -Wnull-dereference
-Wpedantic -Wpedantic
-Wshadow -Wshadow
-Wsign-conversion -Wsign-conversion
-Wunused -Wunused
) )
set(REPERTORY_GCC_CXX_FLAGS set(REPERTORY_GCC_CXX_FLAGS
-Wnon-virtual-dtor -Wnon-virtual-dtor
-Wold-style-cast -Wold-style-cast
-Woverloaded-virtual -Woverloaded-virtual
-Wuseless-cast -Wuseless-cast
) )
endif() endif()
set(REPERTORY_C_FLAGS_LIST set(REPERTORY_C_FLAGS_LIST
${REPERTORY_C_FLAGS_LIST} ${REPERTORY_C_FLAGS_LIST}
${REPERTORY_COMMON_FLAG_LIST} ${REPERTORY_COMMON_FLAG_LIST}
) )
set(REPERTORY_CXX_FLAGS_LIST set(REPERTORY_CXX_FLAGS_LIST
${REPERTORY_CXX_FLAGS_LIST} ${REPERTORY_CXX_FLAGS_LIST}
${REPERTORY_COMMON_FLAG_LIST} ${REPERTORY_COMMON_FLAG_LIST}
-std=c++${CMAKE_CXX_STANDARD} -std=c++${CMAKE_CXX_STANDARD}
) )
endif() endif()
list(JOIN REPERTORY_COMMON_FLAG_LIST_DEBUG " " REPERTORY_COMMON_FLAG_LIST_DEBUG) list(JOIN REPERTORY_COMMON_FLAG_LIST_DEBUG " " REPERTORY_COMMON_FLAG_LIST_DEBUG)
list(JOIN REPERTORY_COMMON_FLAG_LIST_RELEASE " " REPERTORY_COMMON_FLAG_LIST_RELEASE) list(JOIN REPERTORY_COMMON_FLAG_LIST_RELEASE " " REPERTORY_COMMON_FLAG_LIST_RELEASE)
list(JOIN REPERTORY_CXX_FLAGS_LIST " " REPERTORY_CXX_FLAGS_LIST) list(JOIN REPERTORY_CXX_FLAGS_LIST " " REPERTORY_CXX_FLAGS_LIST)
list(JOIN REPERTORY_C_FLAGS_LIST " " REPERTORY_C_FLAGS_LIST) list(JOIN REPERTORY_C_FLAGS_LIST " " REPERTORY_C_FLAGS_LIST)
list(JOIN REPERTORY_SHARED_LINKER_FLAGS_LIST " " REPERTORY_SHARED_LINKER_FLAGS_LIST) list(JOIN REPERTORY_SHARED_LINKER_FLAGS_LIST " " REPERTORY_SHARED_LINKER_FLAGS_LIST)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REPERTORY_CXX_FLAGS_LIST}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REPERTORY_CXX_FLAGS_LIST}")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REPERTORY_C_FLAGS_LIST}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REPERTORY_C_FLAGS_LIST}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}")
else() else()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}")
endif() endif()
set (REPERTORY_CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}") set (REPERTORY_CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}")
set (REPERTORY_CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}") set (REPERTORY_CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_DEBUG}")
set (REPERTORY_CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}") set (REPERTORY_CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}")
set (REPERTORY_CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}") set (REPERTORY_CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} ${REPERTORY_COMMON_FLAG_LIST_RELEASE}")
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${REPERTORY_SHARED_LINKER_FLAGS_LIST}") set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${REPERTORY_SHARED_LINKER_FLAGS_LIST}")
if (ALPINE_FOUND OR MINGW) if (ALPINE_FOUND OR MINGW)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
endif() endif()

View File

@ -1,62 +1,62 @@
function(copy_support_files target) function(copy_support_files target)
if (MINGW) if (MINGW)
add_custom_command( add_custom_command(
TARGET ${target} TARGET ${target}
POST_BUILD POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/bin/${WINFSP_LIBRARY_BASENAME}.dll ${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/bin/${WINFSP_LIBRARY_BASENAME}.dll
${REPERTORY_OUTPUT_DIR}/${WINFSP_LIBRARY_BASENAME}.dll) ${REPERTORY_OUTPUT_DIR}/${WINFSP_LIBRARY_BASENAME}.dll)
endif() endif()
add_custom_command( add_custom_command(
TARGET ${target} TARGET ${target}
POST_BUILD POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/3rd_party/cacert.pem ${CMAKE_SOURCE_DIR}/3rd_party/cacert.pem
${REPERTORY_OUTPUT_DIR}/cacert.pem) ${REPERTORY_OUTPUT_DIR}/cacert.pem)
endfunction(copy_support_files) endfunction(copy_support_files)
function(set_common_target_options name) function(set_common_target_options name)
target_compile_definitions(${name} PUBLIC ${REPERTORY_DEFINITIONS}) target_compile_definitions(${name} PUBLIC ${REPERTORY_DEFINITIONS})
if (UNIX OR MINGW) if (UNIX OR MINGW)
target_compile_options(${name} PRIVATE target_compile_options(${name} PRIVATE
${REPERTORY_GCC_CXX_FLAGS} ${REPERTORY_GCC_CXX_FLAGS}
${REPERTORY_GCC_FLAGS} ${REPERTORY_GCC_FLAGS}
) )
endif() endif()
target_precompile_headers(${name} PRIVATE include/common.hpp) target_precompile_headers(${name} PRIVATE include/common.hpp)
if (MACOS) if (MACOS)
target_link_libraries(${name} PRIVATE -W1,-rpath,@executable_path) target_link_libraries(${name} PRIVATE -W1,-rpath,@executable_path)
set_target_properties(${name} PROPERTIES COMPILE_FLAGS -fvisibility=hidden) set_target_properties(${name} PROPERTIES COMPILE_FLAGS -fvisibility=hidden)
endif() endif()
if (UNIX OR MINGW) if (UNIX OR MINGW)
target_compile_options(${name} PRIVATE target_compile_options(${name} PRIVATE
${REPERTORY_GCC_CXX_FLAGS} ${REPERTORY_GCC_CXX_FLAGS}
${REPERTORY_GCC_FLAGS} ${REPERTORY_GCC_FLAGS}
) )
endif() endif()
endfunction(set_common_target_options) endfunction(set_common_target_options)
function(add_project_executable name sources) function(add_project_executable name sources)
add_executable(${name} add_executable(${name}
src/main.cpp src/main.cpp
${REPERTORY_HEADERS} ${REPERTORY_HEADERS}
${sources} ${sources}
) )
set_common_target_options(${name}) set_common_target_options(${name})
add_dependencies(${name} librepertory) add_dependencies(${name} librepertory)
if (REPERTORY_MUSL OR MINGW) if (REPERTORY_MUSL OR MINGW)
set_property(TARGET ${name} PROPERTY LINK_SEARCH_START_STATIC 1) set_property(TARGET ${name} PROPERTY LINK_SEARCH_START_STATIC 1)
endif() endif()
target_link_libraries(${name} PRIVATE librepertory) target_link_libraries(${name} PRIVATE librepertory)
copy_support_files(${name}) copy_support_files(${name})
endfunction(add_project_executable) endfunction(add_project_executable)

View File

@ -1,17 +1,17 @@
if (UNIX) if (UNIX)
macro(install_symlink filepath sympath) macro(install_symlink filepath sympath)
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${filepath} ${sympath})") install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${filepath} ${sympath})")
install(CODE "message(\"-- Created symlink: ${sympath} -> ${filepath}\")") install(CODE "message(\"-- Created symlink: ${sympath} -> ${filepath}\")")
endmacro(install_symlink) endmacro(install_symlink)
install(TARGETS repertory RUNTIME DESTINATION share/repertory) install(TARGETS repertory RUNTIME DESTINATION share/repertory)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem RUNTIME DESTINATION share/repertory) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/cacert.pem RUNTIME DESTINATION share/repertory)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md RUNTIME DESTINATION share/repertory) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md RUNTIME DESTINATION share/repertory)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CONTRIBUTORS.md RUNTIME DESTINATION share/repertory) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CONTRIBUTORS.md RUNTIME DESTINATION share/repertory)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md RUNTIME DESTINATION share/repertory) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md RUNTIME DESTINATION share/repertory)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md RUNTIME DESTINATION share/repertory) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md RUNTIME DESTINATION share/repertory)
if (LINUX) if (LINUX)
install_symlink(${CMAKE_INSTALL_PREFIX}/share/repertory/repertory ${CMAKE_INSTALL_PREFIX}/sbin/mount.repertory) install_symlink(${CMAKE_INSTALL_PREFIX}/share/repertory/repertory ${CMAKE_INSTALL_PREFIX}/sbin/mount.repertory)
install_symlink(${CMAKE_INSTALL_PREFIX}/share/repertory/repertory ${CMAKE_INSTALL_PREFIX}/sbin/repertory) install_symlink(${CMAKE_INSTALL_PREFIX}/share/repertory/repertory ${CMAKE_INSTALL_PREFIX}/sbin/repertory)
endif() endif()
endif() endif()

View File

@ -1,22 +1,22 @@
if (EXISTS "${CMAKE_CURRENT_BINARY_DIR}/librepertory${CMAKE_STATIC_LIBRARY_SUFFIX}") if (EXISTS "${CMAKE_CURRENT_BINARY_DIR}/librepertory${CMAKE_STATIC_LIBRARY_SUFFIX}")
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/librepertory${CMAKE_STATIC_LIBRARY_SUFFIX}) file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/librepertory${CMAKE_STATIC_LIBRARY_SUFFIX})
endif() endif()
add_library(librepertory STATIC add_library(librepertory STATIC
${REPERTORY_SOURCES} ${REPERTORY_SOURCES}
${REPERTORY_HEADERS} ${REPERTORY_HEADERS}
) )
set_common_target_options(librepertory) set_common_target_options(librepertory)
set_target_properties(librepertory PROPERTIES PREFIX "") set_target_properties(librepertory PROPERTIES PREFIX "")
target_link_libraries(librepertory PRIVATE ${REPERTORY_LINK_LIBRARIES}) target_link_libraries(librepertory PRIVATE ${REPERTORY_LINK_LIBRARIES})
add_dependencies(librepertory add_dependencies(librepertory
boost_project boost_project
curl_project curl_project
libsodium_project libsodium_project
openssl_project openssl_project
rocksdb_project rocksdb_project
zlib_project zlib_project
) )

View File

@ -1,27 +1,27 @@
set(LIBSODIUM_PROJECT_NAME libsodium_${LIBSODIUM_VERSION}) set(LIBSODIUM_PROJECT_NAME libsodium_${LIBSODIUM_VERSION})
set(LIBSODIUM_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${LIBSODIUM_PROJECT_NAME}) set(LIBSODIUM_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${LIBSODIUM_PROJECT_NAME})
set(LIBSODIUM_BUILD_TYPE ${EXTERNAL_BUILD_TYPE}) set(LIBSODIUM_BUILD_TYPE ${EXTERNAL_BUILD_TYPE})
if (MINGW) if (MINGW)
set(LIBSODIUM_HOST --host=x86_64-w64-mingw32) set(LIBSODIUM_HOST --host=x86_64-w64-mingw32)
endif() endif()
ExternalProject_Add(libsodium_project ExternalProject_Add(libsodium_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
PREFIX ${LIBSODIUM_BUILD_ROOT} PREFIX ${LIBSODIUM_BUILD_ROOT}
BUILD_IN_SOURCE 1 BUILD_IN_SOURCE 1
URL https://github.com/jedisct1/libsodium/releases/download/${LIBSODIUM_VERSION}-RELEASE/libsodium-${LIBSODIUM_VERSION}.tar.gz URL https://github.com/jedisct1/libsodium/releases/download/${LIBSODIUM_VERSION}-RELEASE/libsodium-${LIBSODIUM_VERSION}.tar.gz
CONFIGURE_COMMAND CONFIGURE_COMMAND
./configure ./configure
${LIBSODIUM_HOST} ${LIBSODIUM_HOST}
--prefix=${EXTERNAL_BUILD_ROOT} --prefix=${EXTERNAL_BUILD_ROOT}
--enable-shared=no --enable-shared=no
--enable-static=yes --enable-static=yes
--disable-asm --disable-asm
BUILD_COMMAND make BUILD_COMMAND make
INSTALL_COMMAND make install INSTALL_COMMAND make install
) )
set(LIBSODIUM_LIBRARIES libsodium.a) set(LIBSODIUM_LIBRARIES libsodium.a)
add_dependencies(libsodium_project zlib_project) add_dependencies(libsodium_project zlib_project)

View File

@ -1,16 +1,16 @@
set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran) set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran)
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
set(CMAKE_FIND_ROOT_PATH set(CMAKE_FIND_ROOT_PATH
/usr/${TOOLCHAIN_PREFIX} /usr/${TOOLCHAIN_PREFIX}
/usr/local/${TOOLCHAIN_PREFIX} /usr/local/${TOOLCHAIN_PREFIX}
) )
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

View File

@ -1,36 +1,36 @@
if (IS_CLANG_COMPILER) if (IS_CLANG_COMPILER)
set(OPENSSL_COMPILE_TYPE_EXTRA -clang) set(OPENSSL_COMPILE_TYPE_EXTRA -clang)
endif() endif()
if (MACOS) if (MACOS)
set(OPENSSL_COMPILE_TYPE darwin64-x86_64-cc) set(OPENSSL_COMPILE_TYPE darwin64-x86_64-cc)
elseif(IS_ARM64) elseif(IS_ARM64)
set(OPENSSL_COMPILE_TYPE linux-aarch64${OPENSSL_COMPILE_TYPE_EXTRA}) set(OPENSSL_COMPILE_TYPE linux-aarch64${OPENSSL_COMPILE_TYPE_EXTRA})
elseif(MINGW) elseif(MINGW)
if (CMAKE_TOOLCHAIN_FILE) if (CMAKE_TOOLCHAIN_FILE)
set(OPENSSL_COMPILE_TYPE --cross-compile-prefix=x86_64-w64-mingw32- mingw64${OPENSSL_COMPILE_TYPE_EXTRA}) set(OPENSSL_COMPILE_TYPE --cross-compile-prefix=x86_64-w64-mingw32- mingw64${OPENSSL_COMPILE_TYPE_EXTRA})
else() else()
set(OPENSSL_COMPILE_TYPE mingw64${OPENSSL_COMPILE_TYPE_EXTRA}) set(OPENSSL_COMPILE_TYPE mingw64${OPENSSL_COMPILE_TYPE_EXTRA})
endif() endif()
else() else()
set(OPENSSL_COMPILE_TYPE linux-x86_64${OPENSSL_COMPILE_TYPE_EXTRA}) set(OPENSSL_COMPILE_TYPE linux-x86_64${OPENSSL_COMPILE_TYPE_EXTRA})
endif() endif()
set(OPENSSL_PROJECT_NAME openssl_${OPENSSL_VERSION}) set(OPENSSL_PROJECT_NAME openssl_${OPENSSL_VERSION})
set(OPENSSL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${OPENSSL_PROJECT_NAME}) set(OPENSSL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${OPENSSL_PROJECT_NAME})
ExternalProject_Add(openssl_project ExternalProject_Add(openssl_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz URL https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz
PREFIX ${OPENSSL_BUILD_ROOT} PREFIX ${OPENSSL_BUILD_ROOT}
BUILD_IN_SOURCE 1 BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ./Configure no-shared ${OPENSSL_COMPILE_TYPE} --openssldir=${EXTERNAL_BUILD_ROOT}/ssl --prefix=${EXTERNAL_BUILD_ROOT} CONFIGURE_COMMAND ./Configure no-shared ${OPENSSL_COMPILE_TYPE} --openssldir=${EXTERNAL_BUILD_ROOT}/ssl --prefix=${EXTERNAL_BUILD_ROOT}
BUILD_COMMAND make -j1 BUILD_COMMAND make -j1
INSTALL_COMMAND make install INSTALL_COMMAND make install
) )
set(OPENSSL_LIBRARIES set(OPENSSL_LIBRARIES
${EXTERNAL_BUILD_ROOT}/lib/libssl.a ${EXTERNAL_BUILD_ROOT}/lib/libssl.a
${EXTERNAL_BUILD_ROOT}/lib/libcrypto.a ${EXTERNAL_BUILD_ROOT}/lib/libcrypto.a
) )
add_dependencies(openssl_project zlib_project) add_dependencies(openssl_project zlib_project)

View File

@ -1,11 +1,11 @@
option(REPERTORY_ENABLE_TESTING "Enable testing" ON) option(REPERTORY_ENABLE_TESTING "Enable testing" ON)
option(REPERTORY_ENABLE_S3 "Enable S3 mount support" OFF) option(REPERTORY_ENABLE_S3 "Enable S3 mount support" OFF)
if (REPERTORY_ENABLE_S3) if (REPERTORY_ENABLE_S3)
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DREPERTORY_ENABLE_S3) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DREPERTORY_ENABLE_S3)
option(REPERTORY_ENABLE_S3_TESTING "Enable S3 unit tests" OFF) option(REPERTORY_ENABLE_S3_TESTING "Enable S3 unit tests" OFF)
if (REPERTORY_ENABLE_S3_TESTING) if (REPERTORY_ENABLE_S3_TESTING)
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DREPERTORY_ENABLE_S3_TESTING) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DREPERTORY_ENABLE_S3_TESTING)
endif () endif ()
endif() endif()

View File

@ -1,13 +1,13 @@
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
set(FREEBSD TRUE) set(FREEBSD TRUE)
else() else()
set(LINUX TRUE) set(LINUX TRUE)
endif() endif()
elseif(UNIX AND APPLE) elseif(UNIX AND APPLE)
set(MACOS TRUE) set(MACOS TRUE)
endif() endif()
if (LINUX) if (LINUX)
find_file(ALPINE_FOUND alpine-release PATHS /etc) find_file(ALPINE_FOUND alpine-release PATHS /etc)
endif() endif()

View File

@ -1 +1 @@
add_project_executable(repertory "${WINDOWS_VERSION_RC}") add_project_executable(repertory "${WINDOWS_VERSION_RC}")

View File

@ -1,71 +1,71 @@
set(ROCKSDB_PROJECT_NAME rocksdb_${ROCKSDB_VERSION}) set(ROCKSDB_PROJECT_NAME rocksdb_${ROCKSDB_VERSION})
set(ROCKSDB_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${ROCKSDB_PROJECT_NAME}) set(ROCKSDB_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${ROCKSDB_PROJECT_NAME})
set(ROCKSDB_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") set(ROCKSDB_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
if (MACOS) if (MACOS)
set(ROCKSDB_CMAKE_CXX_FLAGS "${ROCKSDB_CMAKE_CXX_FLAGS} -fvisibility=hidden") set(ROCKSDB_CMAKE_CXX_FLAGS "${ROCKSDB_CMAKE_CXX_FLAGS} -fvisibility=hidden")
endif() endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(ROCKSDB_CMAKE_CXX_FLAGS "${ROCKSDB_CMAKE_CXX_FLAGS} -DXXH_NO_INLINE_HINTS") set(ROCKSDB_CMAKE_CXX_FLAGS "${ROCKSDB_CMAKE_CXX_FLAGS} -DXXH_NO_INLINE_HINTS")
set(REPERTORY_DEFINITIONS "${REPERTORY_DEFINITIONS} -DXXH_NO_INLINE_HINTS") set(REPERTORY_DEFINITIONS "${REPERTORY_DEFINITIONS} -DXXH_NO_INLINE_HINTS")
endif() endif()
set(ROCKSDB_CMAKE_ARGS set(ROCKSDB_CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${ROCKSDB_CMAKE_CXX_FLAGS} -DCMAKE_CXX_FLAGS=${ROCKSDB_CMAKE_CXX_FLAGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT} -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT}
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
-DFAIL_ON_WARNINGS=OFF -DFAIL_ON_WARNINGS=OFF
-DPORTABLE=1 -DPORTABLE=1
-DROCKSDB_BUILD_SHARED=OFF -DROCKSDB_BUILD_SHARED=OFF
-DWITH_BENCHMARK_TOOLS=OFF -DWITH_BENCHMARK_TOOLS=OFF
-DWITH_GFLAGS=OFF -DWITH_GFLAGS=OFF
-DWITH_LIBURING=OFF -DWITH_LIBURING=OFF
-DWITH_TESTS=OFF -DWITH_TESTS=OFF
-DWITH_TOOLS=OFF -DWITH_TOOLS=OFF
) )
if (MINGW) if (MINGW)
if (CMAKE_TOOLCHAIN_FILE) if (CMAKE_TOOLCHAIN_FILE)
set(ROCKSDB_CMAKE_ARGS set(ROCKSDB_CMAKE_ARGS
${ROCKSDB_CMAKE_ARGS} ${ROCKSDB_CMAKE_ARGS}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
) )
endif() endif()
ExternalProject_Add(rocksdb_project ExternalProject_Add(rocksdb_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz
PREFIX ${ROCKSDB_BUILD_ROOT} PREFIX ${ROCKSDB_BUILD_ROOT}
CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS}
INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step."
) )
set(ROCKSDB_LIBRARIES ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project-build/librocksdb.a) set(ROCKSDB_LIBRARIES ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project-build/librocksdb.a)
include_directories(SYSTEM ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project/include) include_directories(SYSTEM ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project/include)
else() else()
ExternalProject_Add(rocksdb_project ExternalProject_Add(rocksdb_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz
PREFIX ${ROCKSDB_BUILD_ROOT} PREFIX ${ROCKSDB_BUILD_ROOT}
CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS}
) )
if (MACOS) if (MACOS)
set(ROCKSDB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/librocksdb.a) set(ROCKSDB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/librocksdb.a)
else() else()
set(ROCKSDB_LIBRARIES librocksdb.a) set(ROCKSDB_LIBRARIES librocksdb.a)
endif() endif()
endif() endif()
if (LINUX OR MINGW) if (LINUX OR MINGW)
add_dependencies(rocksdb_project curl_project) add_dependencies(rocksdb_project curl_project)
endif() endif()
add_dependencies(rocksdb_project zlib_project) add_dependencies(rocksdb_project zlib_project)

View File

@ -1,39 +1,39 @@
if (ALPINE_FOUND) if (ALPINE_FOUND)
set(CMAKE_POSITION_INDEPENDENT_CODE OFF) set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
set(REPERTORY_MUSL ON) set(REPERTORY_MUSL ON)
set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DREPERTORY_MUSL) set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DREPERTORY_MUSL)
else() else()
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif() endif()
set(CMAKE_COLOR_MAKEFILE OFF) set(CMAKE_COLOR_MAKEFILE OFF)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(THREADS_PREFER_PTHREAD_FLAG ON) set(THREADS_PREFER_PTHREAD_FLAG ON)
if (NOT CMAKE_BUILD_TYPE) if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release) set(CMAKE_BUILD_TYPE Release)
endif() endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(DEBUG_EXTRA d) set(DEBUG_EXTRA d)
set(DEBUG_EXTRA2 -${DEBUG_EXTRA}) set(DEBUG_EXTRA2 -${DEBUG_EXTRA})
set(DEBUG_EXTRA3 _${DEBUG_EXTRA}) set(DEBUG_EXTRA3 _${DEBUG_EXTRA})
set(BOOST_DEBUG_EXTRA gd-) set(BOOST_DEBUG_EXTRA gd-)
set(CMAKE_BUILD_TYPE_LOWER debug) set(CMAKE_BUILD_TYPE_LOWER debug)
else() else()
set(CMAKE_BUILD_TYPE_LOWER release) set(CMAKE_BUILD_TYPE_LOWER release)
endif() endif()
string(TOLOWER "${CMAKE_GENERATOR}" CMAKE_GENERATOR_LOWER) string(TOLOWER "${CMAKE_GENERATOR}" CMAKE_GENERATOR_LOWER)
set(REPERTORY_OUTPUT_DIR ${CMAKE_BINARY_DIR}) set(REPERTORY_OUTPUT_DIR ${CMAKE_BINARY_DIR})
set(EXTERNAL_BUILD_ROOT ${CMAKE_BINARY_DIR}/external) set(EXTERNAL_BUILD_ROOT ${CMAKE_BINARY_DIR}/external)
set(EXTERNAL_BUILD_TYPE ${CMAKE_BUILD_TYPE}) set(EXTERNAL_BUILD_TYPE ${CMAKE_BUILD_TYPE})
if (UNIX OR MINGW) if (UNIX OR MINGW)
file(MAKE_DIRECTORY ${EXTERNAL_BUILD_ROOT}/lib) file(MAKE_DIRECTORY ${EXTERNAL_BUILD_ROOT}/lib)
file(CREATE_LINK ${EXTERNAL_BUILD_ROOT}/lib ${EXTERNAL_BUILD_ROOT}/lib64 SYMBOLIC) file(CREATE_LINK ${EXTERNAL_BUILD_ROOT}/lib ${EXTERNAL_BUILD_ROOT}/lib64 SYMBOLIC)
endif() endif()

View File

@ -1,66 +1,66 @@
# Testing # Testing
if (REPERTORY_ENABLE_TESTING) if (REPERTORY_ENABLE_TESTING)
enable_testing() enable_testing()
set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION}) set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION})
set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME}) set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME})
if (MACOS) if (MACOS)
set(GTEST_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") set(GTEST_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
set(GTEST_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") set(GTEST_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
else() else()
set(GTEST_C_FLAGS ${CMAKE_C_FLAGS}) set(GTEST_C_FLAGS ${CMAKE_C_FLAGS})
set(GTEST_CXX_FLAGS ${CMAKE_CXX_FLAGS}) set(GTEST_CXX_FLAGS ${CMAKE_CXX_FLAGS})
endif() endif()
ExternalProject_Add(gtest_project ExternalProject_Add(gtest_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL https://github.com/google/googletest/archive/refs/tags/${GTEST_VERSION}.tar.gz URL https://github.com/google/googletest/archive/refs/tags/${GTEST_VERSION}.tar.gz
PREFIX ${GTEST_BUILD_ROOT} PREFIX ${GTEST_BUILD_ROOT}
CMAKE_ARGS CMAKE_ARGS
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${GTEST_C_FLAGS} -DCMAKE_C_FLAGS=${GTEST_C_FLAGS}
-DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS} -DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
-DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE}
INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step."
) )
set(GTEST_INCLUDE_DIRS set(GTEST_INCLUDE_DIRS
${GTEST_BUILD_ROOT}/src/gtest_project/googletest/include ${GTEST_BUILD_ROOT}/src/gtest_project/googletest/include
${GTEST_BUILD_ROOT}/src/gtest_project/googlemock/include ${GTEST_BUILD_ROOT}/src/gtest_project/googlemock/include
) )
if(UNIX OR MINGW) if(UNIX OR MINGW)
set(GTEST_LIBRARIES set(GTEST_LIBRARIES
${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgmock.a ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgmock.a
${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest.a ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest.a
${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest_main.a ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest_main.a
) )
endif() endif()
file(GLOB_RECURSE UNITTEST_SOURCES file(GLOB_RECURSE UNITTEST_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.hpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/fixtures/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/fixtures/*.hpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/mocks/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/mocks/*.hpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/utils/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/utils/*.hpp
) )
add_project_executable(unittests "${UNITTEST_SOURCES}") add_project_executable(unittests "${UNITTEST_SOURCES}")
add_dependencies(unittests add_dependencies(unittests
gtest_project gtest_project
zlib_project zlib_project
) )
target_compile_definitions(unittests PUBLIC target_compile_definitions(unittests PUBLIC
GTEST_LINKED_AS_SHARED_LIBRARY=1 GTEST_LINKED_AS_SHARED_LIBRARY=1
REPERTORY_TESTING REPERTORY_TESTING
) )
target_include_directories(unittests PUBLIC target_include_directories(unittests PUBLIC
${GTEST_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/tests ${CMAKE_CURRENT_SOURCE_DIR}/tests
) )
target_link_libraries(unittests PRIVATE ${GTEST_LIBRARIES}) target_link_libraries(unittests PRIVATE ${GTEST_LIBRARIES})
add_test(NAME AllTests COMMAND unittests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}) add_test(NAME AllTests COMMAND unittests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE})
endif() endif()

View File

@ -1,11 +1,11 @@
set(BOOST_MAJOR_VERSION 1) set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 83) set(BOOST_MINOR_VERSION 83)
set(BOOST_REVISION 0) set(BOOST_REVISION 0)
set(CURL_VERSION 8_4_0) set(CURL_VERSION 8_4_0)
set(GTEST_VERSION v1.14.0) set(GTEST_VERSION v1.14.0)
set(LIBSODIUM_VERSION 1.0.19) set(LIBSODIUM_VERSION 1.0.19)
set(LIBUUID_VERSION 1.6.2) set(LIBUUID_VERSION 1.6.2)
set(OPENSSL_VERSION 3.1.4) set(OPENSSL_VERSION 3.1.4)
set(ROCKSDB_VERSION 8.6.7) set(ROCKSDB_VERSION 8.6.7)
set(WINFSP_VERSION 2.0) set(WINFSP_VERSION 2.0)
set(ZLIB_VERSION v1.3) set(ZLIB_VERSION v1.3)

View File

@ -1,31 +1,31 @@
set(ZLIB_PROJECT_NAME zlib_${ZLIB_VERSION}) set(ZLIB_PROJECT_NAME zlib_${ZLIB_VERSION})
set(ZLIB_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${ZLIB_PROJECT_NAME}) set(ZLIB_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${ZLIB_PROJECT_NAME})
set(ZLIB_CMAKE_ARGS set(ZLIB_CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT} -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT}
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
) )
if (CMAKE_TOOLCHAIN_FILE) if (CMAKE_TOOLCHAIN_FILE)
set(ZLIB_CMAKE_ARGS set(ZLIB_CMAKE_ARGS
${ZLIB_CMAKE_ARGS} ${ZLIB_CMAKE_ARGS}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
) )
endif() endif()
ExternalProject_Add(zlib_project ExternalProject_Add(zlib_project
DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_NO_PROGRESS 1
URL https://github.com/madler/zlib/archive/${ZLIB_VERSION}.tar.gz URL https://github.com/madler/zlib/archive/${ZLIB_VERSION}.tar.gz
PREFIX ${ZLIB_BUILD_ROOT} PREFIX ${ZLIB_BUILD_ROOT}
CMAKE_ARGS ${ZLIB_CMAKE_ARGS} CMAKE_ARGS ${ZLIB_CMAKE_ARGS}
) )
if(MINGW) if(MINGW)
set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libzlibstatic${CMAKE_STATIC_LIBRARY_SUFFIX}) set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libzlibstatic${CMAKE_STATIC_LIBRARY_SUFFIX})
else() else()
set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libz${CMAKE_STATIC_LIBRARY_SUFFIX}) set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libz${CMAKE_STATIC_LIBRARY_SUFFIX})
endif() endif()