WIP: mingw64 gcc/clang support #278

Closed
xbzk wants to merge 1 commit from gcc/clang_support into master
Member

HOW TO TEST:

Compile in MSVC. If it's safe, then it's safe to approve.

HOW TO COMPILE IN MINGW64:

GCC:
export CC="ccache gcc" CXX="ccache g++"

cmake -S . -B build-gcc -G Ninja -DYUZU_USE_CPM=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=ON -DYUZU_USE_BUNDLED_QT=OFF -DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_BUNDLED_FFMPEG=OFF -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_ASM_COMPILER=gcc

(Alternative: WITH LTO:
cmake -S . -B build-gcc-lto -G Ninja -DYUZU_USE_CPM=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=ON -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_AR=gcc-ar -DCMAKE_RANLIB=gcc-ranlib -DCMAKE_NM=gcc-nm -DCMAKE_C_FLAGS="-O3 -flto -fno-fat-lto-objects" -DCMAKE_CXX_FLAGS="-O3 -flto -fno-fat-lto-objects" -DCMAKE_EXE_LINKER_FLAGS="-flto" -DCMAKE_SHARED_LINKER_FLAGS="-flto"
)

cmake --build build-gcc -j$(nproc)

CLANG:
export CC="ccache clang" CXX="ccache clang++"

cmake -S . -B build-clang -G Ninja -DYUZU_USE_CPM=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=ON -DYUZU_USE_BUNDLED_QT=OFF -DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_BUNDLED_FFMPEG=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_ASM_COMPILER=clang

cmake --build build-clang -j$(nproc)

MSVC (cli):
Open “x64 Native Tools Command Prompt for VS 2022” (or Developer PowerShell).

cmake -S . -B build-msvc -G "Visual Studio 17 2022" -A x64 -DYUZU_USE_CPM=ON -DENABLE_QT=ON -DYUZU_ENABLE_LTO=ON

cmake --build build-msvc --config Release --parallel

CHANGES:

-pre released RotateRight32 and RotateRight64 defs in src\dynarmic\src\dynarmic\ir\opcodes.h
-removed unecessary #define stat _stat64 macro in src\core\file_sys\vfs\vfs_real.cpp
-added target link libraries for specific case (win32 & (gcc || clang)) in src\yuzu_cmd\CMakeLists.txt and src\yuzu\CMakeLists.txt
-avoided isDarkMode never used error with [ [maybe_unused] ] in src\yuzu\main.cpp
-covered #pragma comment(lib, "Dwmapi.lib") with a #ifdef _MSC_VER condition in src\yuzu\main.cpp
-covered #pragma comment(lib, "wlanapi.lib") with a #ifdef _MSC_VER condition on multiple files

### **HOW TO TEST:** Compile in MSVC. If it's safe, then it's safe to approve. ### **HOW TO COMPILE IN MINGW64:** **GCC:** export CC="ccache gcc" CXX="ccache g++" cmake -S . -B build-gcc -G Ninja -DYUZU_USE_CPM=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=ON -DYUZU_USE_BUNDLED_QT=OFF -DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_BUNDLED_FFMPEG=OFF -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_ASM_COMPILER=gcc (Alternative: **WITH LTO:** cmake -S . -B build-gcc-lto -G Ninja -DYUZU_USE_CPM=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=ON -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_AR=gcc-ar -DCMAKE_RANLIB=gcc-ranlib -DCMAKE_NM=gcc-nm -DCMAKE_C_FLAGS="-O3 -flto -fno-fat-lto-objects" -DCMAKE_CXX_FLAGS="-O3 -flto -fno-fat-lto-objects" -DCMAKE_EXE_LINKER_FLAGS="-flto" -DCMAKE_SHARED_LINKER_FLAGS="-flto" ) cmake --build build-gcc -j$(nproc) **CLANG:** export CC="ccache clang" CXX="ccache clang++" cmake -S . -B build-clang -G Ninja -DYUZU_USE_CPM=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=ON -DYUZU_USE_BUNDLED_QT=OFF -DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_BUNDLED_FFMPEG=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_ASM_COMPILER=clang cmake --build build-clang -j$(nproc) **MSVC (cli):** Open “x64 Native Tools Command Prompt for VS 2022” (or Developer PowerShell). cmake -S . -B build-msvc -G "Visual Studio 17 2022" -A x64 -DYUZU_USE_CPM=ON -DENABLE_QT=ON -DYUZU_ENABLE_LTO=ON cmake --build build-msvc --config Release --parallel ### **CHANGES:** -pre released RotateRight32 and RotateRight64 defs in src\dynarmic\src\dynarmic\ir\opcodes.h -removed unecessary #define stat _stat64 macro in src\core\file_sys\vfs\vfs_real.cpp -added target link libraries for specific case (win32 & (gcc || clang)) in src\yuzu_cmd\CMakeLists.txt and src\yuzu\CMakeLists.txt -avoided isDarkMode never used error with [ [maybe_unused] ] in src\yuzu\main.cpp -covered #pragma comment(lib, "Dwmapi.lib") with a #ifdef _MSC_VER condition in src\yuzu\main.cpp -covered #pragma comment(lib, "wlanapi.lib") with a #ifdef _MSC_VER condition on multiple files
xbzk added 1 commit 2025-08-18 18:36:45 +02:00
mingw64 gcc/clang support
Some checks failed
eden-license / license-header (pull_request) Failing after 29s
37f8921057
removed unnecessary undefs in src\dynarmic\src\dynarmic\ir\opcodes.h
removed unecessary #define stat _stat64 macro in src\core\file_sys\vfs\vfs_real.cpp
xbzk force-pushed gcc/clang_support from 37f8921057 to 939acbbb4d 2025-08-18 18:41:43 +02:00 Compare
Member

this will be buried and people will have to look it up, Please add it under docs/build/Windows.md

this will be buried and people will have to look it up, Please add it under docs/build/Windows.md
crueter changed title from mingw64 gcc/clang support to WIP: mingw64 gcc/clang support 2025-08-18 21:01:56 +02:00
crueter requested changes 2025-08-18 21:02:20 +02:00
crueter left a comment
Owner

Needs docs and CI scripts updated here and in the workflow repo

Needs docs and CI scripts updated here and in the workflow repo
xbzk force-pushed gcc/clang_support from 939acbbb4d to 70811426e6 2025-08-18 21:27:29 +02:00 Compare
xbzk force-pushed gcc/clang_support from 70811426e6 to 29c32d0f45 2025-08-18 21:52:13 +02:00 Compare
xbzk closed this pull request 2025-09-02 14:54:42 +02:00
All checks were successful
eden-license / license-header (pull_request) Successful in 23s
Required
Details

Pull request closed

Sign in to join this conversation.
No description provided.