228 lines
6.2 KiB
CMake
228 lines
6.2 KiB
CMake
# ------------------------------------------------------------
|
|
#
|
|
# Engine library build config
|
|
#
|
|
# ------------------------------------------------------------
|
|
|
|
# Source
|
|
# ------------------------------------------------------------
|
|
|
|
set( ENGINE_SRC
|
|
# Core
|
|
source/Core/String.cpp
|
|
|
|
# System
|
|
source/System/ByteOrder.cpp
|
|
source/System/Event.cpp
|
|
source/System/EventListener.cpp
|
|
source/System/File.cpp
|
|
source/System/Log.cpp
|
|
source/System/MessageHandler.cpp
|
|
source/System/MessageQueue.cpp
|
|
source/System/Path.cpp
|
|
source/System/Stopwatch.cpp
|
|
|
|
# Platform
|
|
source/Platform/PlatformApplication.cpp
|
|
source/Platform/PlatformDisplay.cpp
|
|
|
|
# Math
|
|
source/Math/Color.cpp
|
|
source/Math/Logarithm.cpp
|
|
source/Math/Time.cpp
|
|
source/Math/Transform.cpp
|
|
source/Math/Math.cpp
|
|
|
|
# Input
|
|
source/Input/InputDevice.cpp
|
|
source/Input/InputModule.cpp
|
|
source/Input/Keyboard.cpp
|
|
source/Input/Mouse.cpp
|
|
|
|
# Display
|
|
source/Display/Display.cpp
|
|
source/Display/DisplayDescription.cpp
|
|
source/Display/DisplayMode.cpp
|
|
source/Display/GLContext.cpp
|
|
|
|
# GfxDriver
|
|
source/GfxDriver/ShaderProgram.cpp
|
|
|
|
# Graphics
|
|
source/Graphics/BatchRenderer2D.cpp
|
|
source/Graphics/DefaultRenderer2D.cpp
|
|
source/Graphics/Renderable2D.cpp
|
|
source/Graphics/Renderer2D.cpp
|
|
source/Graphics/RenderState.cpp
|
|
source/Graphics/Sprite.cpp
|
|
source/Graphics/Text.cpp
|
|
source/Graphics/Texture.cpp
|
|
source/Graphics/Transformable.cpp
|
|
source/Graphics/Vertex2D.cpp
|
|
source/Graphics/Graphics.cpp
|
|
|
|
# Graphics - Font
|
|
source/Graphics/Font/Engine/FreeTypeEngine.cpp
|
|
source/Graphics/Font/Engine/FreeTypeError.cpp
|
|
source/Graphics/Font/Engine/FreeTypeLib.cpp
|
|
source/Graphics/Font/FontDescription.cpp
|
|
source/Graphics/Font.cpp
|
|
|
|
# Graphics - Image
|
|
source/Graphics/Image/IcoFormat.cpp
|
|
source/Graphics/ImageLoader.cpp
|
|
source/Graphics/PixelFormat.cpp
|
|
source/Graphics/Image.cpp
|
|
|
|
# Graphics - GL
|
|
source/Graphics/GL/glad.c
|
|
source/Graphics/GL/CheckError.cpp
|
|
|
|
# Scene
|
|
source/Scene/Camera2D.cpp
|
|
|
|
# Game
|
|
source/Game/FPSCounter.cpp
|
|
source/Game/GameTime.cpp
|
|
source/Game.cpp
|
|
)
|
|
|
|
set(ENGINE_GFXDRIVER_OPENGL_SRC
|
|
source/GfxDriver/OpenGL/OpenGLDrv.cpp
|
|
source/GfxDriver/OpenGL/OpenGLShaderProgram.cpp
|
|
)
|
|
|
|
set(ENGINE_PLATFORM_WIN32_SRC
|
|
source/Platform/Win32/Win32Application.cpp
|
|
source/Platform/Win32/Win32Display.cpp
|
|
source/Platform/Win32/Win32GLContext.cpp
|
|
source/Platform/Win32/Win32Input.cpp
|
|
source/Platform/Win32/Win32Internal.cpp
|
|
source/Platform/Win32/Win32Keyboard.cpp
|
|
source/Platform/Win32/Win32Misc.cpp
|
|
source/Platform/Win32/Win32Mouse.cpp
|
|
source/Platform/Win32/Win32EventQueue.cpp
|
|
source/Platform/Win32/Win32System.cpp
|
|
source/Platform/Win32/glad_wgl.c
|
|
)
|
|
|
|
set(ENGINE_PLATFORM_UNIX_SRC
|
|
source/Platform/Unix/Xlib.cpp
|
|
source/Platform/Unix/UnixApplication.cpp
|
|
source/Platform/Unix/X11Display.cpp
|
|
source/Platform/Unix/GLXContext.cpp
|
|
source/Platform/Unix/X11Input.cpp
|
|
source/Platform/Unix/X11Keyboard.cpp
|
|
source/Platform/Unix/X11Mouse.cpp
|
|
source/Platform/Unix/X11EventQueue.cpp
|
|
source/Platform/Unix/X11WindowEventHandler.cpp
|
|
source/Platform/Unix/UnixMisc.cpp
|
|
source/Platform/Unix/UnixSystem.cpp
|
|
source/Platform/Unix/glad_glx.c
|
|
)
|
|
|
|
|
|
# Library
|
|
# ------------------------------------------------------------
|
|
|
|
add_library( Spectre STATIC ${ENGINE_SRC} )
|
|
target_include_directories(Spectre
|
|
PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:include>
|
|
PRIVATE
|
|
${CMAKE_CURRENT_LIST_DIR}/source
|
|
)
|
|
|
|
if (WIN32)
|
|
target_compile_options(Spectre PRIVATE "-DSPECTRE_PLATFORM_WIN=1")
|
|
else()
|
|
target_compile_options(Spectre PRIVATE "-DSPECTRE_PLATFORM_UNIX=1")
|
|
endif()
|
|
|
|
|
|
# Dependancies
|
|
# ------------------------------------------------------------
|
|
|
|
# Select platform.
|
|
if (WIN32)
|
|
target_sources(Spectre PRIVATE ${ENGINE_PLATFORM_WIN32_SRC})
|
|
else()
|
|
target_sources(Spectre PRIVATE ${ENGINE_PLATFORM_UNIX_SRC})
|
|
|
|
# Unix needs to link against X11
|
|
find_package(X11 REQUIRED COMPONENTS Xrandr)
|
|
target_link_libraries(Spectre PRIVATE X11::X11 X11::Xrandr)
|
|
endif (WIN32)
|
|
|
|
# Select graphics API
|
|
|
|
# Only OpenGL Driver for now
|
|
find_package(OpenGL REQUIRED)
|
|
target_sources(Spectre PRIVATE ${ENGINE_GFXDRIVER_OPENGL_SRC})
|
|
target_link_libraries(Spectre PRIVATE OpenGL::GL)
|
|
|
|
# FreeType
|
|
add_subdirectory(vendor/FreeType2)
|
|
target_sources(Spectre PRIVATE $<TARGET_OBJECTS:freetype>)
|
|
target_include_directories(Spectre PRIVATE $<TARGET_PROPERTY:freetype,INTERFACE_INCLUDE_DIRECTORIES>)
|
|
|
|
# STB
|
|
target_include_directories(Spectre PRIVATE ${CMAKE_CURRENT_LIST_DIR}/vendor/stb/include)
|
|
|
|
# Install
|
|
# ------------------------------------------------------------
|
|
|
|
# Includes
|
|
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/Spectre TYPE INCLUDE)
|
|
|
|
# Assets
|
|
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/assets DESTINATION ${CMAKE_INSTALL_DATADIR})
|
|
|
|
|
|
# Install - CMake targets
|
|
# ------------------------------------------------------------
|
|
|
|
install(TARGETS Spectre
|
|
EXPORT SpectreTargets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
|
|
install(EXPORT SpectreTargets
|
|
FILE SpectreTargets.cmake
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Spectre
|
|
)
|
|
|
|
# Build directory target
|
|
export(EXPORT SpectreTargets
|
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/SpectreTargets.cmake"
|
|
)
|
|
|
|
# CMake config
|
|
# ------------------------------------------------------------
|
|
|
|
# Version
|
|
include(CMakePackageConfigHelpers)
|
|
write_basic_package_version_file(SpectreConfigVersion.cmake COMPATIBILITY SameMajorVersion)
|
|
|
|
set (ASSETS_DIR ${CMAKE_INSTALL_DATADIR}/assets)
|
|
configure_package_config_file(cmake/SpectreConfig.cmake.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/cmake/SpectreConfig.cmake
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Spectre
|
|
PATH_VARS ASSETS_DIR)
|
|
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cmake/SpectreConfig.cmake
|
|
${CMAKE_CURRENT_BINARY_DIR}/SpectreConfigVersion.cmake
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Spectre)
|
|
|
|
# CMake config - build directory
|
|
# ------------------------------------------------------------
|
|
set (ASSETS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/assets)
|
|
configure_package_config_file(cmake/SpectreConfig.cmake.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/SpectreConfig.cmake
|
|
INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
|
|
INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}
|
|
PATH_VARS ASSETS_DIR)
|