78 lines
No EOL
2.3 KiB
CMake
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 ) |