[client] use cmake to generate renderers/fonts/clipboards headers/code

This is in preperation of cmake options to enable/disable various
functionallity.
This commit is contained in:
Geoffrey McRae
2019-03-28 19:56:14 +11:00
parent b524c077a4
commit 3e021f3a6b
52 changed files with 176 additions and 168 deletions

View File

@@ -1,11 +1,48 @@
cmake_minimum_required(VERSION 3.0)
project(renderers LANGUAGES C)
add_subdirectory(opengl)
add_subdirectory(egl)
set(RENDERER_H "${CMAKE_BINARY_DIR}/include/dynamic/renderers.h")
set(RENDERER_C "${CMAKE_BINARY_DIR}/src/renderers.c")
add_library(renderers INTERFACE)
target_link_libraries(renderers INTERFACE
renderer_opengl
renderer_egl
file(WRITE ${RENDERER_H} "#include \"interface/renderer.h\"\n\n")
file(APPEND ${RENDERER_H} "extern LG_Renderer * LG_Renderers[];\n\n")
file(WRITE ${RENDERER_C} "#include \"interface/renderer.h\"\n\n")
file(APPEND ${RENDERER_C} "#include <stddef.h>\n\n")
set(RENDERERS)
set(RENDERERS_LINK)
function(add_renderer name)
set(RENDERERS "${RENDERERS};${name}" PARENT_SCOPE)
set(RENDERERS_LINK "${RENDERERS_LINK};renderer_${name}" PARENT_SCOPE)
add_subdirectory(${name})
endfunction()
# Add/remove renderers here!
add_renderer(EGL)
add_renderer(OpenGL)
list(REMOVE_AT RENDERERS 0)
list(REMOVE_AT RENDERERS_LINK 0)
list(LENGTH RENDERERS RENDERER_COUNT)
file(APPEND ${RENDERER_H} "#define LG_RENDERER_COUNT ${RENDERER_COUNT}\n")
foreach(renderer ${RENDERERS})
file(APPEND ${RENDERER_C} "extern LG_Renderer LGR_${renderer};\n")
endforeach()
file(APPEND ${RENDERER_C} "\nconst LG_Renderer * LG_Renderers[] =\n{\n")
foreach(renderer ${RENDERERS})
file(APPEND ${RENDERER_C} " &LGR_${renderer},\n")
endforeach()
file(APPEND ${RENDERER_C} " NULL\n};")
add_library(renderers STATIC
${RENDERER_C}
)
target_link_libraries(renderers
${RENDERERS_LINK}
)