about summary refs log tree commit diff
path: root/io/Makefile
blob: b896484320d35c00cc2816203404886dbe454888 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Copyright (C) 1992-2022 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <https://www.gnu.org/licenses/>.

#
#	Sub-makefile for I/O portion of the library.
#
subdir	:= io

include ../Makeconfig

headers := sys/stat.h bits/stat.h sys/statfs.h bits/statfs.h sys/vfs.h \
	   sys/statvfs.h bits/statvfs.h fcntl.h sys/fcntl.h bits/fcntl.h \
	   poll.h sys/poll.h bits/poll.h bits/fcntl2.h bits/poll2.h \
	   bits/statx.h bits/statx-generic.h bits/types/struct_statx.h \
	   bits/types/struct_statx_timestamp.h \
	   utime.h ftw.h fts.h sys/sendfile.h

routines :=								\
	utime								\
	mkfifo mkfifoat							\
	stat fstat lstat stat64 fstat64 lstat64 fstatat fstatat64	\
	statx								\
	mknod mknodat 							\
	statfs fstatfs statfs64 fstatfs64				\
	statvfs fstatvfs statvfs64 fstatvfs64				\
	umask chmod fchmod lchmod fchmodat				\
	mkdir mkdirat							\
	open open_2 open64 open64_2 openat openat_2 openat64 openat64_2	\
	read write lseek lseek64 access euidaccess faccessat		\
	fcntl fcntl64 flock lockf lockf64				\
	close dup dup2 dup3 pipe pipe2					\
	creat creat64							\
	chdir fchdir							\
	getcwd getwd getdirname						\
	chown fchown lchown fchownat					\
	ttyname ttyname_r isatty					\
	link linkat symlink symlinkat readlink readlinkat		\
	unlink unlinkat rmdir						\
	ftw ftw64 fts fts64 poll ppoll					\
	posix_fadvise posix_fadvise64					\
	posix_fallocate posix_fallocate64				\
	sendfile sendfile64 copy_file_range 				\
	utimensat futimens file_change_detection			\
	fts64-time64							\
	ftw64-time64							\
	closefrom close_range


others		:= pwd
test-srcs	:= ftwtest ftwtest-time64
tests		:= test-utime test-stat test-stat2 test-lfs tst-getcwd \
		   tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 bug-ftw4 tst-statvfs \
		   tst-openat tst-unlinkat tst-fstatat tst-futimesat \
		   tst-renameat tst-fchownat tst-fchmodat tst-faccessat \
		   tst-symlinkat tst-linkat tst-readlinkat tst-mkdirat \
		   tst-mknodat tst-mkfifoat tst-ttyname_r bug-ftw5 \
		   tst-posix_fallocate tst-posix_fallocate64 \
		   tst-fts tst-fts-lfs tst-open-tmpfile \
		   tst-copy_file_range tst-getcwd-abspath tst-lockf \
		   tst-ftw-lnk tst-lchmod \
		   tst-ftw-bz26353 tst-stat tst-stat-lfs \
		   tst-utime \
		   tst-utimes \
		   tst-futimes \
		   tst-lutimes \
		   tst-futimens \
		   tst-utimensat \
		   tst-closefrom \
		   tst-close_range \
		   tst-ftw-bz28126 \
		   tst-fcntl-lock \
		   tst-fcntl-lock-lfs

tests-time64 := \
  tst-fcntl-time64 \
  tst-fts-time64 \
  tst-futimens-time64 \
  tst-futimes-time64\
  tst-futimesat-time64 \
  tst-lchmod-time64 \
  tst-lutimes-time64 \
  tst-stat-time64 \
  tst-utime-time64 \
  tst-utimensat-time64 \
  tst-utimes-time64 \
  # tests-time64

# Likewise for statx, but we do not need static linking here.
tests-internal += tst-statx tst-file_change_detection
tests-static += tst-statx

ifeq ($(run-built-tests),yes)
tests-special += $(objpfx)ftwtest.out \
		 $(objpfx)ftwtest-time64.out
endif

include ../Rules

CFLAGS-open.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-open64.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-creat.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-creat64.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-fcntl.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-fcntl64.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-poll.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-ppoll.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-lockf.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-lockf64.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-statfs.c += -fexceptions
CFLAGS-fstatfs.c += -fexceptions
CFLAGS-statvfs.c += -fexceptions
CFLAGS-fstatvfs.c += -fexceptions
CFLAGS-fts.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
CFLAGS-fts64.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
CFLAGS-fts64-time64.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
CFLAGS-ftw.c += $(uses-callbacks) -fexceptions
CFLAGS-ftw64.c += $(uses-callbacks) -fexceptions
CFLAGS-ftw64-time64.c += $(uses-callbacks) -fexceptions
CFLAGS-posix_fallocate.c += -fexceptions
CFLAGS-posix_fallocate64.c += -fexceptions
CFLAGS-fallocate.c += -fexceptions
CFLAGS-fallocate64.c += -fexceptions
CFLAGS-read.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-write.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-close.c += -fexceptions -fasynchronous-unwind-tables

CFLAGS-test-stat.c += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
CFLAGS-test-lfs.c += -D_LARGEFILE64_SOURCE
CFLAGS-tst-lchmod.c += -D_FILE_OFFSET_BITS=64

test-stat2-ARGS = Makefile . $(objpfx)test-stat2

tst-statvfs-ARGS = $(objpfx)tst-statvfs tst-statvfs.c /tmp

tst-open-tmpfile-ARGS = --test-dir=$(objpfx)

CFLAGS-ftwtest-time64.c += -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64

ifeq ($(run-built-tests),yes)
$(objpfx)ftwtest.out: ftwtest-sh $(objpfx)ftwtest
	$(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
	$(evaluate-test)

$(objpfx)ftwtest-time64.out: ftwtest-sh $(objpfx)ftwtest-time64
	$(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
	$(evaluate-test)
endif