Files
cppbessot/cmake/scripts/run_odb_sql_ddl.cmake
T

40 lines
1.4 KiB
CMake
Raw Normal View History

2026-02-28 02:47:18 -04:00
cmake_minimum_required(VERSION 3.16)
2026-06-05 13:26:33 -04:00
include("${CMAKE_CURRENT_LIST_DIR}/cppbessotOdbHeaderDiscovery.cmake")
2026-02-28 02:47:18 -04:00
if(NOT DEFINED CPPBESSOT_ODB_EXECUTABLE OR CPPBESSOT_ODB_EXECUTABLE STREQUAL "")
message(FATAL_ERROR "CPPBESSOT_ODB_EXECUTABLE is required")
endif()
if(NOT DEFINED CPPBESSOT_VERSION_DIR OR CPPBESSOT_VERSION_DIR STREQUAL "")
message(FATAL_ERROR "CPPBESSOT_VERSION_DIR is required")
endif()
set(_include_dir "${CPPBESSOT_VERSION_DIR}/generated-cpp-source/include")
2026-06-05 13:26:33 -04:00
cppbessot_odb_find_object_headers(_object_headers "${_include_dir}")
2026-02-28 02:47:18 -04:00
foreach(_backend IN ITEMS sqlite pgsql)
if(_backend STREQUAL "sqlite")
set(_subdir sqlite)
else()
set(_subdir postgre)
endif()
set(_ddl_dir "${CPPBESSOT_VERSION_DIR}/generated-sql-ddl/${_subdir}")
set(_changelog_dir "${CPPBESSOT_VERSION_DIR}/generated-odb-source/${_subdir}")
file(MAKE_DIRECTORY "${_ddl_dir}")
file(MAKE_DIRECTORY "${_changelog_dir}")
execute_process(
COMMAND "${CPPBESSOT_ODB_EXECUTABLE}" -I "${_include_dir}" --std c++11 -d "${_backend}"
--generate-schema --schema-format sql -q
2026-06-05 13:26:33 -04:00
-o "${_ddl_dir}" --changelog-dir "${_changelog_dir}" ${_object_headers}
2026-02-28 02:47:18 -04:00
RESULT_VARIABLE _result
OUTPUT_VARIABLE _stdout
ERROR_VARIABLE _stderr
)
if(NOT _result EQUAL 0)
message(FATAL_ERROR
"ODB SQL DDL generation failed for backend `${_backend}`.\n${_stdout}\n${_stderr}")
endif()
endforeach()