[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