stuff-from-scratch/src/graphics/CMakeLists.txt
2023-01-05 08:46:01 +00:00

78 lines
No EOL
2.3 KiB
CMake

set(MODULE_NAME graphics)
message(STATUS "Checking dependencies for module: " ${MODULE_NAME})
set(platform_LIB_INCLUDES "")
set(platform_INCLUDE_DIRS "")
set(platform_HEADERS "")
set(platform_LIBS "")
list(APPEND graphics_LIB_INCLUDES
DrawingContext.cpp
DrawingSurface.cpp
RasterPainter.cpp
PainterFactory.cpp
${platform_LIB_INCLUDES}
)
list(APPEND graphics_HEADERS
${platform_HEADERS}
RasterPainter.h
PainterFactory.h
)
if(UNIX)
set(OpenGL_GL_PREFERENCE "GLVND")
find_package(OpenGL QUIET)
if (OpenGL_FOUND)
list(APPEND platform_LIBS OpenGL::GL OpenGL::GLU)
list(APPEND graphics_LIB_INCLUDES
opengl/OpenGlPainter.cpp
opengl/OpenGlTextPainter.cpp
opengl/OpenGlMeshPainter.cpp
opengl/OpenGlFontTexture.cpp
opengl/OpenGlShaderProgram.cpp
)
list(APPEND ${MODULE_NAME}
opengl/OpenGlPainter.h
opengl/OpenGlTextPainter.h
opengl/OpenGlMeshPainter.h
opengl/OpenGlFontTexture.h
opengl/OpenGlShaderProgram.h)
list(APPEND DEFINES "HAS_OPENGL")
else()
message(STATUS "OpenGL not found - skipping support")
endif()
else()
list(APPEND graphics_LIB_INCLUDES
directx/DirectXPainter.cpp
directx/DirectXTextPainter.cpp
directx/DirectXMeshPainter.cpp
directx/DirectXShaderProgram.cpp
)
list(APPEND graphics_HEADERS
directx/DirectXPainter.h
directx/DirectXTextPainter.h
directx/DirectXMeshPainter.h
directx/DirectXShaderProgram.h
)
find_package(DirectX-Headers REQUIRED)
list(APPEND platform_LIBS D3D12.lib D3DCompiler.lib Dwrite.lib D2d1.lib Microsoft::DirectX-Headers)
endif()
add_library(${MODULE_NAME} SHARED
${graphics_LIB_INCLUDES}
${graphics_HEADERS})
target_include_directories(${MODULE_NAME} PUBLIC
${platform_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/opengl
${CMAKE_CURRENT_SOURCE_DIR}/directx
)
target_compile_definitions(${MODULE_NAME} PRIVATE ${DEFINES})
target_link_libraries(${MODULE_NAME} PUBLIC geometry mesh fonts image visual_elements ${platform_LIBS})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER src)
set_target_properties( ${MODULE_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )