@@ -51,9 +51,39 @@ find_package(FreeType REQUIRED)
5151if (FREETYPE_FOUND)
5252 message (STATUS "freetype include path: ${FREETYPE_INCLUDE_DIRS} " )
5353endif ()
54+
55+ # find flatbuffers
56+ if (NOT TARGET flatbuffers)
57+ find_package (flatbuffers REQUIRED)
58+ endif ()
59+ # ==================================================================================================
60+
61+ # ==================================================================================================
62+ function (render_pipeline_generate_schema_headers)
63+ # generate schema headers
64+ if (NOT FlatBuffers_flatc)
65+ message (FATAL_ERROR "Cannot find flatc program." )
66+ endif ()
67+
68+ file (GLOB flatc_input_files "${PROJECT_SOURCE_DIR} /resources/data/schema/*.fbs" )
69+ foreach (input_file ${flatc_input_files} )
70+ execute_process (
71+ COMMAND ${FlatBuffers_flatc} -c --scoped-enums "${input_file} "
72+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR} /rpcore/schema"
73+ RESULT_VARIABLE flatc_result
74+ )
75+ if (NOT (${flatc_result} EQUAL "0" ))
76+ message (SEND_ERROR "flatc returns error for a file '${input_file} '" )
77+ endif ()
78+ endforeach ()
79+
80+ message (STATUS "Render Pipeline: Schema header files are generated." )
81+ endfunction ()
5482# ==================================================================================================
5583
5684# === target =======================================================================================
85+ render_pipeline_generate_schema_headers()
86+
5787include ("${PROJECT_SOURCE_DIR} /files.cmake" )
5888add_library (${PROJECT_NAME} SHARED ${render_pipeline_sources} ${render_pipeline_headers} )
5989
@@ -64,6 +94,14 @@ else()
6494 target_compile_options (${PROJECT_NAME} PRIVATE -Wall)
6595endif ()
6696
97+ target_compile_definitions (${PROJECT_NAME}
98+ PRIVATE
99+
100+ # used for plugin postfix.
101+ $<$<CONFIG:Debug>:RENDER_PIPELINE_BUILD_CFG_POSTFIX ="${${PROJECT_NAME} _DEBUG_POSTFIX}" >
102+ $<$<CONFIG:RelWithDebInfo>:RENDER_PIPELINE_BUILD_CFG_POSTFIX ="${${PROJECT_NAME} _RELWITHDEBINFO_POSTFIX}" >
103+ )
104+
67105target_include_directories (${PROJECT_NAME}
68106 PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} >
69107 $<INSTALL_INTERFACE:include >
@@ -77,14 +115,14 @@ target_link_libraries(${PROJECT_NAME}
77115
78116 PRIVATE $<$<NOT :$<BOOL :${Boost_USE_STATIC_LIBS} >>:Boost::dynamic_linking>
79117 Boost::filesystem
80- ${FREETYPE_LIBRARIES} yaml-cpp spdlog::spdlog
118+ ${FREETYPE_LIBRARIES} yaml-cpp spdlog::spdlog flatbuffers
81119)
82120
83121set_target_properties (${PROJECT_NAME} PROPERTIES
84122 FOLDER "render_pipeline"
85123 DEFINE_SYMBOL "RENDER_PIPELINE_BUILD"
86- DEBUG_POSTFIX "-debug"
87- RELWITHDEBINFO_POSTFIX "-reldeb"
124+ DEBUG_POSTFIX ${ ${PROJECT_NAME} _DEBUG_POSTFIX }
125+ RELWITHDEBINFO_POSTFIX ${ ${PROJECT_NAME} _RELWITHDEBINFO_POSTFIX }
88126 VERSION ${PROJECT_VERSION}
89127)
90128
@@ -119,9 +157,14 @@ install(TARGETS ${PROJECT_NAME}
119157)
120158export (EXPORT ${TARGET_EXPORT_NAME} FILE ${PROJECT_BINARY_DIR} /${TARGET_EXPORT_NAME} .cmake)
121159
122- install (FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /${PROJECT_NAME} .pdb"
160+ install (FILES "${PROJECT_BINARY_DIR} /Debug/${PROJECT_NAME} ${${PROJECT_NAME} _DEBUG_POSTFIX}.pdb"
161+ DESTINATION "bin"
162+ CONFIGURATIONS Debug
163+ )
164+
165+ install (FILES "${PROJECT_BINARY_DIR} /RelWithDebInfo/${PROJECT_NAME} ${${PROJECT_NAME} _RELWITHDEBINFO_POSTFIX}.pdb"
123166 DESTINATION "bin"
124- CONFIGURATIONS Debug RelWithDebInfo
167+ CONFIGURATIONS RelWithDebInfo
125168)
126169
127170install (DIRECTORY "${PROJECT_SOURCE_DIR} /${PROJECT_NAME} " DESTINATION "include/" )
@@ -136,9 +179,9 @@ install(FILES ${PACKAGE_CONFIG_FILE} ${PACKAGE_VERSION_CONFIG_FILE} ${render_pip
136179install (EXPORT ${TARGET_EXPORT_NAME} DESTINATION ${PACKAGE_CMAKE_INSTALL_DIR} )
137180
138181# documents
139- if (RENDER_PIPELINE_BUILD_DOCUMENTS AND DOXYGEN_FOUND)
182+ if (render_pipeline_BUILD_DOCUMENTS AND DOXYGEN_FOUND)
140183 set (DOCUMENTS_TARGET "documents" )
141- configure_file ("${CMAKE_CURRENT_SOURCE_DIR} /Doxyfile.in"
184+ configure_file ("${CMAKE_CURRENT_SOURCE_DIR} /documents/ Doxyfile.in"
142185 "${CMAKE_CURRENT_BINARY_DIR} /Doxyfile"
143186 @ONLY
144187 )
@@ -147,12 +190,14 @@ if(RENDER_PIPELINE_BUILD_DOCUMENTS AND DOXYGEN_FOUND)
147190 ${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR} /Doxyfile"
148191 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
149192 )
193+ set_target_properties (${DOCUMENTS_TARGET} PROPERTIES FOLDER "render_pipeline" )
150194
151- install (DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${DOCUMENTS_TARGET} /" DESTINATION "share/${PROJECT_NAME} /doc /" )
195+ install (DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /${DOCUMENTS_TARGET} /" DESTINATION "share/${PROJECT_NAME} /documents /" )
152196endif ()
153197
154198install (FILES
155199 "${CMAKE_CURRENT_SOURCE_DIR} /LICENSE.md"
200+ "${CMAKE_CURRENT_SOURCE_DIR} /README.md"
156201 DESTINATION "share/${PROJECT_NAME} /" )
157202# ==================================================================================================
158203
0 commit comments