CMake improvements

main
Henri Vasserman 2025-01-14 12:14:20 +02:00
parent 43855a13d7
commit 5e80bbe88c
1 changed files with 33 additions and 12 deletions

View File

@ -4,26 +4,47 @@ project(xormod C)
find_package(SDL3 REQUIRED)
if(APPLE)
set(DETECTED_ACCEL_PLATFORM "METAL")
else()
set(DETECTED_ACCEL_PLATFORM "OPENGL")
endif()
set(ACCEL_PLATFORM ${DETECTED_ACCEL_PLATFORM} CACHE STRING "Acceleration")
configure_file("platform.h.in" "config/platform.h")
add_compile_options(-Wall -Wextra -Werror=return-type)
include_directories("${CMAKE_BINARY_DIR}/config")
if(APPLE)
set(DETECTED_ACCEL_PLATFORMS "METAL")
else()
set(DETECTED_ACCEL_PLATFORMS "OPENGL;VULKAN")
endif()
list(GET DETECTED_ACCEL_PLATFORMS 0 DETECTED_ACCEL_PLATFORM)
set(ACCEL_PLATFORM "${DETECTED_ACCEL_PLATFORM}" CACHE STRING "Acceleration")
set_property(CACHE ACCEL_PLATFORM PROPERTY STRINGS "${DETECTED_ACCEL_PLATFORMS}")
message(STATUS "Using acceleration platform: ${ACCEL_PLATFORM}")
if (CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|AARCH64")
message(STATUS "Using ARM64 flags")
set(ACCEL_ARCHITECTURES "native;armv8-a;armv8.1-a;armv8.2-a;armv8.3-a;armv8.4-a;armv8.5-a;armv8.6-a;armv8-r")
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "X86_64|X64|AMD64")
message(STATUS "Using x86-64 flags")
set(ACCEL_ARCHITECTURES "native;x86-64;x86-64-v2;x86-64-v3;x86-64-v4;znver1;znver2;znver3;znver4;znver5")
endif()
set(ACCEL_ARCHITECTURE "" CACHE STRING "CPU optimization architecture")
set_property(CACHE ACCEL_ARCHITECTURE PROPERTY STRINGS "${ACCEL_ARCHITECTURES}")
add_compile_options("$<$<BOOL:${ACCEL_ARCHITECTURE}>:-march=${ACCEL_ARCHITECTURE}>")
configure_file("platform.h.in" "include/platform.h")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
add_executable(xormod
"EGA9x14.c"
"field.c"
"text.c"
"picture.c"
"xormod.c"
)
set(OSD_FONT "EGA9x14" CACHE STRING "OSD font")
set_property(CACHE OSD_FONT PROPERTY STRINGS "EGA9x14;EGA8x8")
target_sources(xormod PRIVATE "${OSD_FONT}.c")
message(STATUS "OSD font set to: ${OSD_FONT}")
target_link_libraries(xormod SDL3::SDL3)
if(WIN32)
target_link_options(xormod PRIVATE "$<$<NOT:$<CONFIG:DEBUG>>:-Wl,-subsystem=windows>")
endif()