blah/CMakeLists.txt

109 lines
2.6 KiB
CMake

cmake_minimum_required(VERSION 3.12)
project(blah)
# C++ version
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(blah
src/core/app.cpp
src/core/filesystem.cpp
src/core/common.cpp
src/core/time.cpp
src/graphics/batch.cpp
src/graphics/blend.cpp
src/graphics/framebuffer.cpp
src/graphics/material.cpp
src/graphics/mesh.cpp
src/graphics/renderpass.cpp
src/graphics/shader.cpp
src/graphics/spritefont.cpp
src/graphics/subtexture.cpp
src/graphics/texture.cpp
src/input/input.cpp
src/input/binding.cpp
src/input/binding_registry.cpp
src/containers/str.cpp
src/images/aseprite.cpp
src/images/font.cpp
src/images/image.cpp
src/images/packer.cpp
src/math/calc.cpp
src/math/circle.cpp
src/math/color.cpp
src/math/line.cpp
src/math/mat3x2.cpp
src/math/mat4x4.cpp
src/math/point.cpp
src/math/quad.cpp
src/math/rect.cpp
src/math/rectI.cpp
src/math/stopwatch.cpp
src/math/vec2.cpp
src/streams/bufferstream.cpp
src/streams/filestream.cpp
src/streams/memorystream.cpp
src/streams/stream.cpp
src/internal/graphics_backend_gl.cpp
src/internal/graphics_backend_d3d11.cpp
src/internal/graphics_backend_dummy.cpp
src/internal/platform_backend_sdl2.cpp
src/internal/platform_backend_win32.cpp
)
target_include_directories(blah
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)
# Platform Variables
set(PLATFORM_SDL2 true CACHE BOOL "Use SDL2 Platform Backend")
set(PLATFORM_WIN32 false CACHE BOOL "Use Win32 Platform Backend")
set(GRAPHICS_OPENGL true CACHE BOOL "Use OpenGL Graphics Backend")
set(GRAPHICS_D3D11 false CACHE BOOL "Use D3D11 Graphics Backend")
set(LIBS "")
# use the OpenGL Graphics Backend
if (GRAPHICS_OPENGL)
add_compile_definitions(BLAH_GRAPHICS_OPENGL)
# use the D3D11 Graphics Backend
elseif (GRAPHICS_D3D11)
add_compile_definitions(BLAH_GRAPHICS_D3D11)
set(LIBS ${LIBS} d3d11.lib dxguid.lib D3Dcompiler.lib)
endif()
# use the SDL2 Platform Backend
# Link and create SDL2 Definition
if (PLATFORM_SDL2)
add_compile_definitions(BLAH_PLATFORM_SDL2)
if (${CMAKE_SYSTEM_NAME} MATCHES "Emscripten")
set_target_properties(blah PROPERTIES COMPILE_FLAGS "-s USE_SDL=2")
else()
if (NOT DEFINED SDL2_INCLUDE_DIRS OR NOT DEFINED SDL2_LIBRARIES)
find_package(SDL2 REQUIRED)
endif()
target_include_directories(blah PUBLIC "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>")
set(LIBS ${LIBS} ${SDL2_LIBRARIES})
endif()
# use the Win32 Platform Backend
elseif (PLATFORM_WIN32)
add_compile_definitions(BLAH_PLATFORM_WIN32)
endif()
target_link_libraries(blah PUBLIC ${LIBS})