2021-01-04 15:24:02 +08:00
|
|
|
cmake_minimum_required(VERSION 3.12)
|
2020-08-26 15:38:01 +08:00
|
|
|
project(blah)
|
|
|
|
|
|
|
|
# C++ version
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
|
|
|
add_library(blah
|
2021-05-10 08:23:02 +08:00
|
|
|
src/app.cpp
|
|
|
|
src/filesystem.cpp
|
|
|
|
src/common.cpp
|
|
|
|
src/time.cpp
|
|
|
|
src/input.cpp
|
2020-08-26 15:38:01 +08:00
|
|
|
|
2021-03-23 07:53:27 +08:00
|
|
|
src/graphics/batch.cpp
|
2021-01-01 05:43:23 +08:00
|
|
|
src/graphics/blend.cpp
|
|
|
|
src/graphics/material.cpp
|
|
|
|
src/graphics/mesh.cpp
|
|
|
|
src/graphics/renderpass.cpp
|
|
|
|
src/graphics/shader.cpp
|
2021-03-23 07:53:27 +08:00
|
|
|
src/graphics/spritefont.cpp
|
|
|
|
src/graphics/subtexture.cpp
|
2021-05-10 08:23:02 +08:00
|
|
|
src/graphics/target.cpp
|
2021-01-01 05:43:23 +08:00
|
|
|
src/graphics/texture.cpp
|
|
|
|
|
|
|
|
src/containers/str.cpp
|
2021-02-12 03:14:36 +08:00
|
|
|
|
2021-01-01 05:43:23 +08:00
|
|
|
src/images/aseprite.cpp
|
|
|
|
src/images/font.cpp
|
|
|
|
src/images/image.cpp
|
|
|
|
src/images/packer.cpp
|
|
|
|
|
2021-05-10 08:23:02 +08:00
|
|
|
src/numerics/calc.cpp
|
|
|
|
src/numerics/circle.cpp
|
|
|
|
src/numerics/color.cpp
|
|
|
|
src/numerics/line.cpp
|
|
|
|
src/numerics/mat3x2.cpp
|
|
|
|
src/numerics/mat4x4.cpp
|
|
|
|
src/numerics/point.cpp
|
|
|
|
src/numerics/quad.cpp
|
|
|
|
src/numerics/rect.cpp
|
|
|
|
src/numerics/rectI.cpp
|
|
|
|
src/numerics/vec2.cpp
|
2021-02-12 03:14:36 +08:00
|
|
|
|
|
|
|
src/streams/bufferstream.cpp
|
2021-01-01 05:43:23 +08:00
|
|
|
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
|
2021-03-23 16:56:53 +08:00
|
|
|
src/internal/platform_backend_win32.cpp
|
2020-12-27 06:44:48 +08:00
|
|
|
)
|
2020-08-26 15:38:01 +08:00
|
|
|
|
2021-02-12 03:14:36 +08:00
|
|
|
target_include_directories(blah
|
2020-08-26 15:38:01 +08:00
|
|
|
PUBLIC
|
2021-01-01 05:43:23 +08:00
|
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
2020-08-26 15:38:01 +08:00
|
|
|
PRIVATE
|
2021-01-01 05:43:23 +08:00
|
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
2020-08-26 15:38:01 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
# Platform Variables
|
2021-03-23 16:56:53 +08:00
|
|
|
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")
|
2020-12-29 10:31:06 +08:00
|
|
|
|
|
|
|
set(LIBS "")
|
2020-08-26 15:38:01 +08:00
|
|
|
|
2021-03-23 16:56:53 +08:00
|
|
|
# use the OpenGL Graphics Backend
|
|
|
|
if (GRAPHICS_OPENGL)
|
2020-08-26 15:38:01 +08:00
|
|
|
|
2021-03-23 16:56:53 +08:00
|
|
|
add_compile_definitions(BLAH_GRAPHICS_OPENGL)
|
2020-08-26 15:38:01 +08:00
|
|
|
|
2021-03-23 16:56:53 +08:00
|
|
|
# use the D3D11 Graphics Backend
|
|
|
|
elseif (GRAPHICS_D3D11)
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2021-03-23 16:56:53 +08:00
|
|
|
add_compile_definitions(BLAH_GRAPHICS_D3D11)
|
2020-12-29 10:31:06 +08:00
|
|
|
set(LIBS ${LIBS} d3d11.lib dxguid.lib D3Dcompiler.lib)
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2020-12-29 10:31:06 +08:00
|
|
|
endif()
|
|
|
|
|
2021-03-23 16:56:53 +08:00
|
|
|
# use the SDL2 Platform Backend
|
|
|
|
# Link and create SDL2 Definition
|
|
|
|
if (PLATFORM_SDL2)
|
|
|
|
add_compile_definitions(BLAH_PLATFORM_SDL2)
|
|
|
|
|
2021-03-24 06:45:19 +08:00
|
|
|
# Emscripten can import SDL2 directly
|
2021-01-08 23:42:58 +08:00
|
|
|
if (EMSCRIPTEN)
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2021-03-24 06:47:34 +08:00
|
|
|
set_target_properties(blah PROPERTIES COMPILE_FLAGS "-s USE_SDL=2")
|
2021-01-15 11:37:55 +08:00
|
|
|
|
2021-03-24 06:45:19 +08:00
|
|
|
# Load SDL2 Normally
|
2021-03-24 06:47:34 +08:00
|
|
|
else()
|
2021-03-24 06:45:19 +08:00
|
|
|
|
|
|
|
# Try to find SDL2
|
|
|
|
if (DEFINED SDL2_LIBRARIES AND DEFINED SDL2_INCLUDE_DIRS)
|
|
|
|
set(SDL2_FOUND true)
|
|
|
|
else()
|
|
|
|
find_package(SDL2 QUIET)
|
2021-01-04 16:58:24 +08:00
|
|
|
endif()
|
|
|
|
|
2021-02-12 03:14:36 +08:00
|
|
|
# If CMake cannot find SDL2 library, then it gets downloaded and compiled that way
|
2021-01-15 11:37:55 +08:00
|
|
|
if (NOT ${SDL2_FOUND})
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2021-01-15 11:37:55 +08:00
|
|
|
include(FetchContent)
|
|
|
|
FetchContent_Declare(
|
|
|
|
SDL2
|
2021-02-12 03:14:36 +08:00
|
|
|
GIT_REPOSITORY https://github.com/libsdl-org/SDL
|
2021-01-15 11:37:55 +08:00
|
|
|
GIT_TAG release-2.0.14 # grab latest stable release
|
|
|
|
)
|
|
|
|
FetchContent_GetProperties(SDL2)
|
|
|
|
if (NOT sdl2_POPULATED)
|
|
|
|
FetchContent_Populate(SDL2)
|
|
|
|
add_subdirectory(${sdl2_SOURCE_DIR} ${sdl2_BINARY_DIR})
|
|
|
|
endif()
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2021-04-03 01:56:07 +08:00
|
|
|
# statically link SDL2 since we're building it ourselves
|
|
|
|
set(LIBS ${LIBS} SDL2main SDL2-static)
|
|
|
|
target_include_directories(blah PUBLIC ${sdl2_SOURCE_DIRS}/include)
|
|
|
|
|
|
|
|
else()
|
2021-01-08 23:42:58 +08:00
|
|
|
|
2021-04-03 01:56:07 +08:00
|
|
|
# Add Library and Include Dirs
|
|
|
|
set(LIBS ${LIBS} ${SDL2_LIBRARIES})
|
|
|
|
target_include_directories(blah PUBLIC ${SDL2_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
endif()
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2021-03-24 06:47:34 +08:00
|
|
|
endif()
|
2021-03-23 16:56:53 +08:00
|
|
|
|
|
|
|
# use the Win32 Platform Backend
|
|
|
|
elseif (PLATFORM_WIN32)
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2021-03-23 16:56:53 +08:00
|
|
|
add_compile_definitions(BLAH_PLATFORM_WIN32)
|
2021-03-24 06:45:19 +08:00
|
|
|
|
2020-12-29 10:31:06 +08:00
|
|
|
endif()
|
|
|
|
|
2021-01-04 15:24:02 +08:00
|
|
|
target_link_libraries(blah PUBLIC ${LIBS})
|