#Device Tree Compiler #Builds on both UNIX and WIN32 project (dtc) cmake_minimum_required(VERSION 3.1) find_package (BISON REQUIRED) find_package (FLEX REQUIRED) if (WIN32) find_package (getopt CONFIG REQUIRED) endif() flex_target (dtc_lexer dtc-lexer.l ${CMAKE_CURRENT_BINARY_DIR}/dtc-lexer.lex.c DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/dtc-parser.tab.h ) bison_target (dtc_parser dtc-parser.y ${CMAKE_CURRENT_BINARY_DIR}/dtc-parser.tab.c DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/dtc-parser.tab.h ) add_flex_bison_dependency (dtc_lexer dtc_parser) add_executable (dtc "") target_sources (dtc PRIVATE ${FLEX_dtc_lexer_OUTPUTS} ${BISON_dtc_parser_OUTPUTS} ) target_include_directories (dtc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) target_compile_definitions (dtc PRIVATE YY_NO_UNISTD_H) add_library (util STATIC util.c util.h ) target_include_directories (util PUBLIC libfdt) if (WIN32) target_link_libraries (util getopt) endif() add_library (fdt STATIC "") target_sources (fdt PRIVATE libfdt/fdt.c libfdt/fdt_ro.c libfdt/fdt_wip.c libfdt/fdt_sw.c libfdt/fdt_rw.c libfdt/fdt_strerror.c libfdt/fdt_empty_tree.c libfdt/fdt_addresses.c libfdt/fdt_overlay.c libfdt/libfdt_internal.h PUBLIC $ $ $ $ $ $ ) target_include_directories (fdt PUBLIC libfdt) target_sources (dtc PRIVATE checks.c data.c dtc.c dtc.h flattree.c livetree.c srcpos.c srcpos.h treesource.c ) if (WIN32) target_sources (dtc PRIVATE win32_fstree.c) else() target_sources (dtc PRIVATE fstree.c) endif() target_link_libraries (dtc PRIVATE util fdt) add_executable (fdtdump fdtdump.c) target_link_libraries (fdtdump PRIVATE util fdt) add_executable (fdtget fdtget.c) target_link_libraries (fdtget PRIVATE util fdt) add_executable (fdtput fdtput.c) target_link_libraries (fdtput PRIVATE util fdt) add_executable (fdtoverlay fdtoverlay.c) target_link_libraries (fdtoverlay PRIVATE util fdt) install (TARGETS fdt dtc fdtdump fdtget fdtput fdtoverlay EXPORT dtc-config ARCHIVE DESTINATION lib RUNTIME DESTINATION bin INCLUDES DESTINATION include) install (EXPORT dtc-config DESTINATION cmake) install (FILES $ DESTINATION include/libfdt)