about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/Makefile
blob: 0dece5642a375c43aefb309c36be632a74bd89fd (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
ifeq ($(subdir),csu)
CFLAGS-init-first.c = -fkeep-inline-functions

sysdep_routines += errno-loc
endif

ifeq ($(subdir),db2)
CPPFLAGS += -DHAVE_LLSEEK=1
endif

ifeq ($(subdir),misc)
sysdep_routines += sysctl clone llseek

sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \
		  sys/io.h sys/klog.h sys/kdaemon.h \
		  sys/user.h sys/sysmacros.h sys/procfs.h sys/prctl.h \
		  sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \
		  sys/quota.h sys/fsuid.h bits/mman.h \
		  scsi/sg.h sys/pci.h sys/ultrasound.h

install-others += $(inst_includedir)/bits/syscall.h

# Generate the list of SYS_* macros for the system calls (__NR_* macros).
$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h
	rm -f $(@:.h=.d)
	echo > $(@:.d=.h).new \
	     '/* Generated at libc build time from kernel syscall list.  */'
	SUNPRO_DEPENDENCIES='$(@:.h=.d) $(patsubst $(objpfx)%,$$(objpfx)%,\
						   $(@:.d=.h) $(@:.h=.d))' \
	$(CC) -E -x c $< -D_LIBC -dM | \
	sed -n >> $(@:.d=.h).new \
	      's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p'
	mv -f $(@:.d=.h).new $(@:.d=.h)

$(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h
	$(make-target-directory)
	if test -r $@ && cmp -s $< $@; \
        then echo 'bits/syscall.h unchanged'; \
        else $(INSTALL_DATA) $< $@; fi

ifndef no_deps
# Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
-include $(objpfx)syscall-list.d
endif
generated += syscall-list.h syscall-list.d
endif

ifeq ($(subdir),time)
sysdep_headers += sys/timex.h
endif

ifeq ($(subdir),socket)
sysdep_headers += net/if.h net/if_ppp.h net/ppp-comp.h \
		  net/ppp_defs.h net/if_arp.h net/route.h net/ethernet.h \
		  net/if_slip.h net/if_packet.h
sysdep_routines += cmsg_nxthdr
endif

ifeq ($(subdir),sunrpc)
sysdep_headers += nfs/nfs.h
endif

ifeq ($(subdir),termios)
sysdep_headers += termio.h
endif

ifeq ($(subdir),stdio-common)
# Just disable the auto generation in sysdeps/generic
inhibit-siglist := yes

ifeq ($(versioning),yes)
sysdep_routines += oldsiglist
endif

shared-only-routines += oldsiglist
endif

ifeq ($(subdir),inet)
sysdep_headers += netinet/in_systm.h netinet/udp.h \
		  netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \
		  netinet/ip_fw.h  netinet/ip_icmp.h netipx/ipx.h \
		  sys/socketvar.h netax25/ax25.h netrom/netrom.h \
		  netrose/rose.h
endif

ifeq ($(subdir),posix)
sysdep_routines += s_pread64 s_pwrite64
endif

# Don't compile the ctype glue code, since there is no old non-GNU C library.
inhibit-glue = yes

# Tell sysdeps/posix/Makefile that we create stdio_lim.h differently.
inhibit-stdio_lim = yes

$(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d: \
 $(..)sysdeps/unix/sysv/linux/stdio_%.h.in
	rm -f $(@:.h=.d) $(@:.d=.h)-t
	echo '#include <linux/limits.h>' | \
	SUNPRO_DEPENDENCIES='$(@:.h=.d) \
			     $(patsubst $(common-objpfx)%,$$(common-objpfx)%,\
					$(@:.d=.h) $(@:.h=.d))' \
	$(CC) -E -dM - > $(@:.d=.h)-t
	fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)-t`; \
	filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)-t`; \
	if test -n "$$fopen_max" && test -n "$$filename_max"; then \
		sed -e "s/DEFAULT_FOPEN_MAX/$$fopen_max/" \
		    -e "s/DEFAULT_FILENAME_MAX/$$filename_max/" $< \
		    > $(@:.d=.h).new && \
		mv -f $(@:.d=.h).new $(@:.d=.h); \
	else exit 1; fi
# Remove this last so that it can be examined if something went wrong.
	rm -f $(@:.d=.h)-t
ifndef no_deps
# Get the list of dependencies (probably /usr/include/linux/limits.h).
-include $(common-objpfx)bits/stdio_lim.d
endif

ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait	\
		   rt_sigqueueinfo rt_sigaction rt_sigpending
endif

ifeq ($(subdir),dirent)
sysdep_routines += getdents64
endif

ifeq ($(subdir),nis)
CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
endif

common-generated += bits/stdio_lim.h bits/stdio_lim.d