1# Copyright (C) 1991-2022 Free Software Foundation, Inc.
2# This file is part of the GNU C Library.
3
4# The GNU C Library is free software; you can redistribute it and/or
5# modify it under the terms of the GNU Lesser General Public
6# License as published by the Free Software Foundation; either
7# version 2.1 of the License, or (at your option) any later version.
8
9# The GNU C Library is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12# Lesser General Public License for more details.
13
14# You should have received a copy of the GNU Lesser General Public
15# License along with the GNU C Library; if not, see
16# <https://www.gnu.org/licenses/>.
17
18#
19#	Sub-makefile for inet portion of the library.
20#
21subdir	:= inet
22
23include ../Makeconfig
24
25headers	:= netinet/ether.h netinet/in.h netinet/in_systm.h \
26	   netinet/if_ether.h netinet/igmp.h \
27	   netinet/tcp.h netinet/ip.h $(wildcard arpa/*.h protocols/*.h) \
28	   aliases.h ifaddrs.h netinet/ip6.h netinet/icmp6.h bits/in.h \
29	   rpc/netdb.h
30
31routines := htonl htons		\
32	    inet_lnaof inet_mkadr	\
33	    inet_netof inet_ntoa inet_net herrno herrno-loc \
34	    gethstbyad gethstbyad_r gethstbynm gethstbynm2 gethstbynm2_r \
35	    gethstbynm_r gethstent gethstent_r \
36	    getnetbyad getnetbyad_r getnetbynm getnetent getnetent_r \
37	    getnetbynm_r \
38	    getproto getproto_r getprtent getprtent_r getprtname getprtname_r \
39	    getsrvbynm getsrvbynm_r getsrvbypt getsrvbypt_r getservent \
40	    getservent_r getrpcent getrpcbyname getrpcbynumber \
41	    getrpcent_r getrpcbyname_r getrpcbynumber_r \
42	    ether_aton ether_aton_r ether_hton ether_line \
43	    ether_ntoa ether_ntoa_r ether_ntoh \
44	    rcmd rexec ruserpass bindresvport \
45	    getnetgrent_r getnetgrent \
46	    getaliasent_r getaliasent getaliasname getaliasname_r \
47	    in6_addr getnameinfo if_index ifaddrs inet6_option \
48	    getipv4sourcefilter setipv4sourcefilter \
49	    getsourcefilter setsourcefilter inet6_opt inet6_rth \
50	    inet6_scopeid_pton deadline idna idna_name_classify
51
52install-others = $(inst_sysconfdir)/rpc
53
54aux := check_pf check_native ifreq
55
56tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
57	 tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line \
58	 tst-getni1 tst-getni2 tst-inet6_rth tst-checks tst-checks-posix \
59	 tst-sockaddr test-hnto-types tst-if_index-long
60
61# tst-deadline must be linked statically so that we can access
62# internal functions.
63tests-static += tst-deadline
64tests-internal += tst-deadline
65
66# tst-idna_name_classify must be linked statically because it tests
67# internal functionality.
68tests-static += tst-idna_name_classify
69tests-internal += tst-idna_name_classify
70
71# tst-inet6_scopeid_pton also needs internal functions but does not
72# need to be linked statically.
73tests-internal += tst-inet6_scopeid_pton
74
75include ../Rules
76
77LOCALES := en_US.UTF-8 en_US.ISO-8859-1
78include ../gen-locales.mk
79
80ifeq ($(have-thread-library),yes)
81
82CFLAGS-gethstbyad_r.c += -fexceptions
83CFLAGS-gethstbyad.c += -fexceptions
84CFLAGS-gethstbynm_r.c += -fexceptions
85CFLAGS-gethstbynm.c += -fexceptions
86CFLAGS-gethstbynm2_r.c += -fexceptions
87CFLAGS-gethstbynm2.c += -fexceptions
88CFLAGS-gethstent_r.c += -fexceptions
89CFLAGS-gethstent.c += -fexceptions
90CFLAGS-rcmd.c += -fexceptions
91CFLAGS-getnetbynm_r.c += -fexceptions
92CFLAGS-getnetbynm.c += -fexceptions
93CFLAGS-getnetbyad_r.c += -fexceptions
94CFLAGS-getnetbyad.c += -fexceptions
95CFLAGS-getnetent_r.c += -fexceptions
96CFLAGS-getnetent.c += -fexceptions
97CFLAGS-getaliasent_r.c += -fexceptions
98CFLAGS-getaliasent.c += -fexceptions
99CFLAGS-getrpcent_r.c += -fexceptions
100CFLAGS-getrpcent.c += -fexceptions
101CFLAGS-getservent_r.c += -fexceptions
102CFLAGS-getservent.c += -fexceptions
103CFLAGS-getprtent_r.c += -fexceptions
104CFLAGS-getprtent.c += -fexceptions
105CFLAGS-either_ntoh.c += -fexceptions
106CFLAGS-either_hton.c += -fexceptions
107CFLAGS-getnetgrent.c += -fexceptions
108CFLAGS-getnetgrent_r.c += -fexceptions
109
110CFLAGS-tst-checks-posix.c += -std=c99
111CFLAGS-tst-sockaddr.c += -fno-strict-aliasing
112
113endif
114
115# Install the rpc database file.
116$(inst_sysconfdir)/rpc: etc.rpc $(+force)
117	$(do-install)
118
119ifeq ($(build-static-nss),yes)
120CFLAGS += -DSTATIC_NSS
121endif
122
123# The test uses dlopen indirectly and would otherwise load system
124# objects.
125tst-idna_name_classify-ENV = \
126  LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx):$(common-objpfx)elf
127$(objpfx)tst-idna_name_classify.out: $(gen-locales)
128