2026-02-28 02:47:18 -04:00
|
|
|
include_guard(GLOBAL)
|
|
|
|
|
|
|
|
|
|
include("${CMAKE_CURRENT_LIST_DIR}/dbGenerationCommon.cmake")
|
2026-02-28 04:13:44 -04:00
|
|
|
set(_CPPBESSOT_DB_GEN_CPP_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
2026-02-28 02:47:18 -04:00
|
|
|
|
2026-03-02 21:57:09 -04:00
|
|
|
function(cppbessot_add_db_gen_cpp_target schema_dir)
|
2026-02-28 02:47:18 -04:00
|
|
|
# Purpose: Register C++ model generation target using checked-in templates.
|
|
|
|
|
# Inputs:
|
2026-03-02 21:57:09 -04:00
|
|
|
# - schema_dir: Schema directory basename to generate for.
|
2026-02-28 02:47:18 -04:00
|
|
|
# - CPPBESSOT_NPX_EXECUTABLE: Path to `npx`.
|
|
|
|
|
# Outputs:
|
|
|
|
|
# - CMake target: `db_gen_cpp_headers` (EXCLUDE_FROM_ALL).
|
2026-03-02 21:57:09 -04:00
|
|
|
# - Files under `<schema_dir>/generated-cpp-source`.
|
|
|
|
|
cppbessot_validate_schema_dir_name("${schema_dir}")
|
|
|
|
|
cppbessot_get_schema_dir_path(_version_dir "${schema_dir}")
|
2026-02-28 04:13:44 -04:00
|
|
|
if(DEFINED CPPBESSOT_MODULE_ROOT AND NOT "${CPPBESSOT_MODULE_ROOT}" STREQUAL "")
|
|
|
|
|
set(_module_root "${CPPBESSOT_MODULE_ROOT}")
|
|
|
|
|
else()
|
|
|
|
|
get_filename_component(_module_root "${_CPPBESSOT_DB_GEN_CPP_DIR}/.." ABSOLUTE)
|
|
|
|
|
endif()
|
2026-02-28 02:47:18 -04:00
|
|
|
|
|
|
|
|
set(_openapi_file "${_version_dir}/openapi/openapi.yaml")
|
2026-02-28 04:13:44 -04:00
|
|
|
set(_template_dir "${_module_root}/openapi/templates/cpp-odb-json")
|
2026-02-28 02:47:18 -04:00
|
|
|
set(_template_config "${_template_dir}/config.yaml")
|
|
|
|
|
set(_output_dir "${_version_dir}/generated-cpp-source")
|
|
|
|
|
|
|
|
|
|
add_custom_target(db_gen_cpp_headers
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${_output_dir}"
|
|
|
|
|
COMMAND "${CPPBESSOT_NPX_EXECUTABLE}" @openapitools/openapi-generator-cli generate
|
|
|
|
|
-i "${_openapi_file}"
|
|
|
|
|
-g cpp-restsdk
|
|
|
|
|
-t "${_template_dir}"
|
|
|
|
|
-c "${_template_config}"
|
|
|
|
|
-o "${_output_dir}"
|
|
|
|
|
--global-property models
|
2026-03-02 21:57:09 -04:00
|
|
|
COMMENT "Generating C++ model headers/sources for ${schema_dir}"
|
2026-02-28 02:47:18 -04:00
|
|
|
VERBATIM
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set_target_properties(db_gen_cpp_headers PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
|
|
|
|
endfunction()
|