blah/CMakeLists.txt

112 lines
2.8 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.14)
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
src/blah_app.cpp
src/blah_filesystem.cpp
src/blah_common.cpp
src/blah_time.cpp
src/blah_input.cpp
src/blah_stream.cpp
src/blah_graphics.cpp
src/blah_string.cpp
src/blah_batch.cpp
src/blah_spritefont.cpp
src/blah_subtexture.cpp
src/blah_aseprite.cpp
src/blah_font.cpp
src/blah_image.cpp
src/blah_packer.cpp
2022-11-14 09:59:35 +08:00
src/blah_audio.cpp
src/internal/blah_renderer_opengl.cpp
src/internal/blah_renderer_d3d11.cpp
src/internal/blah_platform_sdl2.cpp
src/internal/blah_platform_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
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2020-08-26 15:38:01 +08:00
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
2020-08-26 15:38:01 +08:00
)
# Platform Variables
option(BLAH_PLATFORM_SDL2 "Use SDL2 Platform Backend" ON)
option(BLAH_PLATFORM_WIN32 "Use Win32 Platform Backend" OFF)
option(BLAH_RENDERER_OPENGL "Make OpenGL Renderer available" ON)
if (WIN32)
option(BLAH_RENDERER_D3D11 "Make D3D11 Renderer available" ON)
endif()
option(BLAH_NO_FUNCTIONAL "Don't use std::function" OFF)
option(BLAH_NO_SHARED_PTR "Don't use std::shared_ptr for Resources" OFF)
2020-12-29 10:31:06 +08:00
# tracks which libraries we need to link, depends on Options above
2020-12-29 10:31:06 +08:00
set(LIBS "")
2020-08-26 15:38:01 +08:00
# use the OpenGL Renderer Backend
if (BLAH_RENDERER_OPENGL)
add_compile_definitions(BLAH_RENDERER_OPENGL)
endif()
2021-03-24 06:45:19 +08:00
# use the D3D11 Renderer Backend
if (BLAH_RENDERER_D3D11)
add_compile_definitions(BLAH_RENDERER_D3D11)
2020-12-29 10:31:06 +08:00
set(LIBS ${LIBS} d3d11.lib dxguid.lib D3Dcompiler.lib)
endif()
# use the SDL2 Platform Backend
# Link and create SDL2 Definition
if (BLAH_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:47:34 +08:00
set_target_properties(blah PROPERTIES COMPILE_FLAGS "-s USE_SDL=2")
target_link_libraries(blah "-s USE_SDL=2 -s USE_WEBGL2=1")
2021-01-15 11:37:55 +08:00
2022-01-10 11:18:51 +08:00
# Pull SDL2 from its Github repo
2021-03-24 06:47:34 +08:00
else()
if (NOT DEFINED BLAH_SDL2_LIBS)
include(FetchContent)
set(FETCHCONTENT_QUIET FALSE)
FetchContent_Declare(
SDL2
GIT_REPOSITORY https://github.com/libsdl-org/SDL
GIT_TAG release-2.24.0 # grab latest stable release
GIT_PROGRESS TRUE
)
FetchContent_MakeAvailable(SDL2)
set(BLAH_SDL2_LIBS SDL2main SDL2-static)
set(BLAH_SDL2_INCLUDE ${sdl2_SOURCE_DIRS}/include)
endif()
2022-01-10 11:18:51 +08:00
# statically link SDL2 since we're building it ourselves
set(LIBS ${LIBS} ${BLAH_SDL2_LIBS})
target_include_directories(blah PRIVATE ${BLAH_SDL2_INCLUDE})
2021-03-24 06:47:34 +08:00
endif()
# use the Win32 Platform Backend
elseif (BLAH_PLATFORM_WIN32)
2021-03-24 06:45:19 +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()
target_link_libraries(blah PRIVATE ${LIBS})
# toggle options
if (BLAH_NO_FUNCTIONAL)
add_compile_definitions(BLAH_NO_FUNCTIONAL)
endif()
if (BLAH_NO_SHARED_PTR)
add_compile_definitions(BLAH_NO_SHARED_PTR)
endif()