zephyr/cmake/cfb.cmake
Henrik Brix Andersen 9e8c9ca8fb subsys: fb: add support for generating CFB font headers at build time
Add script and cmake functions for automatically generating Character
Frame Buffer (CFB) font header files from image files, TrueType, or
OpenType font files.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
2018-11-28 11:46:00 +01:00

62 lines
2.5 KiB
CMake

# These functions can be used to generate a CFB font include file from
# a TrueType/OpenType font file or an image file.
function(generate_cfb_font
input_file # The TrueType/OpenType font file or the image file
output_file # The generated header file
width # Width of the CFB font elements in pixels
height # Height of the CFB font elements in pixels
)
add_custom_command(
OUTPUT ${output_file}
COMMAND
${PYTHON_EXECUTABLE}
${ZEPHYR_BASE}/scripts/gen_cfb_font_header.py
--input ${input_file}
--output ${output_file}
--width ${width}
--height ${height}
${ARGN} # Extra arguments are passed to gen_cfb_font_header.py
DEPENDS ${source_file}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endfunction()
function(generate_cfb_font_for_gen_target
target # The cmake target that depends on the generated file
input_file # The TrueType/OpenType font file or the image file
output_file # The generated header file
width # Width of the CFB font elements in pixels
height # Height of the CFB font elements in pixels
gen_target # The generated file target we depend on
# Any additional arguments are passed on to
# gen_cfb_font_header.py
)
generate_cfb_font(${input_file} ${output_file} ${width} ${height} ${ARGN})
# Ensure 'output_file' is generated before 'target' by creating a
# dependency between the two targets
add_dependencies(${target} ${gen_target})
endfunction()
function(generate_cfb_font_for_target
target # The cmake target that depends on the generated file
input_file # The TrueType/OpenType font file or image file
output_file # The generated header file
width # Width of the CFB font elements in pixels
height # Height of the CFB font elements in pixels
# Any additional arguments are passed on to
# gen_cfb_font_header.py
)
# Ensure 'output_file' is generated before 'target' by creating a
# 'custom_target' for it and setting up a dependency between the two
# targets
# But first create a unique name for the custom target
generate_unique_target_name_from_filename(${output_file} generated_target_name)
add_custom_target(${generated_target_name} DEPENDS ${output_file})
generate_cfb_font_for_gen_target(${target} ${input_file} ${output_file}
${width} ${height} ${generated_target_name} ${ARGN})
endfunction()