From 8f7bf116aab8a40cd417b859422b2c8ce507085f Mon Sep 17 00:00:00 2001 From: a dinosaur Date: Wed, 28 Jun 2023 06:43:46 +1000 Subject: [PATCH] old backend selector --- CMakeLists.txt | 27 +++++++-------------------- src/CMakeLists.txt | 24 ++++++++++++------------ 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ed3bb5..3463421 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,25 +2,12 @@ cmake_minimum_required(VERSION 3.3 FATAL_ERROR) project(padlab C) set(TARGET padlab) -option(USE_METAL "use Metal for drawing" ${APPLE}) -if (USE_METAL) - option(USE_OPENGL "Use OpenGL for drawing (WIP)" OFF) - option(USE_OPENGL_LEGACY "Use legacy OpenGL for drawing" OFF) - if (USE_OPENGL) - message(FATAL_ERROR "USE_METAL and USE_OPENGL are both ON but only one backend can be used at a time, turn one OFF and regenerate. (or delete cache and try again)") - elseif (USE_OPENGL_LEGACY) - message(FATAL_ERROR "USE_METAL and USE_OPENGL_LEGACY are both ON but only one backend can be used at a time, turn one OFF and regenerate. (or delete cache and try again)") - endif() -else() - option(USE_OPENGL "Use OpenGL for drawing (WIP)" OFF) - if (USE_OPENGL) - option(USE_OPENGL_LEGACY "Use legacy OpenGL for drawing" OFF) - if (USE_OPENGL_LEGACY) - message(FATAL_ERROR "USE_OPENGL and USE_OPENGL_LEGACY are both ON but only one backend can be used at a time, turn one OFF and regenerate. (or delete cache and try again)") - endif() - else() - option(USE_OPENGL_LEGACY "Use legacy OpenGL for drawing" ON) - endif() +set(GFX_BACKEND "OPENGL_LEGACY" CACHE STRING "Graphics API to render with: \"SDL\", \"OPENGL_LEGACY\" 1.1 compatibility profile, \"OPENGL\" 3.3 core profile (WIP), \"METAL\"") + +set(GL_BACKENDS OPENGL_LEGACY OPENGL) +set(BACKENDS SDL ${GL_BACKENDS} METAL) +if (NOT GFX_BACKEND IN_LIST BACKENDS) + message(FATAL_ERROR "\"${GFX_BACKEND}\" is not a valid graphics backend, GFX_BACKEND may be one of: ${BACKENDS}") endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") @@ -33,7 +20,7 @@ elseif (MSVC) endif() find_package(SDL2 REQUIRED) -if (USE_OPENGL OR USE_OPENGL_LEGACY) +if (GFX_BACKEND IN_LIST GL_BACKENDS) if (NOT DEFINED OpenGL_GL_PREFERENCE) set(OpenGL_GL_PREFERENCE "GLVND") endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 707698c..9ff02ce 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,15 +2,15 @@ set(SOURCES maths.h draw.h draw_common.c - $<$,$,$>>:draw.c> - $<$:draw_metal.m metal_shader_types.h> - $<$:draw_opengl_core.c> - $<$:draw_opengl.c> + $<$,$,$>>:draw.c> + $<$:draw_metal.m metal_shader_types.h> + $<$:draw_opengl_core.c> + $<$:draw_opengl.c> stick.h stick.c analogue.c) -if (USE_METAL) +if (GFX_BACKEND STREQUAL "METAL") find_library(METAL Metal REQUIRED) find_library(FOUNDATION Foundation REQUIRED) find_library(QUARTZCORE QuartzCore REQUIRED) @@ -19,7 +19,7 @@ if (USE_METAL) include(BinHelper) bin2h_compile(OUTPUT metalShader.h BIN ${CMAKE_CURRENT_BINARY_DIR}/shader.metallib) list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/metalShader.h) -elseif (USE_OPENGL) +elseif (GFX_BACKEND STREQUAL "OPENGL") include(GL3WHelper) add_gl3w(gl3w) include(BinHelper) @@ -29,16 +29,16 @@ endif() add_executable(${TARGET} ${SOURCES}) target_include_directories(${TARGET} PRIVATE - $<$,$>:${CMAKE_CURRENT_BINARY_DIR}>) + $<$,$>:${CMAKE_CURRENT_BINARY_DIR}>) target_link_libraries(${TARGET} $<$:SDL2::SDL2main> SDL2::SDL2 - $<$:${METAL} ${QUARTZCORE} ${FOUNDATION}> - $<$,$>:OpenGL::GL> - $<$:gl3w> + $<$:${METAL} ${QUARTZCORE} ${FOUNDATION}> + $<$,$>:OpenGL::GL> + $<$:gl3w> $<$:m>) target_compile_options(${TARGET} PRIVATE $<$:-Wall -Wextra -pedantic -Wno-unused-parameter>) target_compile_definitions(${TARGET} PRIVATE - $<$:USE_METAL> - $<$,$>:USE_OPENGL>) + $<$:USE_METAL> + $<$,$>:USE_OPENGL>)