From 193157812f1cd835505c444672425eda7eecc06c Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Tue, 11 Jul 2023 17:30:16 +0100 Subject: [PATCH 1/2] CMake: Add mingw toolchain file --- toolchain_mingw.cmake | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 toolchain_mingw.cmake diff --git a/toolchain_mingw.cmake b/toolchain_mingw.cmake new file mode 100644 index 000000000..3518c3ad3 --- /dev/null +++ b/toolchain_mingw.cmake @@ -0,0 +1,15 @@ +set(MINGW_TRIPLE "" CACHE STRING "MinGW compiler target architecture triple") + +set(CMAKE_RC_COMPILER ${MINGW_TRIPLE}-windres) +set(CMAKE_C_COMPILER ${MINGW_TRIPLE}-clang) +set(CMAKE_CXX_COMPILER ${MINGW_TRIPLE}-clang++) +set(CMAKE_DLLTOOL ${MINGW_TRIPLE}-dlltool) + +# Compile everything as static to avoid requiring the MinGW runtime libraries, force page aligned sections so that +# debug symbols work correctly, and disable loop alignment to workaround an LLVM bug +# (https://github.com/llvm/llvm-project/issues/47432) +set(CMAKE_SHARED_LINKER_FLAGS_INIT "-static -static-libgcc -static-libstdc++ -Wl,--file-alignment=4096,/mllvm:-align-loops=1") +set(CMAKE_EXE_LINKER_FLAGS_INIT "-static -static-libgcc -static-libstdc++ -Wl,--file-alignment=4096,/mllvm:-align-loops=1") + +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR ${MINGW_TRIPLE}) From 8b2be809ffeed143fc0684d71c0027e34b277422 Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Tue, 15 Aug 2023 21:15:53 +0100 Subject: [PATCH 2/2] CI: Update to use mingw toolchain file --- .github/workflows/mingw_build.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/mingw_build.yml b/.github/workflows/mingw_build.yml index db83839a2..7ab74c2a4 100644 --- a/.github/workflows/mingw_build.yml +++ b/.github/workflows/mingw_build.yml @@ -26,17 +26,18 @@ jobs: - name: Set runner label run: echo "runner_label=${{ matrix.arch[1] }}" >> $GITHUB_ENV + - name: Add MingGW to PATH + run: echo "$HOME/llvm-mingw/build/bin/" >> $GITHUB_PATH + - name: Set CC x86 if: matrix.arch[1] == 'x64' run: | - echo "CC=$HOME/llvm-mingw/build/bin/x86_64-w64-mingw32-clang" >> $GITHUB_ENV - echo "CXX=$HOME/llvm-mingw/build/bin/x86_64-w64-mingw32-clang++" >> $GITHUB_ENV + echo "MINGW_TRIPLE=x86_64-w64-mingw32" >> $GITHUB_ENV - name: Set CC Arm64 if: matrix.arch[1] == 'ARM64' run: | - echo "CC=$HOME/llvm-mingw/build/bin/aarch64-w64-mingw32-clang" >> $GITHUB_ENV - echo "CXX=$HOME/llvm-mingw/build/bin/aarch64-w64-mingw32-clang++" >> $GITHUB_ENV + echo "MINGW_TRIPLE=aarch64-w64-mingw32" >> $GITHUB_ENV - name: Set rootfs paths run: | @@ -73,7 +74,7 @@ jobs: # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja -DENABLE_LTO=False -DENABLE_ASSERTIONS=True -DENABLE_X86_HOST_DEBUG=True -DENABLE_INTERPRETER=False -DBUILD_TESTS=False -DENABLE_JEMALLOC=False -DENABLE_JEMALLOC_GLIBC_ALLOC=False -DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build/install + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/toolchain_mingw.cmake -DMINGW_TRIPLE=$MINGW_TRIPLE -G Ninja -DENABLE_LTO=False -DENABLE_ASSERTIONS=True -DENABLE_X86_HOST_DEBUG=True -DENABLE_INTERPRETER=False -DBUILD_TESTS=False -DENABLE_JEMALLOC=False -DENABLE_JEMALLOC_GLIBC_ALLOC=False -DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build/install - name: Build working-directory: ${{runner.workspace}}/build