HULL/cmake/renderer_gl2.cmake

95 lines
3.4 KiB
CMake

if(NOT BUILD_CLIENT OR NOT BUILD_RENDERER_GL2)
return()
endif()
include(utils/arch)
include(utils/set_output_dirs)
include(renderer_common)
set(RENDERER_GL2_SOURCES
${SOURCE_DIR}/renderergl2/tr_animation.c
${SOURCE_DIR}/renderergl2/tr_backend.c
${SOURCE_DIR}/renderergl2/tr_bsp.c
${SOURCE_DIR}/renderergl2/tr_cmds.c
${SOURCE_DIR}/renderergl2/tr_curve.c
${SOURCE_DIR}/renderergl2/tr_dsa.c
${SOURCE_DIR}/renderergl2/tr_extramath.c
${SOURCE_DIR}/renderergl2/tr_extensions.c
${SOURCE_DIR}/renderergl2/tr_fbo.c
${SOURCE_DIR}/renderergl2/tr_flares.c
${SOURCE_DIR}/renderergl2/tr_glsl.c
${SOURCE_DIR}/renderergl2/tr_image.c
${SOURCE_DIR}/renderergl2/tr_image_dds.c
${SOURCE_DIR}/renderergl2/tr_init.c
${SOURCE_DIR}/renderergl2/tr_light.c
${SOURCE_DIR}/renderergl2/tr_main.c
${SOURCE_DIR}/renderergl2/tr_marks.c
${SOURCE_DIR}/renderergl2/tr_mesh.c
${SOURCE_DIR}/renderergl2/tr_model.c
${SOURCE_DIR}/renderergl2/tr_model_iqm.c
${SOURCE_DIR}/renderergl2/tr_postprocess.c
${SOURCE_DIR}/renderergl2/tr_scene.c
${SOURCE_DIR}/renderergl2/tr_shade.c
${SOURCE_DIR}/renderergl2/tr_shade_calc.c
${SOURCE_DIR}/renderergl2/tr_shader.c
${SOURCE_DIR}/renderergl2/tr_shadows.c
${SOURCE_DIR}/renderergl2/tr_sky.c
${SOURCE_DIR}/renderergl2/tr_surface.c
${SOURCE_DIR}/renderergl2/tr_vbo.c
${SOURCE_DIR}/renderergl2/tr_world.c
)
file(GLOB RENDERER_GL2_SHADER_SOURCES ${SOURCE_DIR}/renderergl2/glsl/*.glsl)
set(SHADERS_DIR ${CMAKE_BINARY_DIR}/shaders.dir)
file(MAKE_DIRECTORY ${SHADERS_DIR})
foreach(SHADER_FILE IN LISTS RENDERER_GL2_SHADER_SOURCES)
get_filename_component(SHADER_NAME ${SHADER_FILE} NAME_WE)
set(SHADER_C_FILE ${SHADERS_DIR}/${SHADER_NAME}.c)
string(REPLACE "${CMAKE_BINARY_DIR}/" "" SHADER_C_FILE_COMMENT ${SHADER_C_FILE})
add_custom_command(
OUTPUT ${SHADER_C_FILE}
COMMAND ${CMAKE_COMMAND}
-DINPUT_FILE=${SHADER_FILE}
-DOUTPUT_FILE=${SHADER_C_FILE}
-DSHADER_NAME=${SHADER_NAME}
-P ${CMAKE_SOURCE_DIR}/cmake/utils/stringify_shader.cmake
DEPENDS ${SHADER_FILE}
COMMENT "Stringify shader ${SHADER_C_FILE_COMMENT}")
list(APPEND RENDERER_GL2_SHADER_C_SOURCES ${SHADER_C_FILE})
endforeach()
set(RENDERER_GL2_BASENAME renderer_opengl2)
if(USE_ARCHLESS_FILENAMES)
set(RENDERER_GL2_BINARY ${RENDERER_GL2_BASENAME})
list(APPEND RENDERER_DEFINITIONS USE_ARCHLESS_FILENAMES)
else()
set(RENDERER_GL2_BINARY ${RENDERER_GL2_BASENAME}_${ARCH})
endif()
list(APPEND RENDERER_GL2_BINARY_SOURCES
${RENDERER_COMMON_SOURCES}
${RENDERER_GL2_SOURCES}
${RENDERER_GL2_SHADER_C_SOURCES}
${SDL_RENDERER_SOURCES}
${RENDERER_LIBRARY_SOURCES})
if(USE_RENDERER_DLOPEN)
list(APPEND RENDERER_GL2_BINARY_SOURCES ${DYNAMIC_RENDERER_SOURCES})
add_library(${RENDERER_GL2_BINARY} SHARED ${RENDERER_GL2_BINARY_SOURCES})
target_link_libraries( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_LIBRARIES})
target_include_directories( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_INCLUDE_DIRS})
target_compile_definitions( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_DEFINITIONS})
target_compile_options( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_COMPILE_OPTIONS})
target_link_options( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_LINK_OPTIONS})
set_output_dirs(${RENDERER_GL2_BINARY})
endif()