mirror of
https://github.com/GayPizzaSpecifications/padlab.git
synced 2025-08-03 05:10:56 +00:00
old backend selector
This commit is contained in:
parent
a75e480155
commit
8f7bf116aa
@ -2,25 +2,12 @@ cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
|
|||||||
project(padlab C)
|
project(padlab C)
|
||||||
set(TARGET padlab)
|
set(TARGET padlab)
|
||||||
|
|
||||||
option(USE_METAL "use Metal for drawing" ${APPLE})
|
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\"")
|
||||||
if (USE_METAL)
|
|
||||||
option(USE_OPENGL "Use OpenGL for drawing (WIP)" OFF)
|
set(GL_BACKENDS OPENGL_LEGACY OPENGL)
|
||||||
option(USE_OPENGL_LEGACY "Use legacy OpenGL for drawing" OFF)
|
set(BACKENDS SDL ${GL_BACKENDS} METAL)
|
||||||
if (USE_OPENGL)
|
if (NOT GFX_BACKEND IN_LIST BACKENDS)
|
||||||
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)")
|
message(FATAL_ERROR "\"${GFX_BACKEND}\" is not a valid graphics backend, GFX_BACKEND may be one of: ${BACKENDS}")
|
||||||
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()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
@ -33,7 +20,7 @@ elseif (MSVC)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
if (USE_OPENGL OR USE_OPENGL_LEGACY)
|
if (GFX_BACKEND IN_LIST GL_BACKENDS)
|
||||||
if (NOT DEFINED OpenGL_GL_PREFERENCE)
|
if (NOT DEFINED OpenGL_GL_PREFERENCE)
|
||||||
set(OpenGL_GL_PREFERENCE "GLVND")
|
set(OpenGL_GL_PREFERENCE "GLVND")
|
||||||
endif()
|
endif()
|
||||||
|
@ -2,15 +2,15 @@ set(SOURCES
|
|||||||
maths.h
|
maths.h
|
||||||
draw.h
|
draw.h
|
||||||
draw_common.c
|
draw_common.c
|
||||||
$<$<NOT:$<OR:$<BOOL:${USE_METAL}>,$<BOOL:${USE_OPENGL}>,$<BOOL:${USE_OPENGL_LEGACY}>>>:draw.c>
|
$<$<NOT:$<OR:$<STREQUAL:${GFX_BACKEND},OPENGL>,$<STREQUAL:${GFX_BACKEND},OPENGL_LEGACY>,$<STREQUAL:${GFX_BACKEND},METAL>>>:draw.c>
|
||||||
$<$<BOOL:${USE_METAL}>:draw_metal.m metal_shader_types.h>
|
$<$<STREQUAL:${GFX_BACKEND},METAL>:draw_metal.m metal_shader_types.h>
|
||||||
$<$<BOOL:${USE_OPENGL}>:draw_opengl_core.c>
|
$<$<STREQUAL:${GFX_BACKEND},OPENGL>:draw_opengl_core.c>
|
||||||
$<$<BOOL:${USE_OPENGL_LEGACY}>:draw_opengl.c>
|
$<$<STREQUAL:${GFX_BACKEND},OPENGL_LEGACY>:draw_opengl.c>
|
||||||
stick.h
|
stick.h
|
||||||
stick.c
|
stick.c
|
||||||
analogue.c)
|
analogue.c)
|
||||||
|
|
||||||
if (USE_METAL)
|
if (GFX_BACKEND STREQUAL "METAL")
|
||||||
find_library(METAL Metal REQUIRED)
|
find_library(METAL Metal REQUIRED)
|
||||||
find_library(FOUNDATION Foundation REQUIRED)
|
find_library(FOUNDATION Foundation REQUIRED)
|
||||||
find_library(QUARTZCORE QuartzCore REQUIRED)
|
find_library(QUARTZCORE QuartzCore REQUIRED)
|
||||||
@ -19,7 +19,7 @@ if (USE_METAL)
|
|||||||
include(BinHelper)
|
include(BinHelper)
|
||||||
bin2h_compile(OUTPUT metalShader.h BIN ${CMAKE_CURRENT_BINARY_DIR}/shader.metallib)
|
bin2h_compile(OUTPUT metalShader.h BIN ${CMAKE_CURRENT_BINARY_DIR}/shader.metallib)
|
||||||
list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/metalShader.h)
|
list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/metalShader.h)
|
||||||
elseif (USE_OPENGL)
|
elseif (GFX_BACKEND STREQUAL "OPENGL")
|
||||||
include(GL3WHelper)
|
include(GL3WHelper)
|
||||||
add_gl3w(gl3w)
|
add_gl3w(gl3w)
|
||||||
include(BinHelper)
|
include(BinHelper)
|
||||||
@ -29,16 +29,16 @@ endif()
|
|||||||
|
|
||||||
add_executable(${TARGET} ${SOURCES})
|
add_executable(${TARGET} ${SOURCES})
|
||||||
target_include_directories(${TARGET} PRIVATE
|
target_include_directories(${TARGET} PRIVATE
|
||||||
$<$<OR:$<BOOL:${USE_METAL}>,$<BOOL:${USE_OPENGL}>>:${CMAKE_CURRENT_BINARY_DIR}>)
|
$<$<OR:$<STREQUAL:${GFX_BACKEND},OPENGL>,$<STREQUAL:${GFX_BACKEND},METAL>>:${CMAKE_CURRENT_BINARY_DIR}>)
|
||||||
target_link_libraries(${TARGET}
|
target_link_libraries(${TARGET}
|
||||||
$<$<PLATFORM_ID:Windows>:SDL2::SDL2main>
|
$<$<PLATFORM_ID:Windows>:SDL2::SDL2main>
|
||||||
SDL2::SDL2
|
SDL2::SDL2
|
||||||
$<$<BOOL:${USE_METAL}>:${METAL} ${QUARTZCORE} ${FOUNDATION}>
|
$<$<STREQUAL:${GFX_BACKEND},METAL>:${METAL} ${QUARTZCORE} ${FOUNDATION}>
|
||||||
$<$<OR:$<BOOL:${USE_OPENGL}>,$<BOOL:${USE_OPENGL_LEGACY}>>:OpenGL::GL>
|
$<$<OR:$<STREQUAL:${GFX_BACKEND},OPENGL>,$<STREQUAL:${GFX_BACKEND},OPENGL_LEGACY>>:OpenGL::GL>
|
||||||
$<$<BOOL:${USE_OPENGL}>:gl3w>
|
$<$<STREQUAL:${GFX_BACKEND},OPENGL>:gl3w>
|
||||||
$<$<BOOL:${GNU}>:m>)
|
$<$<BOOL:${GNU}>:m>)
|
||||||
target_compile_options(${TARGET} PRIVATE
|
target_compile_options(${TARGET} PRIVATE
|
||||||
$<$<BOOL:${GNU}>:-Wall -Wextra -pedantic -Wno-unused-parameter>)
|
$<$<BOOL:${GNU}>:-Wall -Wextra -pedantic -Wno-unused-parameter>)
|
||||||
target_compile_definitions(${TARGET} PRIVATE
|
target_compile_definitions(${TARGET} PRIVATE
|
||||||
$<$<BOOL:${USE_METAL}>:USE_METAL>
|
$<$<STREQUAL:${GFX_BACKEND},METAL>:USE_METAL>
|
||||||
$<$<OR:$<BOOL:${USE_OPENGL}>,$<BOOL:${USE_OPENGL_LEGACY}>>:USE_OPENGL>)
|
$<$<OR:$<STREQUAL:${GFX_BACKEND},OPENGL>,$<STREQUAL:${GFX_BACKEND},OPENGL_LEGACY>>:USE_OPENGL>)
|
||||||
|
Loading…
Reference in New Issue
Block a user