diff --git a/libc/config/gpu/api.td b/libc/config/gpu/api.td index 523ad49ffa3fd..21ddbb95b70c9 100644 --- a/libc/config/gpu/api.td +++ b/libc/config/gpu/api.td @@ -59,11 +59,6 @@ def FenvAPI: PublicAPI<"fenv.h"> { } def StdIOAPI : PublicAPI<"stdio.h"> { - let Macros = [ - SimpleMacroDef<"_IOFBF", "0">, - SimpleMacroDef<"_IOLBF", "1">, - SimpleMacroDef<"_IONBF", "2">, - ]; let Types = [ "FILE", "off_t", diff --git a/libc/config/linux/api.td b/libc/config/linux/api.td index eb0090c80b0da..60e9b70f0d8a4 100644 --- a/libc/config/linux/api.td +++ b/libc/config/linux/api.td @@ -76,9 +76,6 @@ def StdIOAPI : PublicAPI<"stdio.h"> { SimpleMacroDef<"stderr", "stderr">, SimpleMacroDef<"stdin", "stdin">, SimpleMacroDef<"stdout", "stdout">, - SimpleMacroDef<"_IOFBF", "0">, - SimpleMacroDef<"_IOLBF", "1">, - SimpleMacroDef<"_IONBF", "2">, ]; let Types = [ "FILE", diff --git a/libc/hdr/CMakeLists.txt b/libc/hdr/CMakeLists.txt index 1303280c2c5ef..da640e8c0f70c 100644 --- a/libc/hdr/CMakeLists.txt +++ b/libc/hdr/CMakeLists.txt @@ -69,6 +69,16 @@ add_proxy_header_library( libc.include.signal ) +add_proxy_header_library( + stdio_macros + HDRS + stdio_macros.h + FULL_BUILD_DEPENDS + libc.include.stdio + libc.include.llvm-libc-macros.stdio_macros + libc.include.llvm-libc-macros.file_seek_macros +) + add_proxy_header_library( sys_epoll_macros HDRS diff --git a/libc/hdr/stdio_macros.h b/libc/hdr/stdio_macros.h new file mode 100644 index 0000000000000..a212846dd8f41 --- /dev/null +++ b/libc/hdr/stdio_macros.h @@ -0,0 +1,23 @@ +//===-- Definition of macros from stdio.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_STDIO_MACROS_H +#define LLVM_LIBC_HDR_STDIO_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/file-seek-macros.h" +#include "include/llvm-libc-macros/stdio-macros.h" + +#else // Overlay mode + +#include + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_STDIO_MACROS_H diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt index 1cab1d3b812cf..f66f2cf5dda9f 100644 --- a/libc/hdr/types/CMakeLists.txt +++ b/libc/hdr/types/CMakeLists.txt @@ -135,3 +135,12 @@ add_proxy_header_library( libc.include.llvm-libc-types.struct_sigaction libc.include.signal ) + +add_proxy_header_library( + off_t + HDRS + off_t.h + FULL_BUILD_DEPENDS + libc.include.llvm-libc-types.off_t + libc.include.stdio +) diff --git a/libc/hdr/types/off_t.h b/libc/hdr/types/off_t.h new file mode 100644 index 0000000000000..abc3aa659365f --- /dev/null +++ b/libc/hdr/types/off_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for off_t ---------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_OFF_T_H +#define LLVM_LIBC_HDR_TYPES_OFF_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/off_t.h" + +#else // Overlay mode + +#include + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_OFF_T_H diff --git a/libc/include/llvm-libc-macros/stdio-macros.h b/libc/include/llvm-libc-macros/stdio-macros.h index 4664801c5731f..69fb71ad3f651 100644 --- a/libc/include/llvm-libc-macros/stdio-macros.h +++ b/libc/include/llvm-libc-macros/stdio-macros.h @@ -15,4 +15,8 @@ #define BUFSIZ 1024 +#define _IONBF 2 +#define _IOLBF 1 +#define _IOFBF 0 + #endif // LLVM_LIBC_MACROS_STDIO_MACROS_H diff --git a/libc/newhdrgen/yaml/stdio.yaml b/libc/newhdrgen/yaml/stdio.yaml index 6d2a8557f9b94..687a6d696cad6 100644 --- a/libc/newhdrgen/yaml/stdio.yaml +++ b/libc/newhdrgen/yaml/stdio.yaml @@ -1,11 +1,5 @@ header: stdio.h macros: - - macro_name: _IONBF - macro_value: 2 - - macro_name: _IOLBF - macro_value: 1 - - macro_name: _IOFBF - macro_value: 0 - macro_name: stdout macro_value: stdout - macro_name: stdin diff --git a/libc/src/__support/File/CMakeLists.txt b/libc/src/__support/File/CMakeLists.txt index 0416ac2cc902e..1b390a12424d0 100644 --- a/libc/src/__support/File/CMakeLists.txt +++ b/libc/src/__support/File/CMakeLists.txt @@ -16,6 +16,8 @@ add_object_library( libc.src.__support.CPP.span libc.src.__support.threads.mutex libc.src.__support.error_or + libc.hdr.types.off_t + libc.hdr.stdio_macros ) add_object_library( diff --git a/libc/src/__support/File/file.cpp b/libc/src/__support/File/file.cpp index 0b1a8cac21f77..08052f8d0a328 100644 --- a/libc/src/__support/File/file.cpp +++ b/libc/src/__support/File/file.cpp @@ -8,13 +8,12 @@ #include "file.h" +#include "hdr/stdio_macros.h" +#include "hdr/types/off_t.h" #include "src/__support/CPP/new.h" #include "src/__support/CPP/span.h" #include "src/errno/libc_errno.h" // For error macros -#include -#include - namespace LIBC_NAMESPACE { FileIOResult File::write_unlocked(const void *data, size_t len) { diff --git a/libc/src/__support/File/file.h b/libc/src/__support/File/file.h index cc82a7ecc9745..d804289702540 100644 --- a/libc/src/__support/File/file.h +++ b/libc/src/__support/File/file.h @@ -9,7 +9,8 @@ #ifndef LLVM_LIBC_SRC___SUPPORT_FILE_FILE_H #define LLVM_LIBC_SRC___SUPPORT_FILE_FILE_H -#include "include/llvm-libc-types/off_t.h" +#include "hdr/stdio_macros.h" +#include "hdr/types/off_t.h" #include "src/__support/CPP/new.h" #include "src/__support/error_or.h" #include "src/__support/macros/properties/architectures.h" diff --git a/libc/src/__support/File/linux/CMakeLists.txt b/libc/src/__support/File/linux/CMakeLists.txt index 8436a687116bd..10302ffb9e2b6 100644 --- a/libc/src/__support/File/linux/CMakeLists.txt +++ b/libc/src/__support/File/linux/CMakeLists.txt @@ -5,6 +5,7 @@ add_object_library( file.cpp HDRS file.h + lseekImpl.h DEPENDS libc.include.fcntl libc.include.stdio @@ -15,6 +16,8 @@ add_object_library( libc.src.errno.errno libc.src.__support.error_or libc.src.__support.File.file + libc.hdr.types.off_t + libc.hdr.stdio_macros ) add_object_library( diff --git a/libc/src/__support/File/linux/file.cpp b/libc/src/__support/File/linux/file.cpp index 0f6ed4f0a5ef4..df68570bc1043 100644 --- a/libc/src/__support/File/linux/file.cpp +++ b/libc/src/__support/File/linux/file.cpp @@ -8,6 +8,8 @@ #include "file.h" +#include "hdr/stdio_macros.h" +#include "hdr/types/off_t.h" #include "src/__support/CPP/new.h" #include "src/__support/File/file.h" #include "src/__support/File/linux/lseekImpl.h" @@ -15,8 +17,7 @@ #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/errno/libc_errno.h" // For error macros -#include // For mode_t and other flags to the open syscall -#include +#include // For mode_t and other flags to the open syscall #include // For S_IS*, S_IF*, and S_IR* flags. #include // For syscall numbers diff --git a/libc/src/__support/File/linux/file.h b/libc/src/__support/File/linux/file.h index 63b820529932b..0507109e6793f 100644 --- a/libc/src/__support/File/linux/file.h +++ b/libc/src/__support/File/linux/file.h @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// +#include "hdr/types/off_t.h" #include "src/__support/File/file.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/__support/File/linux/lseekImpl.h b/libc/src/__support/File/linux/lseekImpl.h index d1632b703d3bc..af015a2fd6a70 100644 --- a/libc/src/__support/File/linux/lseekImpl.h +++ b/libc/src/__support/File/linux/lseekImpl.h @@ -9,6 +9,7 @@ #ifndef LLVM_LIBC_SRC___SUPPORT_FILE_LINUX_LSEEKIMPL_H #define LLVM_LIBC_SRC___SUPPORT_FILE_LINUX_LSEEKIMPL_H +#include "hdr/types/off_t.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/__support/common.h" #include "src/__support/error_or.h" @@ -16,7 +17,6 @@ #include // For uint64_t. #include // For syscall numbers. -#include // For off_t. namespace LIBC_NAMESPACE { namespace internal { diff --git a/libc/src/__support/OSUtil/linux/CMakeLists.txt b/libc/src/__support/OSUtil/linux/CMakeLists.txt index 78b117fd19439..089cad454d534 100644 --- a/libc/src/__support/OSUtil/linux/CMakeLists.txt +++ b/libc/src/__support/OSUtil/linux/CMakeLists.txt @@ -21,4 +21,5 @@ add_object_library( libc.hdr.types.struct_flock libc.hdr.types.struct_flock64 libc.hdr.types.struct_f_owner_ex + libc.hdr.types.off_t ) diff --git a/libc/src/__support/OSUtil/linux/fcntl.cpp b/libc/src/__support/OSUtil/linux/fcntl.cpp index b6483bb7534d6..d5e850a904703 100644 --- a/libc/src/__support/OSUtil/linux/fcntl.cpp +++ b/libc/src/__support/OSUtil/linux/fcntl.cpp @@ -9,6 +9,7 @@ #include "src/__support/OSUtil/fcntl.h" #include "hdr/fcntl_macros.h" +#include "hdr/types/off_t.h" #include "hdr/types/struct_f_owner_ex.h" #include "hdr/types/struct_flock.h" #include "hdr/types/struct_flock64.h" diff --git a/libc/src/stdio/CMakeLists.txt b/libc/src/stdio/CMakeLists.txt index a659d9e847a9e..18702f589474b 100644 --- a/libc/src/stdio/CMakeLists.txt +++ b/libc/src/stdio/CMakeLists.txt @@ -61,7 +61,8 @@ add_entrypoint_object( HDRS fopencookie.h DEPENDS - libc.include.stdio + libc.hdr.stdio_macros + libc.hdr.types.off_t libc.src.__support.CPP.new libc.src.__support.File.file ) @@ -74,7 +75,7 @@ add_entrypoint_object( setbuf.h DEPENDS libc.src.errno.errno - libc.include.stdio + libc.hdr.types.off_t libc.src.__support.File.file libc.src.__support.File.platform_file ) diff --git a/libc/src/stdio/fopencookie.cpp b/libc/src/stdio/fopencookie.cpp index 17b8ae199d3db..22614757248ab 100644 --- a/libc/src/stdio/fopencookie.cpp +++ b/libc/src/stdio/fopencookie.cpp @@ -7,12 +7,12 @@ //===----------------------------------------------------------------------===// #include "src/stdio/fopencookie.h" +#include "hdr/stdio_macros.h" +#include "hdr/types/off_t.h" #include "src/__support/CPP/new.h" #include "src/__support/File/file.h" #include "src/errno/libc_errno.h" -#include -#include namespace LIBC_NAMESPACE { diff --git a/libc/src/stdio/setbuf.cpp b/libc/src/stdio/setbuf.cpp index 8819901849a08..61a5cc617828d 100644 --- a/libc/src/stdio/setbuf.cpp +++ b/libc/src/stdio/setbuf.cpp @@ -7,10 +7,9 @@ //===----------------------------------------------------------------------===// #include "src/stdio/setbuf.h" +#include "hdr/stdio_macros.h" #include "src/__support/File/file.h" - #include "src/errno/libc_errno.h" -#include namespace LIBC_NAMESPACE { diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel index 76b6aac185f5e..b521d28dc2ae0 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -138,6 +138,11 @@ libc_support_library( hdrs = ["hdr/float_macros.h"], ) +libc_support_library( + name = "hdr_stdio_macros", + hdrs = ["hdr/stdio_macros.h"], +) + ############################ Type Proxy Header Files ########################### libc_support_library( @@ -180,6 +185,11 @@ libc_support_library( hdrs = ["hdr/types/pid_t.h"], ) +libc_support_library( + name = "types_off_t", + hdrs = ["hdr/types/off_t.h"], +) + ############################### Support libraries ############################## libc_support_library( @@ -667,6 +677,8 @@ libc_support_library( ":__support_error_or", ":__support_threads_mutex", ":errno", + ":hdr_stdio_macros", + ":types_off_t", ], ) @@ -678,6 +690,7 @@ libc_support_library( ":__support_error_or", ":__support_osutil_syscall", ":errno", + ":types_off_t", ], )