forked from heremaps/flatdata
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGenerateSource.cmake
More file actions
31 lines (28 loc) · 1.3 KB
/
GenerateSource.cmake
File metadata and controls
31 lines (28 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
set(FLATDATA_GENERATOR_PATH ${CMAKE_CURRENT_LIST_DIR}/../../../flatdata-generator)
# Generates sources from flatdata schema
#
# @param TARGET_NAME Name of custom target to generate header for schema
# @param SCHEMA_FILENAME path to the flatdata schema
# @param OUTPUT_FILENAME output filename. Generator is forced to output to the given file.
#
function(flatdata_generate_source TARGET_NAME SCHEMA_FILENAME OUTPUT_FILENAME)
find_program(PYTHON3_EXECUTABLE NAMES python3 python36)
if (NOT PYTHON3_EXECUTABLE)
message(FATAL_ERROR "python3 NOT found.")
endif()
file(GLOB_RECURSE FLATDATA_GENERATOR_SOURCES ${FLATDATA_GENERATOR_PATH}/**/*.py)
file(GLOB_RECURSE FLATDATA_GENERATOR_TEMPLATES ${FLATDATA_GENERATOR_PATH}/**/*.jinja2)
add_custom_command(
OUTPUT ${OUTPUT_FILENAME}
COMMAND ${PYTHON3_EXECUTABLE} ${FLATDATA_GENERATOR_PATH}/generator.py
--gen cpp
--schema ${SCHEMA_FILENAME}
--output-file ${OUTPUT_FILENAME}
DEPENDS ${FLATDATA_GENERATOR_SOURCES}
DEPENDS ${FLATDATA_GENERATOR_TEMPLATES}
DEPENDS ${SCHEMA_FILENAME}
WORKING_DIRECTORY ${GENERATOR_PATH}
COMMENT "Generating sources from flatdata schema"
)
add_custom_target(${TARGET_NAME} DEPENDS ${OUTPUT_FILENAME})
endfunction(flatdata_generate_source)