[libc-commits] [libc] [libc] cmake configruation for newhdrgen (PR #98257)
via libc-commits
libc-commits at lists.llvm.org
Tue Jul 9 19:46:13 PDT 2024
================
@@ -66,6 +67,90 @@ function(add_header target_name)
)
endfunction(add_header)
+function(add_yaml_header target_name)
+ cmake_parse_arguments(
+ "ADD_YAML_HDR"
+ "PUBLIC" # No optional arguments
+ "YAML_FILE;DEF_FILE;GEN_HDR" # Single value arguments
+ "DEPENDS" # Multi value arguments
+ ${ARGN}
+ )
+ get_fq_target_name(${target_name} fq_target_name)
+ if(NOT LLVM_LIBC_FULL_BUILD)
+ # We don't want to use generated headers if we are doing a non-full-build.
+ add_library(${fq_target_name} INTERFACE)
+ return()
+ endif()
+ if(NOT ADD_YAML_HDR_DEF_FILE)
+ message(FATAL_ERROR "`add_yaml_hdr` rule requires DEF_FILE to be specified.")
+ endif()
+ if(NOT ADD_YAML_HDR_GEN_HDR)
+ message(FATAL_ERROR "`add_yaml_hdr` rule requires GEN_HDR to be specified.")
+ endif()
+ if(NOT ADD_YAML_HDR_YAML_FILE)
+ message(FATAL_ERROR "`add_yaml_hdr` rule requires YAML_FILE to be specified.")
+ endif()
+
+ set(absolute_path ${CMAKE_CURRENT_SOURCE_DIR}/${ADD_YAML_HDR_GEN_HDR})
+ file(RELATIVE_PATH relative_path ${LIBC_INCLUDE_SOURCE_DIR} ${absolute_path})
+ set(out_file ${LIBC_INCLUDE_DIR}/${relative_path})
+ set(yaml_file ${CMAKE_SOURCE_DIR}/${ADD_YAML_HDR_YAML_FILE})
+ set(def_file ${CMAKE_CURRENT_SOURCE_DIR}/${ADD_YAML_HDR_DEF_FILE})
+
+ set(fq_data_files "")
+ if(ADD_YAML_HDR_DATA_FILES)
+ foreach(data_file IN LISTS ADD_YAML_HDR_DATA_FILES)
+ list(APPEND fq_data_files "${CMAKE_CURRENT_SOURCE_DIR}/${data_file}")
+ endforeach(data_file)
+ endif()
+
+ set(entry_points "${TARGET_ENTRYPOINT_NAME_LIST}")
+ list(TRANSFORM entry_points PREPEND "--e=")
+
+ add_custom_command(
----------------
lntue wrote:
Don't use `add_custom_command` and depending on its output file. Just do `add_custom_target` with a `COMMAND` field for easier to manage dependency.
https://github.com/llvm/llvm-project/pull/98257
More information about the libc-commits
mailing list