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> stick.h stick.c analogue.c) if (GFX_BACKEND STREQUAL "METAL") find_library(METAL Metal REQUIRED) find_library(FOUNDATION Foundation REQUIRED) find_library(QUARTZCORE QuartzCore REQUIRED) include(MetalHelper) metal_compile(OUTPUT shader.metallib SOURCES shader.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 (GFX_BACKEND STREQUAL "OPENGL") include(GL3WHelper) add_gl3w(gl3w) include(BinHelper) bin2h_compile(OUTPUT glslShaders.h TXT vert.glsl geom.glsl frag.glsl) list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/glslShaders.h) endif() add_executable(${TARGET} ${SOURCES}) target_include_directories(${TARGET} PRIVATE $<$,$>:${CMAKE_CURRENT_BINARY_DIR}>) target_link_libraries(${TARGET} $<$:SDL2::SDL2main> SDL2::SDL2 $<$:${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>)