vengi/cmake/gendbmodel.cmake

20 lines
861 B
CMake

function(generate_db_models TARGET INPUT OUTPUT)
set(GEN_DIR ${GENERATE_DIR}/dbmodels/${TARGET}/)
file(MAKE_DIRECTORY ${GEN_DIR})
target_include_directories(${TARGET} PUBLIC ${GEN_DIR})
add_custom_command(
OUTPUT ${GEN_DIR}${OUTPUT}
COMMENT "Generate ${OUTPUT}"
COMMAND ${CMAKE_COMMAND} -E env "APP_HOMEPATH=${CMAKE_CURRENT_BINARY_DIR}/" $<TARGET_FILE:databasetool> --tablefile ${INPUT} --outfile ${GEN_DIR}${OUTPUT}
DEPENDS databasetool ${INPUT}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
add_custom_target(GenerateDatabaseModelBindings${TARGET}
DEPENDS ${GEN_DIR}${OUTPUT}
COMMENT "Generate database model bindings for ${TARGET} in ${GEN_DIR}"
)
engine_mark_as_generated(${GEN_DIR}${OUTPUT})
add_dependencies(${TARGET} GenerateDatabaseModelBindings${TARGET})
add_dependencies(codegen GenerateDatabaseModelBindings${TARGET})
endfunction()