30 lines
996 B
CMake
30 lines
996 B
CMake
add_custom_target(benum-generated)
|
|
|
|
function(target_benum_sources target)
|
|
set(benum ${LEFTONE_TOOL_DIR}/benum.sh)
|
|
|
|
set(output_files "")
|
|
foreach (path ${ARGN})
|
|
get_filename_component(dirname ${path} DIRECTORY)
|
|
get_filename_component(basename ${path} NAME_WE)
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/benum/${dirname})
|
|
|
|
set(in ${CMAKE_CURRENT_SOURCE_DIR}/${path})
|
|
set(out ${CMAKE_CURRENT_BINARY_DIR}/benum/${dirname}/${basename})
|
|
add_custom_command(
|
|
OUTPUT ${out}.c ${out}.h
|
|
COMMAND bash ${benum} ${out} ${in} < ${in}
|
|
DEPENDS ${path} ${benum}
|
|
COMMENT "generating benum utilities for ${path}"
|
|
VERBATIM)
|
|
target_sources(${target} PRIVATE ${out}.c)
|
|
|
|
list(APPEND output_files ${out}.c ${out}.h)
|
|
endforeach()
|
|
|
|
add_custom_target(${target}-benum-generated DEPENDS ${output_files})
|
|
add_dependencies(${target} ${target}-benum-generated)
|
|
add_dependencies(benum-generated ${target}-benum-generated)
|
|
|
|
endfunction()
|