mirror of
https://github.com/visualboyadvance-m/visualboyadvance-m
synced 2025-10-05 23:52:49 +02:00
Implement SDL3 for the SDL port if the CMake definition ENABLE_SDL3 is set. Implement setting the color depth for both wxWidgets and the SDL port. Fix the coloring issues in the SDL port for OpenGL. Implement 8 bit color support. Update and fix the wx port SDL sound driver. Implement SDL video in the wx port. Silence GL deprecations on macOS. Add SDL renderer selection. Fix filter for bit depths other than 32 bit. Fix GDK backend for Linux. Add Metal renderer for macOS. Fix Quartz drawing.
86 lines
2.9 KiB
CMake
86 lines
2.9 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
|
|
|
# CMakeDetermine(LANG)Compiler.cmake -> this should find the compiler for LANG and configure CMake(LANG)Compiler.cmake.in
|
|
|
|
include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
|
|
|
|
if(NOT CMAKE_Metal_COMPILER_NAMES)
|
|
set(CMAKE_Metal_COMPILER_NAMES metal)
|
|
endif()
|
|
|
|
if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
|
|
set(CMAKE_Metal_COMPILER_XCODE_TYPE sourcecode.metal)
|
|
|
|
execute_process(COMMAND xcrun --find metal
|
|
OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_VARIABLE _xcrun_err RESULT_VARIABLE _xcrun_result
|
|
)
|
|
|
|
if(_xcrun_result EQUAL 0 AND EXISTS "${_xcrun_out}")
|
|
set(CMAKE_Metal_COMPILER "${_xcrun_out}")
|
|
else()
|
|
_cmake_find_compiler_path(Metal)
|
|
endif()
|
|
else()
|
|
if(CMAKE_Metal_COMPILER)
|
|
_cmake_find_compiler_path(Metal)
|
|
else()
|
|
set(CMAKE_Metal_COMPILER_INIT NOTFOUND)
|
|
|
|
if(NOT $ENV{METALC} STREQUAL "")
|
|
get_filename_component(CMAKE_Metal_COMPILER_INIT $ENV{METALC} PROGRAM PROGRAM_ARGS CMAKE_Metal_FLAGS_ENV_INIT)
|
|
if(CMAKE_Metal_FLAGS_ENV_INIT)
|
|
set(CMAKE_Metal_COMPILER_ARG1 "${CMAKE_Metal_FLAGS_ENV_INIT}" CACHE STRING "Arguments to the Metal compiler")
|
|
endif()
|
|
if(NOT EXISTS ${CMAKE_Metal_COMPILER_INIT})
|
|
message(FATAL_ERROR "Could not find compiler set in environment variable METALC\n$ENV{METALC}.\n${CMAKE_Metal_COMPILER_INIT}")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT CMAKE_Metal_COMPILER_INIT)
|
|
set(CMAKE_Metal_COMPILER_LIST metal ${_CMAKE_TOOLCHAIN_PREFIX}metal)
|
|
endif()
|
|
|
|
_cmake_find_compiler(Metal)
|
|
endif()
|
|
|
|
mark_as_advanced(CMAKE_Metal_COMPILER)
|
|
endif()
|
|
|
|
# For Metal we need to explicitly query the version.
|
|
if(CMAKE_Metal_COMPILER AND NOT CMAKE_Metal_COMPILER_VERSION)
|
|
execute_process(
|
|
COMMAND "${CMAKE_Metal_COMPILER}" --version
|
|
OUTPUT_VARIABLE output ERROR_VARIABLE output
|
|
RESULT_VARIABLE result
|
|
TIMEOUT 10
|
|
)
|
|
message(CONFIGURE_LOG
|
|
"Running the Metal compiler: \"${CMAKE_Metal_COMPILER}\" --version\n"
|
|
"${output}\n"
|
|
)
|
|
|
|
if(output MATCHES [[metal version ([0-9]+\.[0-9]+(\.[0-9]+)?)]])
|
|
set(CMAKE_Metal_COMPILER_VERSION "${CMAKE_MATCH_1}")
|
|
if(NOT CMAKE_Metal_COMPILER_ID)
|
|
set(CMAKE_Metal_COMPILER_ID "Apple")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT _CMAKE_TOOLCHAIN_LOCATION)
|
|
get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Metal_COMPILER}" PATH)
|
|
endif ()
|
|
|
|
set(_CMAKE_PROCESSING_LANGUAGE "Metal")
|
|
include(CMakeFindBinUtils)
|
|
unset(_CMAKE_PROCESSING_LANGUAGE)
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_LIST_DIR}/CMakeMetalCompiler.cmake.in
|
|
${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake
|
|
)
|
|
|
|
set(CMAKE_Metal_COMPILER_ENV_VAR "METALC")
|