aboutsummaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorPetr Hosek <phosek@google.com>2026-01-09 23:21:16 -0800
committerGitHub <noreply@github.com>2026-01-09 23:21:16 -0800
commit9a02a3c7f4cc0a5fa807556abc862f1c4121663d (patch)
treed5aafb9a36e5b7a5085a13294304a3fa2e0733a4 /libc
parentf7e7132c8edddb78a72ab3f6b9e85f8f920c3773 (diff)
downloadllvm-9a02a3c7f4cc0a5fa807556abc862f1c4121663d.tar.gz
llvm-9a02a3c7f4cc0a5fa807556abc862f1c4121663d.tar.bz2
llvm-9a02a3c7f4cc0a5fa807556abc862f1c4121663d.zip
[libc] Support for generating proxy headers (#175279)
This is a follow up to #174823 which adds build system integration.
Diffstat (limited to 'libc')
-rw-r--r--libc/cmake/modules/LLVMLibCHeaderRules.cmake10
-rw-r--r--libc/cmake/modules/LLVMLibCObjectRules.cmake1
-rw-r--r--libc/cmake/modules/LLVMLibCTestRules.cmake1
-rw-r--r--libc/utils/hdrgen/hdrgen/header.py1
4 files changed, 11 insertions, 2 deletions
diff --git a/libc/cmake/modules/LLVMLibCHeaderRules.cmake b/libc/cmake/modules/LLVMLibCHeaderRules.cmake
index b092b37ffd8d..0704ae1c79e1 100644
--- a/libc/cmake/modules/LLVMLibCHeaderRules.cmake
+++ b/libc/cmake/modules/LLVMLibCHeaderRules.cmake
@@ -75,7 +75,7 @@ endfunction(add_header)
function(add_gen_header target_name)
cmake_parse_arguments(
"ADD_GEN_HDR"
- "PUBLIC" # No optional arguments
+ "PROXY;PUBLIC" # No optional arguments
"YAML_FILE;GEN_HDR" # Single value arguments
"DEPENDS" # Multi value arguments
${ARGN}
@@ -94,7 +94,12 @@ function(add_gen_header target_name)
set(absolute_path ${CMAKE_CURRENT_SOURCE_DIR}/${ADD_GEN_HDR_GEN_HDR})
file(RELATIVE_PATH relative_path ${LIBC_INCLUDE_SOURCE_DIR} ${absolute_path})
- set(out_file ${LIBC_INCLUDE_DIR}/${relative_path})
+ if (ADD_GEN_HDR_PROXY)
+ set(out_file ${LIBC_BUILD_DIR}/hdr/${relative_path})
+ set(proxy_arg "--proxy")
+ else()
+ set(out_file ${LIBC_INCLUDE_DIR}/${relative_path})
+ endif()
set(dep_file "${out_file}.d")
set(yaml_file ${CMAKE_SOURCE_DIR}/${ADD_GEN_HDR_YAML_FILE})
@@ -113,6 +118,7 @@ function(add_gen_header target_name)
--output ${out_file}
--depfile ${dep_file}
--write-if-changed
+ ${proxy_arg}
${entry_points}
${yaml_file}
DEPENDS ${yaml_file}
diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake
index 6c534dfccec1..c90feff035c6 100644
--- a/libc/cmake/modules/LLVMLibCObjectRules.cmake
+++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake
@@ -92,6 +92,7 @@ function(create_object_library fq_target_name)
)
target_include_directories(${fq_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
target_include_directories(${fq_target_name} PRIVATE ${LIBC_SOURCE_DIR})
+ target_include_directories(${fq_target_name} PRIVATE ${LIBC_BUILD_DIR})
target_compile_options(${fq_target_name} PRIVATE ${compile_options})
#loop through the deps, check if any have the TARGET_TYPE of ENTRYPOINT_OBJ_TARGET_TYPE, and print a warning if they do.
diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index 933b81b9f1d4..ba6493370876 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -290,6 +290,7 @@ function(create_libc_unittest fq_target_name)
)
target_include_directories(${fq_build_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_SOURCE_DIR})
+ target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_BUILD_DIR})
target_compile_options(${fq_build_target_name} PRIVATE ${compile_options})
target_link_options(${fq_build_target_name} PRIVATE ${link_options})
diff --git a/libc/utils/hdrgen/hdrgen/header.py b/libc/utils/hdrgen/hdrgen/header.py
index 5d2350ab1436..b69d22494a7a 100644
--- a/libc/utils/hdrgen/hdrgen/header.py
+++ b/libc/utils/hdrgen/hdrgen/header.py
@@ -88,6 +88,7 @@ PROXY_TEMPLATE = """\
#ifdef LIBC_FULL_BUILD
{include_lines}
+{macro_lines}
#else // Overlay mode