cmake_minimum_required(VERSION 3.10)
project(vibe5_metal)

# C++ estándar
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# Buscar SDL3
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)

# Crear ejecutable principal
add_executable(vibe5_metal source/main.cpp)

# Solo en macOS, usar Objective-C++
if(APPLE)
    set_source_files_properties(source/main.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++")

    # Frameworks necesarios en macOS
    find_library(METAL_FRAMEWORK Metal)
    find_library(QUARTZCORE_FRAMEWORK QuartzCore)
    find_library(FOUNDATION_FRAMEWORK Foundation)
    find_library(APPKIT_FRAMEWORK AppKit)

    target_link_libraries(vibe5_metal
        SDL3::SDL3
        ${METAL_FRAMEWORK}
        ${QUARTZCORE_FRAMEWORK}
        ${FOUNDATION_FRAMEWORK}
        ${APPKIT_FRAMEWORK}
    )
else()
    target_link_libraries(vibe5_metal SDL3::SDL3)
endif()

# Definir macro para macOS
if(APPLE)
    target_compile_definitions(vibe5_metal PRIVATE __APPLE__)
endif()

# Ubicación del ejecutable
set_target_properties(vibe5_metal PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})