cmake_minimum_required(VERSION 3.26) project(gpt_oss LANGUAGES C CXX) # If not defined externally, auto-detect if(NOT DEFINED GPTOSS_BUILD_METAL) if(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm64") message(STATUS "Apple Silicon detected → enabling GPTOSS_BUILD_METAL") set(GPTOSS_BUILD_METAL ON) else() message(STATUS "Non-Apple Silicon → disabling GPTOSS_BUILD_METAL") set(GPTOSS_BUILD_METAL OFF) endif() else() message(STATUS "GPTOSS_BUILD_METAL manually set to: ${GPTOSS_BUILD_METAL}") endif() # Now declare it as a cache variable (respects user-provided value) set(GPTOSS_BUILD_METAL "${GPTOSS_BUILD_METAL}" CACHE BOOL "Enable Metal backend") if(GPTOSS_BUILD_METAL) enable_language(OBJC) add_subdirectory(gpt_oss/metal) endif()