From 573fdf0608e14c64b1bb5663110935c6c32cd99d Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 27 Feb 2024 15:47:34 +0100 Subject: [PATCH] [ci,mingw] use posix toolchain we require std::thread, std::mutex, ... which mingw does not provide unless the -posix toolchain are used. --- scripts/mingw.sh | 95 +++++++++++++++++++++---------------------- scripts/mingw64.cmake | 25 +++++++----- 2 files changed, 61 insertions(+), 59 deletions(-) diff --git a/scripts/mingw.sh b/scripts/mingw.sh index f2c659618..3096929d7 100755 --- a/scripts/mingw.sh +++ b/scripts/mingw.sh @@ -69,52 +69,51 @@ cmake \ cmake --build "$BUILD_BASE/cJSON" cmake --install "$BUILD_BASE/cJSON" -# TODO: Deactivated until mingw supports c++ standard required for sdl-client -#git clone --depth 1 -b release-2.30.0 https://github.com/libsdl-org/SDL.git -#cmake \ -# -GNinja \ -# -DCMAKE_TOOLCHAIN_FILE="$SCRIPT_PATH/mingw64.cmake" \ -# -DCMAKE_PREFIX_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ -# -DCMAKE_MODULE_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ -# -DCMAKE_INSTALL_PREFIX="$INSTALL_BASE" \ -# -S SDL \ -# -B "$BUILD_BASE/SDL" \ -# -DSDL_TEST=OFF \ -# -DSDL_TESTS=OFF \ -# -DSDL_STATIC_PIC=ON -#cmake --build "$BUILD_BASE/SDL" -#cmake --install "$BUILD_BASE/SDL" -# -#git clone --depth 1 --shallow-submodules --recurse-submodules -b release-2.22.0 https://github.com/libsdl-org/SDL_ttf.git -#cmake \ -# -GNinja \ -# -DCMAKE_TOOLCHAIN_FILE="$SCRIPT_PATH/mingw64.cmake" \ -# -DCMAKE_PREFIX_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ -# -DCMAKE_MODULE_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ -# -DCMAKE_INSTALL_PREFIX="$INSTALL_BASE" \ -# -S SDL_ttf \ -# -B "$BUILD_BASE/SDL_ttf" \ -# -DSDL2TTF_HARFBUZZ=ON \ -# -DSDL2TTF_FREETYPE=ON \ -# -DSDL2TTF_VENDORED=ON \ -# -DFT_DISABLE_ZLIB=OFF \ -# -DSDL2TTF_SAMPLES=OFF -#cmake --build "$BUILD_BASE/SDL_ttf" -#cmake --install "$BUILD_BASE/SDL_ttf" -# -#git clone --depth 1 --shallow-submodules --recurse-submodules -b release-2.8.2 https://github.com/libsdl-org/SDL_image.git -#cmake \ -# -GNinja \ -# -DCMAKE_TOOLCHAIN_FILE="$SCRIPT_PATH/mingw64.cmake" \ -# -DCMAKE_PREFIX_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ -# -DCMAKE_MODULE_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ -# -DCMAKE_INSTALL_PREFIX="$INSTALL_BASE" \ -# -S SDL_image \ -# -B "$BUILD_BASE/SDL_image" \ -# -DSDL2IMAGE_SAMPLES=OFF \ -# -DSDL2IMAGE_DEPS_SHARED=OFF -#cmake --build "$BUILD_BASE/SDL_image" -#cmake --install "$BUILD_BASE/SDL_image" +git clone --depth 1 -b release-2.30.0 https://github.com/libsdl-org/SDL.git +cmake \ + -GNinja \ + -DCMAKE_TOOLCHAIN_FILE="$SCRIPT_PATH/mingw64.cmake" \ + -DCMAKE_PREFIX_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ + -DCMAKE_MODULE_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ + -DCMAKE_INSTALL_PREFIX="$INSTALL_BASE" \ + -S SDL \ + -B "$BUILD_BASE/SDL" \ + -DSDL_TEST=OFF \ + -DSDL_TESTS=OFF \ + -DSDL_STATIC_PIC=ON +cmake --build "$BUILD_BASE/SDL" +cmake --install "$BUILD_BASE/SDL" + +git clone --depth 1 --shallow-submodules --recurse-submodules -b release-2.22.0 https://github.com/libsdl-org/SDL_ttf.git +cmake \ + -GNinja \ + -DCMAKE_TOOLCHAIN_FILE="$SCRIPT_PATH/mingw64.cmake" \ + -DCMAKE_PREFIX_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ + -DCMAKE_MODULE_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ + -DCMAKE_INSTALL_PREFIX="$INSTALL_BASE" \ + -S SDL_ttf \ + -B "$BUILD_BASE/SDL_ttf" \ + -DSDL2TTF_HARFBUZZ=ON \ + -DSDL2TTF_FREETYPE=ON \ + -DSDL2TTF_VENDORED=ON \ + -DFT_DISABLE_ZLIB=OFF \ + -DSDL2TTF_SAMPLES=OFF +cmake --build "$BUILD_BASE/SDL_ttf" +cmake --install "$BUILD_BASE/SDL_ttf" + +git clone --depth 1 --shallow-submodules --recurse-submodules -b release-2.8.2 https://github.com/libsdl-org/SDL_image.git +cmake \ + -GNinja \ + -DCMAKE_TOOLCHAIN_FILE="$SCRIPT_PATH/mingw64.cmake" \ + -DCMAKE_PREFIX_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ + -DCMAKE_MODULE_PATH="$INSTALL_BASE/lib/cmake;$INSTALL_BASE/lib;$INSTALL_BASE" \ + -DCMAKE_INSTALL_PREFIX="$INSTALL_BASE" \ + -S SDL_image \ + -B "$BUILD_BASE/SDL_image" \ + -DSDL2IMAGE_SAMPLES=OFF \ + -DSDL2IMAGE_DEPS_SHARED=OFF +cmake --build "$BUILD_BASE/SDL_image" +cmake --install "$BUILD_BASE/SDL_image" git clone --depth 1 --shallow-submodules --recurse-submodules -b v1.0.27 https://github.com/libusb/libusb-cmake.git cmake \ @@ -172,9 +171,7 @@ cmake \ -DWITH_SAMPLE=ON \ -DWITH_PLATFORM_SERVER=OFF \ -DUSE_UNWIND=OFF \ - -DSDL_USE_COMPILED_RESOURCES=OFF \ # off due helper utility being compiled by mingw/wrong arch - -DWITH_CLIENT_SDL=OFF \ # off due to lacking c++ support in mingw - -DWITH_PROXY_MODULES=OFF \ # off due to lacking c++ support in mingw + -DSDL_USE_COMPILED_RESOURCES=OFF \ -DWITH_SWSCALE=OFF \ -DWITH_FFMPEG=OFF \ -DWITH_OPENH264=ON \ diff --git a/scripts/mingw64.cmake b/scripts/mingw64.cmake index 08596bf7d..42612dde1 100644 --- a/scripts/mingw64.cmake +++ b/scripts/mingw64.cmake @@ -2,18 +2,21 @@ SET(CMAKE_SYSTEM_NAME Windows CACHE STRING "toolchain default") SET(CMAKE_SYSTEM_PROCESSOR amd64 CACHE STRING "toolchain default") -SET(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-gcc CACHE STRING "toolchain default") -SET(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-g++ CACHE STRING "toolchain default") +# https://github.com/meganz/mingw-std-threads +# +# we simply compile with the POSIX C++ primitives, but faster is using the wrapper +SET(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-gcc-posix CACHE STRING "toolchain default") +SET(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-g++-posix CACHE STRING "toolchain default") SET(CMAKE_RC_COMPILER_INIT /usr/bin/x86_64-w64-mingw32-windres CACHE STRING "toolchain default") SET(CMAKE_RC_COMPILER /usr/bin/x86_64-w64-mingw32-windres CACHE STRING "toolchain default") -SET(CMAKE_AR /usr/bin/x86_64-w64-mingw32-ar CACHE STRING "toolchain default") -SET(CMAKE_C_COMPILER_AR /usr/bin/x86_64-w64-mingw32-ar CACHE STRING "toolchain default") -SET(CMAKE_CXX_COMPILER_AR /usr/bin/x86_64-w64-mingw32-ar CACHE STRING "toolchain default") -SET(CMAKE_RANLIB /usr/bin/x86_64-w64-mingw32-ranlib CACHE STRING "toolchain default") -SET(CMAKE_C_COMPILER_RANLIB /usr/bin/x86_64-w64-mingw32-ranlib CACHE STRING "toolchain default") -SET(CMAKE_CXX_COMPILER_RANLIB /usr/bin/x86_64-w64-mingw32-ranlib CACHE STRING "toolchain default") -SET(CMAKE_LINKER /usr/bin/x86_64-w64-mingw32-ld CACHE STRING "toolchain default") -SET(CMAKE_NM /usr/bin/x86_64-w64-mingw32-nm CACHE STRING "toolchain default") +SET(CMAKE_AR /usr/bin/x86_64-w64-mingw32-gcc-ar-posix CACHE STRING "toolchain default") +SET(CMAKE_C_COMPILER_AR /usr/bin/x86_64-w64-mingw32-gcc-ar-posix CACHE STRING "toolchain default") +SET(CMAKE_CXX_COMPILER_AR /usr/bin/x86_64-w64-mingw32-gcc-ar-posix CACHE STRING "toolchain default") +SET(CMAKE_RANLIB /usr/bin/x86_64-w64-mingw32-gcc-ranlib-posix CACHE STRING "toolchain default") +SET(CMAKE_C_COMPILER_RANLIB /usr/bin/x86_64-w64-mingw32-gcc-ranlib-posix CACHE STRING "toolchain default") +SET(CMAKE_CXX_COMPILER_RANLIB /usr/bin/x86_64-w64-mingw32-gcc-ranlib-posix CACHE STRING "toolchain default") +SET(CMAKE_LINKER /usr/bin/x86_64-w64-mingw32-ld-posix CACHE STRING "toolchain default") +SET(CMAKE_NM /usr/bin/x86_64-w64-mingw32-nm-posix CACHE STRING "toolchain default") SET(CMAKE_READELF /usr/bin/x86_64-w64-mingw32-readelf CACHE STRING "toolchain default") SET(CMAKE_OBJCOPY /usr/bin/x86_64-w64-mingw32-objcopy CACHE STRING "toolchain default") SET(CMAKE_OBJDUMP /usr/bin/x86_64-w64-mingw32-objdump CACHE STRING "toolchain default") @@ -25,6 +28,8 @@ SET(CMAKE_SYSROOT /usr/x86_64-w64-mingw32 CACHE STRING "toolchain default") #set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY CACHE STRING "toolchain default") #set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY CACHE STRING "toolchain default") +set(CMAKE_WINDOWS_VERSION "WIN10" CACHE STRING "toolchain default") set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "toolchain default") set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY ON CACHE BOOL "toolchain default") set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "toolchain default") +set(THREADS_PREFER_PTHREAD_FLAG ON CACHE BOOL "toolchain default")