Skip to content

Commit 5981335

Browse files
[libc] Fix scanf cmake for targets without FILE (#128056)
Another followup fix to #121215 The new cmake wouldn't define the readerat all if the target wasn't GPU or didn't have a definition of FILE. This patch rewrites the cmake to be more general. As a followup, I'd like to make `use_system_file` consistent between /test and /src. Currently in /src it includes the `COMPILE_OPTIONS` and in /test it does not.
1 parent 84c8848 commit 5981335

File tree

2 files changed

+32
-40
lines changed

2 files changed

+32
-40
lines changed

libc/src/stdio/scanf_core/CMakeLists.txt

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ if(scanf_config_copts)
88
list(PREPEND scanf_config_copts "COMPILE_OPTIONS")
99
endif()
1010

11+
12+
list(APPEND file_deps libc.hdr.types.FILE)
13+
if(LIBC_TARGET_OS_IS_GPU)
14+
list(APPEND file_deps
15+
libc.src.stdio.getc
16+
libc.src.stdio.ungetc
17+
libc.src.stdio.ferror
18+
)
19+
elseif(LLVM_LIBC_FULL_BUILD)
20+
list(APPEND file_deps
21+
libc.src.__support.File.file
22+
)
23+
endif()
24+
1125
add_header_library(
1226
scanf_config
1327
HDRS
@@ -52,30 +66,19 @@ add_object_library(
5266
.converter
5367
.core_structs
5468
libc.src.__support.arg_list
69+
${file_deps}
70+
${use_system_file}
5571
)
5672

57-
if(LIBC_TARGET_OS_IS_GPU)
58-
add_header_library(
59-
reader
60-
HDRS
61-
reader.h
62-
DEPENDS
63-
libc.src.__support.macros.attributes
64-
libc.src.stdio.getc
65-
libc.src.stdio.ungetc
66-
)
67-
elseif((TARGET libc.src.__support.File.file) OR (NOT LLVM_LIBC_FULL_BUILD))
6873
add_header_library(
6974
reader
7075
HDRS
7176
reader.h
7277
DEPENDS
7378
libc.src.__support.macros.attributes
74-
libc.hdr.types.FILE
75-
libc.src.__support.File.file
79+
${file_deps}
7680
${use_system_file}
7781
)
78-
endif()
7982

8083
add_object_library(
8184
converter
@@ -103,33 +106,19 @@ add_object_library(
103106
libc.src.__support.CPP.limits
104107
libc.src.__support.char_vector
105108
libc.src.__support.str_to_float
109+
${file_deps}
110+
${use_system_file}
106111
)
107112

108-
if(LIBC_TARGET_OS_IS_GPU)
109-
add_header_library(
110-
vfscanf_internal
111-
HDRS
112-
vfscanf_internal.h
113-
DEPENDS
114-
.reader
115-
.scanf_main
116-
libc.include.stdio
117-
libc.src.__support.arg_list
118-
libc.src.stdio.getc
119-
libc.src.stdio.ungetc
120-
libc.src.stdio.ferror
121-
)
122-
elseif(TARGET libc.src.__support.File.file OR (NOT LLVM_LIBC_FULL_BUILD))
123-
add_header_library(
113+
#TODO: condense the file-related code as possible.
114+
add_header_library(
124115
vfscanf_internal
125116
HDRS
126117
vfscanf_internal.h
127118
DEPENDS
128119
.reader
129120
.scanf_main
130-
libc.include.stdio
131-
libc.src.__support.File.file
132121
libc.src.__support.arg_list
122+
${file_deps}
133123
${use_system_file}
134-
)
135-
endif()
124+
)

libc/test/src/stdio/scanf_core/CMakeLists.txt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
if(NOT(LLVM_LIBC_FULL_BUILD))
2+
# in overlay mode, use the system's file to test the reader.
3+
set(use_system_file "-DLIBC_COPT_STDIO_USE_SYSTEM_FILE")
4+
endif()
5+
16
add_libc_unittest(
27
parser_test
38
SUITE
@@ -22,14 +27,10 @@ add_libc_unittest(
2227
DEPENDS
2328
libc.src.stdio.scanf_core.reader
2429
libc.src.__support.CPP.string_view
30+
COMPILE_OPTIONS
31+
${use_system_file}
2532
)
2633

27-
if(NOT (TARGET libc.src.__support.File.file))
28-
# Not all platforms have a file implementation. If file is unvailable,
29-
# then we must skip all the parts that need file.
30-
return()
31-
endif()
32-
3334
add_libc_unittest(
3435
converter_test
3536
SUITE
@@ -40,4 +41,6 @@ add_libc_unittest(
4041
libc.src.stdio.scanf_core.reader
4142
libc.src.stdio.scanf_core.converter
4243
libc.src.__support.CPP.string_view
44+
COMPILE_OPTIONS
45+
${use_system_file}
4346
)

0 commit comments

Comments
 (0)