Browse Source
externals: fix Debug builds on Windows with ccache
externals: fix Debug builds on Windows with ccache
* add .cmake module * nuke unused .cmake modules Signed-off-by: Caio Oliveira <caiooliveirafarias0@gmail.com>pull/3000/head
committed by
Caio Oliveira
No known key found for this signature in database
GPG Key ID: 362DA3DC1901E080
5 changed files with 31 additions and 123 deletions
-
7CMakeLists.txt
-
19CMakeModules/DisableCCachePackage.cmake
-
58CMakeModules/MinGWClangCross.cmake
-
57CMakeModules/MinGWCross.cmake
-
13externals/CMakeLists.txt
@ -0,0 +1,19 @@ |
|||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
||||
|
# SPDX-License-Identifier: GPL-3.0-or-later |
||||
|
|
||||
|
# Disable CCache for packages that build too fast and break ccache on Windows |
||||
|
function(DisableCCacheForPackage) |
||||
|
if (WIN32 AND (CMAKE_BUILD_TYPE MATCHES "Debug|RelWithDebInfo")) |
||||
|
foreach(target_package IN LISTS ARGV) |
||||
|
if (TARGET ${target_package}) |
||||
|
message(STATUS "DisableCCacheForPackage: Disabling compiler launcher for target '${target_package}'") |
||||
|
set_target_properties(${target_package} PROPERTIES |
||||
|
C_COMPILER_LAUNCHER "" |
||||
|
CXX_COMPILER_LAUNCHER "" |
||||
|
) |
||||
|
else() |
||||
|
message(WARNING "DisableCCacheForPackage: Target '${target_package}' does not exist — skipping") |
||||
|
endif() |
||||
|
endforeach() |
||||
|
endif() |
||||
|
endfunction() |
||||
@ -1,58 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later |
|
||||
|
|
||||
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() |
|
||||
@ -1,57 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2018 tech4me <guiwanglong@gmail.com> |
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
|
|
||||
set(MINGW_PREFIX /usr/x86_64-w64-mingw32/) |
|
||||
set(CMAKE_SYSTEM_NAME Windows) |
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64) |
|
||||
# Actually a hack, w/o this will cause some strange errors |
|
||||
set(CMAKE_HOST_WIN32 TRUE) |
|
||||
|
|
||||
|
|
||||
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}gcc) |
|
||||
set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}g++) |
|
||||
set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres) |
|
||||
|
|
||||
# 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() |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue