source: rtems/cpukit/libnetworking/Makefile.am @ 89ac281

5
Last change on this file since 89ac281 was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 4.6 KB
Line 
1include $(top_srcdir)/automake/multilib.am
2include $(top_srcdir)/automake/compile.am
3
4EXTRA_DIST = README
5EXTRA_DIST += rtems/bootp.h
6
7# poll is not supported
8UNUSED_FILES = poll.h
9# Original FreeBSD file
10UNUSED_FILES += sys/poll.h
11
12
13if LIBNETWORKING
14# Add -DFORWARD_PROTOCOL to enable UDP forwarding -- requires missing net/pf.h
15libnetworking_CPPFLAGS = -DINET -DNFS \
16    -DDIAGNOSTIC -DBOOTP_COMPAT -D_KERNEL -D__BSD_VISIBLE
17
18noinst_LIBRARIES = libnetworking.a
19libnetworking_a_CPPFLAGS = $(AM_CPPFLAGS) $(libnetworking_CPPFLAGS)
20
21## poll.h is not in the list because RTEMS does not have poll()
22## and installing poll.h confuses autoconf.
23libnetworking_a_SOURCES = opt_atalk.h opt_bdg.h opt_compat.h opt_inet6.h \
24    opt_inet.h opt_ipfw.h opt_ipx.h opt_mac.h opt_mrouting.h opt_netgraph.h \
25    opt_tcpdebug.h opt_ipsec.h loop.h
26libnetworking_a_SOURCES += opt_ppp.h
27libnetworking_a_SOURCES += bpfilter.h
28
29# arpa
30
31## kern
32
33libnetworking_a_SOURCES += kern/kern_mib.c kern/kern_subr.c \
34    kern/kern_sysctl.c kern/uipc_domain.c kern/uipc_mbuf.c \
35    kern/uipc_socket.c kern/uipc_socket2.c
36
37## machine
38
39libnetworking_a_SOURCES += machine/limits.h
40
41## net
42
43libnetworking_a_SOURCES += net/if.c net/if_ethersubr.c net/if_loop.c \
44    net/radix.c net/route.c net/rtsock.c net/raw_cb.c net/raw_usrreq.c \
45    net/if_ppp.c net/ppp_tty.c net/slcompress.c
46
47## netinet
48
49libnetworking_a_SOURCES += netinet/if_ether.c netinet/igmp.c netinet/in.c \
50    netinet/in_cksum.c netinet/in_pcb.c netinet/in_proto.c netinet/in_rmx.c \
51    netinet/ip_divert.c netinet/ip_fw.c netinet/ip_icmp.c netinet/ip_input.c \
52    netinet/ip_mroute.c netinet/ip_output.c netinet/raw_ip.c \
53    netinet/tcp_debug.c netinet/tcp_input.c netinet/tcp_output.c \
54    netinet/tcp_subr.c netinet/tcp_timer.c netinet/tcp_usrreq.c \
55    netinet/udp_usrreq.c netinet/in_cksum_arm.h netinet/in_cksum_i386.h \
56    netinet/in_cksum_m68k.h netinet/in_cksum_powerpc.h
57
58## netinet6
59
60
61## nfs
62
63libnetworking_a_SOURCES += nfs/bootp_subr.c
64
65## nfsclient
66## rtems
67
68libnetworking_a_SOURCES += rtems/sghostname.c \
69    rtems/rtems_glue.c rtems/rtems_malloc_mbuf.c rtems/rtems_syscall.c \
70    rtems/rtems_bootp.c rtems/rtems_dhcp.c rtems/rtems_dhcp_failsafe.c \
71    rtems/rtems_showmbuf.c rtems/rtems_showroute.c rtems/rtems_showifstat.c \
72    rtems/rtems_showipstat.c rtems/rtems_showicmpstat.c \
73    rtems/rtems_showtcpstat.c rtems/rtems_showudpstat.c rtems/rtems_select.c \
74    rtems/mkrootfs.c rtems/rtems_bsdnet_malloc_starvation.c \
75    rtems/rtems_mii_ioctl.c rtems/rtems_mii_ioctl_kern.c \
76    rtems/rtems_socketpair.c
77
78## sys
79
80# vm
81
82# dev
83## libc
84
85libc_CPPFLAGS = -DNOPOLL -DNOSELECT -D__BSD_VISIBLE -D_THREAD_SAFE
86
87noinst_LIBRARIES += libc.a
88libc_a_CPPFLAGS = $(AM_CPPFLAGS) $(libc_CPPFLAGS)
89
90libc_a_SOURCES = libc/base64.c \
91    libc/gethostbydns.c libc/gethostbyht.c libc/gethostbynis.c \
92    libc/gethostnamadr.c libc/getnetbydns.c libc/getnetbyht.c \
93    libc/getnetbynis.c libc/getnetnamadr.c libc/getnameinfo.c libc/getproto.c \
94    libc/getprotoent.c libc/getprotoname.c libc/getservbyname.c \
95    libc/getservbyport.c libc/getservent.c libc/herror.c libc/inet_addr.c \
96    libc/inet_lnaof.c libc/inet_makeaddr.c libc/inet_netof.c \
97    libc/inet_network.c libc/inet_ntoa.c libc/inet_ntop.c libc/inet_pton.c \
98    libc/linkaddr.c libc/map_v4v6.c libc/nsap_addr.c libc/ns_name.c \
99    libc/ns_netint.c libc/ns_parse.c libc/ns_print.c libc/ns_ttl.c \
100    libc/res_comp.c libc/res_data.c libc/res_debug.c libc/res_init.c \
101    libc/res_mkquery.c libc/res_mkupdate.c libc/res_query.c libc/res_send.c \
102    libc/res_stubs.c libc/res_update.c libc/strsep.c libc/rcmd.c
103libc_a_SOURCES += libc/res_config.h
104libc_a_SOURCES += libc/send.c
105libc_a_SOURCES += libc/recv.c
106libc_a_SOURCES += libc/getifaddrs.c
107libc_a_SOURCES += libc/if_indextoname.c
108libc_a_SOURCES += libc/if_nameindex.c
109endif
110
111UNUSED_FILES += libc/ether_addr.c libc/gethostname.c libc/inet_neta.c \
112    libc/inet_net_ntop.c libc/inet_net_pton.c libc/ns_addr.c \
113    libc/ns_ntoa.c
114
115libc_mans = libc/byteorder.3 libc/ethers.3 \
116    libc/gethostbyname.3 libc/getnetent.3 libc/getprotoent.3 \
117    libc/getservent.3 libc/inet.3 libc/linkaddr.3 libc/ns.3 \
118    libc/rcmd.3 libc/resolver.3
119EXTRA_DIST += $(libc_mans)
120
121if LIBNETWORKING
122man_MANS = $(libc_MANS)
123
124## lib
125
126EXTRA_DIST += lib/README
127
128lib_CPPFLAGS = -DNOPOLL -DNOSELECT
129
130noinst_LIBRARIES += lib.a
131lib_a_CPPFLAGS = $(AM_CPPFLAGS) $(lib_CPPFLAGS) -D__BSD_VISIBLE
132
133lib_a_SOURCES = lib/getprotoby.c lib/rtems_bsdnet_ntp.c lib/ftpfs.c \
134    lib/syslog.c lib/tftpDriver.c
135lib_a_SOURCES += rtems/rtems_syscall_api.c
136endif
137
138EXTRA_DIST += $(UNUSED_FILES)
139
140include $(top_srcdir)/automake/local.am
141include $(srcdir)/headers.am
Note: See TracBrowser for help on using the repository browser.