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