Merge pull request #8455 from lat9nq/mingw-clang
ci/windows: Use Clang for MinGW builds
This commit is contained in:
		| @@ -1,12 +1,27 @@ | ||||
| #!/bin/bash -ex | ||||
|  | ||||
| set -e | ||||
|  | ||||
| cd /yuzu | ||||
|  | ||||
| ccache -s | ||||
|  | ||||
| mkdir build || true && cd build | ||||
| cmake .. -G Ninja -DDISPLAY_VERSION=$1 -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWCross.cmake" -DUSE_CCACHE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON | ||||
| ninja | ||||
| LDFLAGS="-fuse-ld=lld" | ||||
| # -femulated-tls required due to an incompatibility between GCC and Clang | ||||
| # TODO(lat9nq): If this is widespread, we probably need to add this to CMakeLists where appropriate | ||||
| cmake .. \ | ||||
|     -DCMAKE_BUILD_TYPE=Release \ | ||||
|     -DCMAKE_CXX_FLAGS="-femulated-tls" \ | ||||
|     -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWClangCross.cmake" \ | ||||
|     -DDISPLAY_VERSION=$1 \ | ||||
|     -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \ | ||||
|     -DENABLE_QT_TRANSLATION=ON \ | ||||
|     -DUSE_CCACHE=ON \ | ||||
|     -DYUZU_USE_BUNDLED_SDL2=OFF \ | ||||
|     -DYUZU_USE_EXTERNAL_SDL2=OFF \ | ||||
|     -GNinja | ||||
| ninja yuzu yuzu-cmd | ||||
|  | ||||
| ccache -s | ||||
|  | ||||
|   | ||||
							
								
								
									
										55
									
								
								CMakeModules/MinGWClangCross.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								CMakeModules/MinGWClangCross.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| set(MINGW_PREFIX                /usr/x86_64-w64-mingw32/) | ||||
| set(CMAKE_SYSTEM_NAME           Windows) | ||||
| set(CMAKE_SYSTEM_PROCESSOR      x86_64) | ||||
|  | ||||
| set(CMAKE_FIND_ROOT_PATH        ${MINGW_PREFIX}) | ||||
| set(SDL2_PATH                   ${MINGW_PREFIX}) | ||||
| set(MINGW_TOOL_PREFIX           ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-) | ||||
|  | ||||
| # Specify the cross compiler | ||||
| set(CMAKE_C_COMPILER            ${MINGW_TOOL_PREFIX}clang) | ||||
| set(CMAKE_CXX_COMPILER          ${MINGW_TOOL_PREFIX}clang++) | ||||
| set(CMAKE_RC_COMPILER           ${MINGW_TOOL_PREFIX}windres) | ||||
| set(CMAKE_C_COMPILER_AR         ${MINGW_TOOL_PREFIX}ar) | ||||
| set(CMAKE_CXX_COMPILER_AR       ${MINGW_TOOL_PREFIX}ar) | ||||
| set(CMAKE_C_COMPILER_RANLIB     ${MINGW_TOOL_PREFIX}ranlib) | ||||
| set(CMAKE_CXX_COMPILER_RANLIB   ${MINGW_TOOL_PREFIX}ranlib) | ||||
|  | ||||
| # Mingw tools | ||||
| set(STRIP                       ${MINGW_TOOL_PREFIX}strip) | ||||
| set(WINDRES                     ${MINGW_TOOL_PREFIX}windres) | ||||
| set(ENV{PKG_CONFIG}             ${MINGW_TOOL_PREFIX}pkg-config) | ||||
|  | ||||
| # ccache wrapper | ||||
| option(USE_CCACHE "Use ccache for compilation" OFF) | ||||
| if(USE_CCACHE) | ||||
|     find_program(CCACHE ccache) | ||||
|     if(CCACHE) | ||||
|         message(STATUS "Using ccache found in PATH") | ||||
|         set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) | ||||
|         set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) | ||||
|     else(CCACHE) | ||||
|         message(WARNING "USE_CCACHE enabled, but no ccache found") | ||||
|     endif(CCACHE) | ||||
| endif(USE_CCACHE) | ||||
|  | ||||
| # Search for programs in the build host directories | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | ||||
|  | ||||
|  | ||||
| # Echo modified cmake vars to screen for debugging purposes | ||||
| if(NOT DEFINED ENV{MINGW_DEBUG_INFO}) | ||||
|         message("") | ||||
|         message("Custom cmake vars: (blank = system default)") | ||||
|         message("-----------------------------------------") | ||||
|         message("* CMAKE_C_COMPILER                     : ${CMAKE_C_COMPILER}") | ||||
|         message("* CMAKE_CXX_COMPILER                   : ${CMAKE_CXX_COMPILER}") | ||||
|         message("* CMAKE_RC_COMPILER                    : ${CMAKE_RC_COMPILER}") | ||||
|         message("* WINDRES                              : ${WINDRES}") | ||||
|         message("* ENV{PKG_CONFIG}                      : $ENV{PKG_CONFIG}") | ||||
|         message("* STRIP                                : ${STRIP}") | ||||
|         message("* USE_CCACHE                           : ${USE_CCACHE}") | ||||
|         message("") | ||||
|         # So that the debug info only appears once | ||||
|         set(ENV{MINGW_DEBUG_INFO} SHOWN) | ||||
| endif() | ||||
		Reference in New Issue
	
	Block a user
	 Morph
					Morph