-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[libc][bazel] add targets to build the scanf family #128082
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Now that scanf is a little cleaner, this patch adds rules to build it via bazel.
@llvm/pr-subscribers-libc Author: Michael Jones (michaelrj-google) ChangesNow that scanf is a little cleaner, this patch adds rules to build it Full diff: https://github.com/llvm/llvm-project/pull/128082.diff 2 Files Affected:
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index b9847caa94f58..fb68144302c0e 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -4611,6 +4611,178 @@ libc_function(
],
)
+libc_support_library(
+ name = "scanf_config",
+ hdrs = ["src/stdio/scanf_core/scanf_config.h"],
+ deps = [
+ ],
+)
+
+libc_support_library(
+ name = "scanf_core_structs",
+ hdrs = ["src/stdio/scanf_core/core_structs.h"],
+ deps = [
+ ":__support_cpp_bitset",
+ ":__support_cpp_string_view",
+ ":__support_fputil_fp_bits",
+ ":scanf_config",
+ ],
+)
+
+libc_support_library(
+ name = "scanf_parser",
+ hdrs = ["src/stdio/scanf_core/parser.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_cpp_bitset",
+ ":__support_ctype_utils",
+ ":__support_str_to_integer",
+ ":scanf_config",
+ ":scanf_core_structs",
+ ],
+)
+
+libc_support_library(
+ name = "scanf_reader",
+ hdrs = ["src/stdio/scanf_core/reader.h"],
+ deps = [
+ ":__support_cpp_string_view",
+ ":__support_macros_attributes",
+ ":types_FILE",
+ ],
+)
+
+libc_support_library(
+ name = "scanf_converter",
+ srcs = [
+ "src/stdio/scanf_core/converter.cpp",
+ "src/stdio/scanf_core/float_converter.cpp",
+ "src/stdio/scanf_core/int_converter.cpp",
+ "src/stdio/scanf_core/ptr_converter.cpp",
+ "src/stdio/scanf_core/string_converter.cpp",
+ ],
+ hdrs = [
+ "src/stdio/scanf_core/converter.h",
+ "src/stdio/scanf_core/converter_utils.h",
+ "src/stdio/scanf_core/current_pos_converter.h",
+ "src/stdio/scanf_core/float_converter.h",
+ "src/stdio/scanf_core/int_converter.h",
+ "src/stdio/scanf_core/ptr_converter.h",
+ "src/stdio/scanf_core/string_converter.h",
+ ],
+ deps = [
+ ":__support_char_vector",
+ ":__support_cpp_bitset",
+ ":__support_cpp_limits",
+ ":__support_cpp_string_view",
+ ":__support_ctype_utils",
+ ":__support_str_to_float",
+ ":scanf_core_structs",
+ ":scanf_reader",
+ ],
+)
+
+libc_support_library(
+ name = "scanf_main",
+ srcs = ["src/stdio/scanf_core/scanf_main.cpp"],
+ hdrs = ["src/stdio/scanf_core/scanf_main.h"],
+ deps = [
+ ":__support_arg_list",
+ ":scanf_config",
+ ":scanf_converter",
+ ":scanf_core_structs",
+ ":scanf_parser",
+ ":scanf_reader",
+ ],
+)
+
+libc_support_library(
+ name = "vfscanf_internal",
+ hdrs = ["src/stdio/scanf_core/vfscanf_internal.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":__support_macros_attributes",
+ ":scanf_main",
+ ":scanf_reader",
+ ":types_FILE",
+ ],
+)
+
+libc_function(
+ name = "scanf",
+ srcs = ["src/stdio/scanf.cpp"],
+ hdrs = ["src/stdio/scanf.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":types_FILE",
+ ":vfscanf_internal",
+ ],
+)
+
+libc_function(
+ name = "vscanf",
+ srcs = ["src/stdio/vscanf.cpp"],
+ hdrs = ["src/stdio/vscanf.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":types_FILE",
+ ":vfscanf_internal",
+ ],
+)
+
+libc_function(
+ name = "fscanf",
+ srcs = ["src/stdio/fscanf.cpp"],
+ hdrs = ["src/stdio/fscanf.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":types_FILE",
+ ":vfscanf_internal",
+ ],
+)
+
+libc_function(
+ name = "vfscanf",
+ srcs = ["src/stdio/vfscanf.cpp"],
+ hdrs = ["src/stdio/vfscanf.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":types_FILE",
+ ":vfscanf_internal",
+ ],
+)
+
+libc_function(
+ name = "sscanf",
+ srcs = ["src/stdio/sscanf.cpp"],
+ hdrs = ["src/stdio/sscanf.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":scanf_main",
+ ":scanf_reader",
+ ":types_FILE",
+ ],
+)
+
+libc_function(
+ name = "vsscanf",
+ srcs = ["src/stdio/vsscanf.cpp"],
+ hdrs = ["src/stdio/vsscanf.h"],
+ deps = [
+ ":__support_arg_list",
+ ":__support_file_file",
+ ":scanf_main",
+ ":scanf_reader",
+ ":types_FILE",
+ ],
+)
+
libc_function(
name = "remove",
srcs = ["src/stdio/linux/remove.cpp"],
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/stdio/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/stdio/BUILD.bazel
index 145ef86380b62..c3865ea07ea91 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/stdio/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/stdio/BUILD.bazel
@@ -132,3 +132,43 @@ libc_test(
"//libc:close",
],
)
+
+libc_test(
+ name = "sscanf_test",
+ srcs = ["sscanf_test.cpp"],
+ libc_function_deps = [
+ "//libc:sscanf",
+ ],
+ deps = [
+ "//libc:__support_cpp_limits",
+ "//libc:__support_fputil_fp_bits",
+ "//libc:hdr_stdio_macros",
+ "//libc/test/UnitTest:fp_test_helpers",
+ ],
+)
+
+libc_test(
+ name = "fscanf_test",
+ srcs = ["fscanf_test.cpp"],
+ libc_function_deps = [
+ "//libc:fscanf",
+ ],
+ deps = ["//libc:__support_cpp_string_view"],
+)
+
+libc_test(
+ name = "vsscanf_test",
+ srcs = ["vsscanf_test.cpp"],
+ libc_function_deps = [
+ "//libc:vsscanf",
+ ],
+)
+
+libc_test(
+ name = "vfscanf_test",
+ srcs = ["vfscanf_test.cpp"],
+ libc_function_deps = [
+ "//libc:vfscanf",
+ ],
+ deps = ["//libc:__support_cpp_string_view"],
+)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You might want to use the term targets
instead of rules
in the PR title. A rule
would be something like the implementation of the binary_alias
:
binary_alias = rule( |
The libc_support_library
is in fact not a rule but a macro
. You can see this because there is no rule
keyword anywhere in its definition and instead it's effectively just a regular function defined via def
:
def libc_support_library(name, **kwargs): |
Ultimately this macro expands to targets
, i.e. instantiations of the cc_library
rule:
native.cc_library( |
Thanks for the clarification |
Now that scanf is a little cleaner, this patch adds rules to build it
via bazel.