diff --git a/cmake/dbGenCpp.cmake b/cmake/dbGenCpp.cmake index 7410f97..597cb03 100644 --- a/cmake/dbGenCpp.cmake +++ b/cmake/dbGenCpp.cmake @@ -24,8 +24,13 @@ function(cppbessot_add_db_gen_cpp_target schema_dir) set(_template_config "${_template_dir}/config.yaml") set(_output_dir "${_version_dir}/generated-cpp-source") file(GLOB_RECURSE _template_inputs CONFIGURE_DEPENDS "${_template_dir}/*") + cppbessot_get_expected_cpp_model_outputs( + _expected_model_headers + _expected_model_sources + "${schema_dir}") - add_custom_target(db_gen_cpp_headers + add_custom_command( + OUTPUT ${_expected_model_headers} ${_expected_model_sources} COMMAND ${CMAKE_COMMAND} -E make_directory "${_output_dir}" COMMAND "${CPPBESSOT_NPX_EXECUTABLE}" @openapitools/openapi-generator-cli generate -i "${_openapi_file}" @@ -39,5 +44,8 @@ function(cppbessot_add_db_gen_cpp_target schema_dir) VERBATIM ) + add_custom_target(db_gen_cpp_headers + DEPENDS ${_expected_model_headers} ${_expected_model_sources}) + set_target_properties(db_gen_cpp_headers PROPERTIES EXCLUDE_FROM_ALL TRUE) endfunction() diff --git a/cmake/dbGenSqlDDL.cmake b/cmake/dbGenSqlDDL.cmake index f5211d2..5b8b5d3 100644 --- a/cmake/dbGenSqlDDL.cmake +++ b/cmake/dbGenSqlDDL.cmake @@ -13,16 +13,30 @@ function(cppbessot_add_db_gen_sql_ddl_target schema_dir) # - Files under `/generated-sql-ddl/{sqlite,postgre}`. cppbessot_validate_schema_dir_name("${schema_dir}") cppbessot_get_schema_dir_path(_version_dir "${schema_dir}") + cppbessot_get_expected_odb_generation_artifacts( + _expected_model_headers + _expected_odb_sources + "${schema_dir}") - add_custom_target(db_gen_sql_ddl + set(_stamp_dir "${CMAKE_CURRENT_BINARY_DIR}/cppbessot/${schema_dir}") + set(_stamp_file "${_stamp_dir}/db_gen_sql_ddl.stamp") + + add_custom_command( + OUTPUT "${_stamp_file}" + COMMAND "${CMAKE_COMMAND}" -E make_directory "${_stamp_dir}" COMMAND "${CMAKE_COMMAND}" -DCPPBESSOT_ODB_EXECUTABLE=${CPPBESSOT_ODB_EXECUTABLE} -DCPPBESSOT_VERSION_DIR=${_version_dir} -P "${_CPPBESSOT_DB_GEN_SQL_DDL_DIR}/scripts/run_odb_sql_ddl.cmake" - DEPENDS db_gen_cpp_headers + COMMAND "${CMAKE_COMMAND}" -E touch "${_stamp_file}" + DEPENDS db_gen_cpp_headers ${_expected_model_headers} COMMENT "Generating SQL DDL snapshots for ${schema_dir} (sqlite + postgre)" VERBATIM ) + add_custom_target(db_gen_sql_ddl + DEPENDS "${_stamp_file}") + add_dependencies(db_gen_sql_ddl db_gen_cpp_headers) + set_target_properties(db_gen_sql_ddl PROPERTIES EXCLUDE_FROM_ALL TRUE) endfunction()