Adding CMake again :)
This commit is contained in:
parent
cb4274bb1c
commit
2dc8050ce3
10 changed files with 384 additions and 0 deletions
224
engine.cmake
Normal file
224
engine.cmake
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
# ------------------------------------------------------------
|
||||
#
|
||||
# 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/X11/Xlib.cpp
|
||||
source/Platform/X11/UnixApplication.cpp
|
||||
source/Platform/X11/X11Display.cpp
|
||||
source/Platform/X11/GLXContext.cpp
|
||||
source/Platform/X11/X11Input.cpp
|
||||
source/Platform/X11/X11Keyboard.cpp
|
||||
source/Platform/X11/X11Mouse.cpp
|
||||
source/Platform/X11/X11EventQueue.cpp
|
||||
source/Platform/X11/X11WindowEventHandler.cpp
|
||||
source/Platform/X11/UnixMisc.cpp
|
||||
source/Platform/X11/UnixSystem.cpp
|
||||
source/Platform/X11/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})
|
||||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue