[libc-commits] [libc] [libc] cmake configruation for newhdrgen (PR #98257)
Michael Jones via libc-commits
libc-commits at lists.llvm.org
Wed Jul 10 13:23:09 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_target(
+ generate_${ADD_YAML_HDR_GEN_HDR}
+ COMMAND ${Python3_EXECUTABLE} ${LIBC_SOURCE_DIR}/newhdrgen/yaml_to_classes.py
+ ${yaml_file}
+ ${def_file}
+ ${entry_points}
+ --output_dir ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS ${yaml_file} ${def_file} ${fq_data_files}
+ COMMENT "Generating header ${ADD_YAML_HDR_GEN_HDR} from ${yaml_file} and ${def_file}"
+ )
+
----------------
michaelrj-google wrote:
it looks like in the old version the GPU build had an extra condition here that created a second set of headers that only contained the function prototypes. @jhuber6 do you still need that?
https://github.com/llvm/llvm-project/pull/98257
More information about the libc-commits
mailing list