diff --git a/.cspell/words.txt b/.cspell/words.txt index 7edb8212..6b1ca6ff 100644 --- a/.cspell/words.txt +++ b/.cspell/words.txt @@ -28,6 +28,7 @@ cppvsdbg create_notraverse crypto_aead_xchacha20poly1305_ietf_npubbytes cstdint +curl_zstd curle_couldnt_resolve_host curlopt_aws_sigv4 cxxflags @@ -54,6 +55,7 @@ dcurl_staticlib dcurl_use_libpsl dcurl_use_libssh2 dcurl_zlib +dcurl_zstd ddebug decmult_gen_prec_bits decmult_window_size @@ -86,6 +88,7 @@ dspdlog_fmt_external dthreads_prefer_pthread_flag dunw_local_only duse_libidn2 +duse_nghttp2 duuid_build_tests dwith_benchmark dwith_gflags diff --git a/cmake/libraries.cmake b/cmake/libraries.cmake index 743fa36d..349b5f6f 100644 --- a/cmake/libraries.cmake +++ b/cmake/libraries.cmake @@ -7,6 +7,8 @@ set(SFML_STATIC_LIBRARIES ${PROJECT_STATIC_LINK}) set(ZLIB_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) set(wxWidgets_USE_STATIC ${PROJECT_STATIC_LINK}) +include(cmake/libraries/zlib.cmake) + include(cmake/libraries/openssl.cmake) include(cmake/libraries/boost.cmake) diff --git a/cmake/libraries/boost.cmake b/cmake/libraries/boost.cmake index af8621a3..69613bd4 100644 --- a/cmake/libraries/boost.cmake +++ b/cmake/libraries/boost.cmake @@ -142,6 +142,9 @@ if(PROJECT_ENABLE_BOOST) if (NOT CMAKE_HOST_WIN32) add_dependencies(boost_project openssl_project) endif() + if (PROJECT_IS_DARWIN) + add_dependencies(boost_project zlib_project) + endif() endif() endif() endif() diff --git a/cmake/libraries/cpp_httplib.cmake b/cmake/libraries/cpp_httplib.cmake index 019075b1..f4a3ce84 100644 --- a/cmake/libraries/cpp_httplib.cmake +++ b/cmake/libraries/cpp_httplib.cmake @@ -15,6 +15,7 @@ if(PROJECT_ENABLE_CPP_HTTPLIB) 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 @@ -31,5 +32,8 @@ if(PROJECT_ENABLE_CPP_HTTPLIB) if (NOT CMAKE_HOST_WIN32) add_dependencies(cpphttplib_project openssl_project) endif() + if (PROJECT_IS_DARWIN) + add_dependencies(cpphttplib_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/curl.cmake b/cmake/libraries/curl.cmake index ae0cee71..8f57770c 100644 --- a/cmake/libraries/curl.cmake +++ b/cmake/libraries/curl.cmake @@ -27,8 +27,8 @@ if(PROJECT_ENABLE_CURL) -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBUILD_STATIC_CURL=ON -DBUILD_STATIC_LIBS=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 @@ -37,11 +37,13 @@ if(PROJECT_ENABLE_CURL) -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} ) @@ -50,5 +52,9 @@ if(PROJECT_ENABLE_CURL) if (NOT CMAKE_HOST_WIN32) add_dependencies(curl_project openssl_project) endif() + + if (PROJECT_IS_DARWIN) + add_dependencies(curl_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/json.cmake b/cmake/libraries/json.cmake index 632e6ba6..d15463c8 100644 --- a/cmake/libraries/json.cmake +++ b/cmake/libraries/json.cmake @@ -18,11 +18,16 @@ if(PROJECT_ENABLE_JSON) 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) + + if (PROJECT_IS_DARWIN) + add_dependencies(json_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/libsodium.cmake b/cmake/libraries/libsodium.cmake index b547b592..69e4c7e5 100644 --- a/cmake/libraries/libsodium.cmake +++ b/cmake/libraries/libsodium.cmake @@ -44,5 +44,9 @@ if(PROJECT_ENABLE_LIBSODIUM) ) list(APPEND PROJECT_DEPENDENCIES libsodium_project) + + if (PROJECT_IS_DARWIN) + add_dependencies(libsodium_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/openssl.cmake b/cmake/libraries/openssl.cmake index e90d50ef..66fcb76e 100644 --- a/cmake/libraries/openssl.cmake +++ b/cmake/libraries/openssl.cmake @@ -55,5 +55,8 @@ if(PROJECT_ENABLE_OPENSSL) ) list(APPEND PROJECT_DEPENDENCIES openssl_project) + if (PROJECT_IS_DARWIN) + add_dependencies(openssl_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/pugixml.cmake b/cmake/libraries/pugixml.cmake index 6427f11a..3d55e0f6 100644 --- a/cmake/libraries/pugixml.cmake +++ b/cmake/libraries/pugixml.cmake @@ -20,8 +20,13 @@ if(PROJECT_ENABLE_PUGIXML) 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) + + if (PROJECT_IS_DARWIN) + add_dependencies(pugixml_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/rocksdb.cmake b/cmake/libraries/rocksdb.cmake index 123748af..c1daed07 100644 --- a/cmake/libraries/rocksdb.cmake +++ b/cmake/libraries/rocksdb.cmake @@ -14,6 +14,7 @@ if(PROJECT_ENABLE_ROCKSDB) 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 @@ -32,5 +33,9 @@ if(PROJECT_ENABLE_ROCKSDB) ) list(APPEND PROJECT_DEPENDENCIES rocksdb_project) + + if (PROJECT_IS_DARWIN) + add_dependencies(rocksdb_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/spdlog.cmake b/cmake/libraries/spdlog.cmake index 21972d54..8e2ec7e0 100644 --- a/cmake/libraries/spdlog.cmake +++ b/cmake/libraries/spdlog.cmake @@ -15,11 +15,16 @@ if(PROJECT_ENABLE_SPDLOG) 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) + + if (PROJECT_IS_DARWIN) + add_dependencies(spdlog_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/sqlite.cmake b/cmake/libraries/sqlite.cmake index b37e8958..457b539f 100644 --- a/cmake/libraries/sqlite.cmake +++ b/cmake/libraries/sqlite.cmake @@ -25,5 +25,9 @@ if(PROJECT_ENABLE_SQLITE) ) list(APPEND PROJECT_DEPENDENCIES sqlite_project) + + if (PROJECT_IS_DARWIN) + add_dependencies(sqlite_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/stduuid.cmake b/cmake/libraries/stduuid.cmake index 87ffc05a..f107162c 100644 --- a/cmake/libraries/stduuid.cmake +++ b/cmake/libraries/stduuid.cmake @@ -16,11 +16,16 @@ if(PROJECT_ENABLE_STDUUID) 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) + + if (PROJECT_IS_DARWIN) + add_dependencies(stduuid_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/testing.cmake b/cmake/libraries/testing.cmake index 5161d42e..9d32f1ff 100644 --- a/cmake/libraries/testing.cmake +++ b/cmake/libraries/testing.cmake @@ -10,8 +10,13 @@ if (PROJECT_ENABLE_TESTING) 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) + + if (PROJECT_IS_DARWIN) + add_dependencies(gtest_project zlib_project) + endif() endif() endif() diff --git a/cmake/libraries/zlib.cmake b/cmake/libraries/zlib.cmake new file mode 100644 index 00000000..90a4dda2 --- /dev/null +++ b/cmake/libraries/zlib.cmake @@ -0,0 +1,16 @@ +if(PROJECT_IS_DARWIN) + if(NOT PROJECT_BUILD) + ExternalProject_Add(zlib_project + PREFIX external + URL ${PROJECT_3RD_PARTY_DIR}/mingw64/zlib-${ZLIB_VERSION}.tar.gz + URL_HASH SHA256=${ZLIB_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 zlib_project) + endif() +endif() diff --git a/cmake/os.cmake b/cmake/os.cmake index 7a725240..f4fcd836 100644 --- a/cmake/os.cmake +++ b/cmake/os.cmake @@ -9,3 +9,11 @@ endif() if(PROJECT_REQUIRE_ALPINE AND NOT PROJECT_IS_ALPINE AND PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX) message(FATAL_ERROR "Project requires Alpine Linux to build") endif() + +if (PROJECT_IS_DARWIN) + if (PROJECT_IS_ARM64) + set(CMAKE_OSX_ARCHITECTURES "arm64") + else() + set(CMAKE_OSX_ARCHITECTURES "x86_64") + endif() +endif() diff --git a/cmake/settings.cmake b/cmake/settings.cmake index cd2e6ef9..8a0898b8 100644 --- a/cmake/settings.cmake +++ b/cmake/settings.cmake @@ -38,10 +38,6 @@ if(PROJECT_IS_MINGW) /mingw64/lib /mingw64/lib64 ) -elseif(PROJECT_IS_DARWIN) - list(PREPEND CMAKE_PREFIX_PATH - /opt/homebrew/opt/zlib - ) endif() include_directories(BEFORE SYSTEM diff --git a/support/3rd_party/libsodium_configure.sh b/support/3rd_party/libsodium_configure.sh index ae92dc45..e963164b 100755 --- a/support/3rd_party/libsodium_configure.sh +++ b/support/3rd_party/libsodium_configure.sh @@ -2,6 +2,11 @@ if [ "$1" == "mingw64" ]; then HOST_CFG=--host=x86_64-w64-mingw32 +elif [ "$(uname -s)" == "Darwin" ] && [ "$(uname -m)" == "arm64" ] && + [ "${PROJECT_IS_ARM64}" == "0" ]; then + HOST_CFG="--host=x86_64-apple-darwin" + export CC="clang -arch x86_64" + export CXX="clang++ -arch x86_64" fi CFLAGS="-O3 -fomit-frame-pointer -march=$2 -mtune=generic" ./configure \