From 4089fca87cec3f5c598c7a84e2dfdd92ff8fdc3e Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Tue, 30 Jan 2024 13:23:14 -0600 Subject: [PATCH] msys2 support --- .cspell/words.txt | 7 +++++++ cmake/boost.cmake | 38 ++++++++++++++++++++++++++------------ cmake/curl.cmake | 18 +++++++++++++++++- cmake/libsodium.cmake | 6 +++++- cmake/openssl.cmake | 15 +++++++++++---- cmake/options.cmake | 10 ++++++++-- cmake/unittests.cmake | 18 +++++++++++++----- cmake/zlib.cmake | 6 +++++- scripts/setup_msys2.cmd | 6 ++++++ scripts/setup_msys2.sh | 18 +++++++++++++++++- 10 files changed, 115 insertions(+), 27 deletions(-) create mode 100644 scripts/setup_msys2.cmd diff --git a/.cspell/words.txt b/.cspell/words.txt index 83857d96..ef8d8f7a 100644 --- a/.cspell/words.txt +++ b/.cspell/words.txt @@ -113,6 +113,8 @@ libaws libbfb libbfd libboost_system +libbrotlicommon +libbrotlidec libc libcrypto libcurl @@ -123,7 +125,9 @@ libgmock libgtest libhttpserver libiberty +libiconv libmicrohttpd +libnghttp2 libosxfuse libpthread_library librepertory @@ -131,7 +135,10 @@ librocksdb libsframe_library libsodium libstdc +libuinstring +libunistring libuuid +libwldap32 libz libzlibstatic libzstd diff --git a/cmake/boost.cmake b/cmake/boost.cmake index f1428103..26abe202 100644 --- a/cmake/boost.cmake +++ b/cmake/boost.cmake @@ -1,16 +1,30 @@ if (MINGW) - include_directories(SYSTEM /mingw/include/boost-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}) - set(Boost_LIBRARIES - /mingw64/lib/libboost_system.a - /mingw64/lib/libboost_atomic.a - /mingw64/lib/libboost_chrono.a - /mingw64/lib/libboost_date_time.a - /mingw64/lib/libboost_filesystem.a - /mingw64/lib/libboost_random.a - /mingw64/lib/libboost_regex.a - /mingw64/lib/libboost_serialization.a - /mingw64/lib/libboost_thread.a - ) + include_directories(SYSTEM /mingw64/include/boost-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}) + if (CMAKE_HOST_WIN32) + set(Boost_LIBRARIES + libboost_system-mt.a + libboost_atomic-mt.a + libboost_chrono-mt.a + libboost_date_time-mt.a + libboost_filesystem-mt.a + libboost_random-mt.a + libboost_regex-mt.a + libboost_serialization-mt.a + libboost_thread-mt.a + ) + else() + set(Boost_LIBRARIES + /mingw64/lib/libboost_system.a + /mingw64/lib/libboost_atomic.a + /mingw64/lib/libboost_chrono.a + /mingw64/lib/libboost_date_time.a + /mingw64/lib/libboost_filesystem.a + /mingw64/lib/libboost_random.a + /mingw64/lib/libboost_regex.a + /mingw64/lib/libboost_serialization.a + /mingw64/lib/libboost_thread.a + ) + endif() else() set(BOOST_VERSION ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION}) set(BOOST_VERSION2 ${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}) diff --git a/cmake/curl.cmake b/cmake/curl.cmake index f9a35dad..a50fff70 100644 --- a/cmake/curl.cmake +++ b/cmake/curl.cmake @@ -1,6 +1,22 @@ if (MINGW) find_package(CURL REQUIRED) - set(CURL_LIBRARIES /mingw64/lib/libcurl.a) + if (CMAKE_HOST_WIN32) + set(CURL_LIBRARIES + libcurl.a + libnghttp2.a + libidn2.a + libssh2.a + libpsl.a + libwldap32.a + libzstd.a + libunistring.a + libbrotlidec.a + libbrotlicommon.a + libiconv.a + ) + else() + set(CURL_LIBRARIES /mingw64/lib/libcurl.a) + endif() else() set(CURL_PROJECT_NAME curl_${CURL_VERSION}) set(CURL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${CURL_PROJECT_NAME}) diff --git a/cmake/libsodium.cmake b/cmake/libsodium.cmake index 513aca87..e68570d4 100644 --- a/cmake/libsodium.cmake +++ b/cmake/libsodium.cmake @@ -1,7 +1,11 @@ if (MINGW) set(sodium_USE_STATIC_LIBS ON) find_package(Sodium REQUIRED) - set(LIBSODIUM_LIBRARIES /mingw64/lib/libsodium.a) + if (CMAKE_HOST_WIN32) + set(LIBSODIUM_LIBRARIES libsodium.a) + else() + set(LIBSODIUM_LIBRARIES /mingw64/lib/libsodium.a) + endif() else() set(LIBSODIUM_PROJECT_NAME libsodium_${LIBSODIUM_VERSION}) set(LIBSODIUM_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${LIBSODIUM_PROJECT_NAME}) diff --git a/cmake/openssl.cmake b/cmake/openssl.cmake index f3c8eb49..4227fdd0 100644 --- a/cmake/openssl.cmake +++ b/cmake/openssl.cmake @@ -1,10 +1,17 @@ if (MINGW) set($ENV:{OPENSSL_ROOT_DIR} /mingw64) find_package(OpenSSL REQUIRED) - set(OPENSSL_LIBRARIES - /mingw64/lib64/libssl.a - /mingw64/lib64/libcrypto.a - ) + if (CMAKE_HOST_WIN32) + set(OPENSSL_LIBRARIES + libssl.a + libcrypto.a + ) + else() + set(OPENSSL_LIBRARIES + /mingw64/lib64/libssl.a + /mingw64/lib64/libcrypto.a + ) + endif() else() if (IS_CLANG_COMPILER) set(OPENSSL_COMPILE_TYPE_EXTRA -clang) diff --git a/cmake/options.cmake b/cmake/options.cmake index e86bcb76..44e0cc59 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -2,10 +2,16 @@ option(REPERTORY_ENABLE_TESTING "Enable testing" ON) option(REPERTORY_ENABLE_S3 "Enable S3 mount support" OFF) 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) 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() diff --git a/cmake/unittests.cmake b/cmake/unittests.cmake index c85a3475..64a41052 100644 --- a/cmake/unittests.cmake +++ b/cmake/unittests.cmake @@ -14,11 +14,19 @@ if (REPERTORY_ENABLE_TESTING) if (MINGW) find_package(GTest REQUIRED) - set(GTEST_LIBRARIES - /mingw64/lib/libgmock.a - /mingw64/lib/libgtest.a - /mingw64/lib/libgtest_main.a - ) + if (CMAKE_HOST_WIN32) + set(GTEST_LIBRARIES + libgmock.a + libgtest.a + libgtest_main.a + ) + else() + set(GTEST_LIBRARIES + /mingw64/lib/libgmock.a + /mingw64/lib/libgtest.a + /mingw64/lib/libgtest_main.a + ) + endif() else() set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION}) set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME}) diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake index 9f318a9c..79a8e425 100644 --- a/cmake/zlib.cmake +++ b/cmake/zlib.cmake @@ -1,6 +1,10 @@ if (MINGW) find_package(ZLIB REQUIRED) - set(ZLIB_LIBRARIES /mingw64/lib/libz.a) + if (CMAKE_HOST_WIN32) + set(ZLIB_LIBRARIES libz.a) + else() + set(ZLIB_LIBRARIES /mingw64/lib/libz.a) + endif() else() set(ZLIB_PROJECT_NAME zlib_${ZLIB_VERSION}) set(ZLIB_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${ZLIB_PROJECT_NAME}) diff --git a/scripts/setup_msys2.cmd b/scripts/setup_msys2.cmd new file mode 100644 index 00000000..2d05d198 --- /dev/null +++ b/scripts/setup_msys2.cmd @@ -0,0 +1,6 @@ +@echo off + +pushd "%~dp0%" + call mingw64 -no-start ./setup_msys2.sh + call mingw64 -no-start ./setup_msys2.sh +popd diff --git a/scripts/setup_msys2.sh b/scripts/setup_msys2.sh index 1d11e7c9..0f1c7bc3 100755 --- a/scripts/setup_msys2.sh +++ b/scripts/setup_msys2.sh @@ -1,10 +1,26 @@ +#!/bin/bash + pacman -Sqyuu --noconfirm && - pacman -S --noconfirm msys2-keyring && + pacman -S --noconfirm --needed --disable-download-timeout msys2-keyring && pacman -S --noconfirm --needed --disable-download-timeout \ + mingw64/mingw-w64-x86_64-boost \ + mingw64/mingw-w64-x86_64-clang-tools-extra \ mingw64/mingw-w64-x86_64-cmake \ + mingw64/mingw-w64-x86_64-curl \ + mingw64/mingw-w64-x86_64-fmt \ mingw64/mingw-w64-x86_64-gcc \ mingw64/mingw-w64-x86_64-gdb \ + mingw64/mingw-w64-x86_64-gtest \ + mingw64/mingw-w64-x86_64-gtkmm3 \ + mingw64/mingw-w64-x86_64-libsodium \ mingw64/mingw-w64-x86_64-make \ + mingw64/mingw-w64-x86_64-openssl \ + mingw64/mingw-w64-x86_64-sfml \ + mingw64/mingw-w64-x86_64-spdlog \ + mingw64/mingw-w64-x86_64-sqlite3 \ mingw64/mingw-w64-x86_64-toolchain \ + mingw64/mingw-w64-x86_64-vlc \ + mingw64/mingw-w64-x86_64-wxwidgets3.2-msw \ + mingw64/mingw-w64-x86_64-zlib \ msys/git \ make