xref: /freebsd/lib/Makefile (revision 732a02b4e77866604a120a275c082bb6221bd2ff)
1#	@(#)Makefile	8.1 (Berkeley) 6/4/93
2# $FreeBSD$
3
4.include <src.opts.mk>
5
6# The SUBDIR_BOOTSTRAP list is a small set of libraries which are used by many
7# of the other libraries.  These are built first with a .WAIT between them
8# and the main list to avoid needing a SUBDIR_DEPEND line on every library
9# naming just these few items.
10
11SUBDIR_BOOTSTRAP= \
12	csu \
13	.WAIT \
14	libc \
15	libc_nonshared \
16	libcompiler_rt \
17	${_libclang_rt} \
18	${_libcplusplus} \
19	${_libcxxrt} \
20	libelf \
21	libssp \
22	libssp_nonshared \
23	msun
24
25# The main list; please keep these sorted alphabetically.
26
27SUBDIR=	${SUBDIR_BOOTSTRAP} \
28	.WAIT \
29	geom \
30	libalias \
31	libarchive \
32	libauditd \
33	libbegemot \
34	libblocksruntime \
35	libbsdstat \
36	libbsm \
37	libbz2 \
38	libcalendar \
39	libcam \
40	libcapsicum \
41	libcasper \
42	libcompat \
43	libcrypt \
44	libdevctl \
45	libdevinfo \
46	libdevstat \
47	libdl \
48	libdwarf \
49	libedit \
50	libelftc \
51	libevent \
52	libexecinfo \
53	libexpat \
54	libfetch \
55	libfigpar \
56	libgcc_eh \
57	libgcc_s \
58	libgeom \
59	libifconfig \
60	libipsec \
61	libjail \
62	libkiconv \
63	libkvm \
64	liblua \
65	liblzma \
66	libmemstat \
67	libmd \
68	libmt \
69	lib80211 \
70	libnetbsd \
71	libnv \
72	libopenbsd \
73	libopie \
74	libpam \
75	libpathconv \
76	libpcap \
77	libpjdlog \
78	libproc \
79	libprocstat \
80	libregex \
81	librpcsvc \
82	librss \
83	librt \
84	librtld_db \
85	libsbuf \
86	libsmb \
87	libsqlite3 \
88	libstdbuf \
89	libstdthreads \
90	libsysdecode \
91	libtacplus \
92	libthread_db \
93	libucl \
94	libufs \
95	libugidfw \
96	libulog \
97	libutil \
98	${_libvgl} \
99	libwrap \
100	libxo \
101	liby \
102	libz \
103	libzstd \
104	ncurses
105
106# Inter-library dependencies.  When the makefile for a library contains LDADD
107# libraries, those libraries should be listed as build order dependencies here.
108
109SUBDIR_DEPEND_geom=	libufs
110SUBDIR_DEPEND_libarchive= libz libbz2 libexpat liblzma libmd libzstd
111SUBDIR_DEPEND_libauditdm= libbsm
112SUBDIR_DEPEND_libbsnmp= ${_libnetgraph}
113SUBDIR_DEPEND_libc++:= libcxxrt
114# libssp_nonshared doesn't need to be linked into libc on every arch, but it is
115# small enough to build that this bit of serialization is likely insignificant.
116SUBDIR_DEPEND_libc= libcompiler_rt libssp_nonshared
117SUBDIR_DEPEND_libcam= libsbuf
118SUBDIR_DEPEND_libcasper= libnv
119SUBDIR_DEPEND_libdevstat= libkvm
120SUBDIR_DEPEND_libdpv= libfigpar ncurses libutil
121SUBDIR_DEPEND_libedit= ncurses
122SUBDIR_DEPEND_libgeom= libexpat libsbuf
123SUBDIR_DEPEND_librpcsec_gss= libgssapi
124SUBDIR_DEPEND_libmagic= libz
125SUBDIR_DEPEND_libmemstat= libkvm
126SUBDIR_DEPEND_libopie= libmd
127SUBDIR_DEPEND_libpam= libcrypt libopie ${_libradius} librpcsvc libtacplus libutil ${_libypclnt} ${_libcom_err}
128SUBDIR_DEPEND_libpjdlog= libutil
129SUBDIR_DEPEND_libprocstat= libkvm libutil
130SUBDIR_DEPEND_libradius= libmd
131SUBDIR_DEPEND_libsmb= libkiconv
132SUBDIR_DEPEND_libtacplus= libmd
133SUBDIR_DEPEND_libulog= libmd
134SUBDIR_DEPEND_libunbound= ${_libldns}
135SUBDIR_DEPEND_liblzma= ${_libthr}
136.if ${MK_OFED} != "no"
137SUBDIR_DEPEND_libpcap= ofed
138.endif
139
140# NB: keep these sorted by MK_* knobs
141
142SUBDIR.${MK_ATM}+=	libngatm
143SUBDIR.${MK_BEARSSL}+=	libbearssl libsecureboot
144SUBDIR.${MK_BLACKLIST}+=libblacklist
145SUBDIR.${MK_BLUETOOTH}+=libbluetooth libsdp
146SUBDIR.${MK_BSNMP}+=	libbsnmp
147
148.if !defined(COMPAT_32BIT) && !defined(COMPAT_SOFTFP)
149SUBDIR.${MK_CLANG}+=	clang
150.endif
151
152SUBDIR.${MK_CUSE}+= 	libcuse
153SUBDIR.${MK_CXX}+=	libdevdctl
154SUBDIR.${MK_TOOLCHAIN}+=libpe
155SUBDIR.${MK_DIALOG}+=	libdpv
156SUBDIR.${MK_FILE}+=	libmagic
157SUBDIR.${MK_GPIO}+=	libgpio
158SUBDIR.${MK_GSSAPI}+=	libgssapi librpcsec_gss
159SUBDIR.${MK_ICONV}+=	libiconv_modules
160SUBDIR.${MK_KERBEROS_SUPPORT}+=	libcom_err
161SUBDIR.${MK_LDNS}+=	libldns
162SUBDIR.${MK_STATS}+=	libstats
163
164# The libraries under libclang_rt can only be built by clang, and only make
165# sense to build when clang is enabled at all.  Furthermore, they can only be
166# built for certain architectures.
167.if ${MK_CLANG} != "no" && ${COMPILER_TYPE} == "clang" && \
168    (${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \
169    ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "i386" || \
170    ${MACHINE_CPUARCH} == "powerpc")
171_libclang_rt=	libclang_rt
172.endif
173
174.if ${MK_LIBCPLUSPLUS} != "no"
175_libcxxrt=	libcxxrt
176_libcplusplus=	libc++
177_libcplusplus+=	libc++experimental
178.endif
179
180SUBDIR.${MK_EFI}+=	libefivar
181SUBDIR.${MK_GOOGLETEST}+=	googletest
182SUBDIR.${MK_LIBTHR}+=	libthr
183SUBDIR.${MK_NETGRAPH}+=	libnetgraph
184SUBDIR.${MK_NIS}+=	libypclnt
185
186.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
187_libvgl=	libvgl
188.endif
189
190.if ${MACHINE_CPUARCH} == "aarch64"
191SUBDIR.${MK_PMC}+=	libopencsd
192.endif
193
194.if ${MACHINE_CPUARCH} == "amd64"
195SUBDIR.${MK_PMC}+=	libipt
196SUBDIR.${MK_BHYVE}+=	libvmmapi
197.endif
198
199.if ${MACHINE_ARCH} != "powerpc"
200SUBDIR.${MK_OPENMP}+=	libomp
201.endif
202SUBDIR.${MK_OPENSSL}+=	libmp
203SUBDIR.${MK_PMC}+=	libpmc libpmcstat
204SUBDIR.${MK_RADIUS_SUPPORT}+=	libradius
205SUBDIR.${MK_SENDMAIL}+=	libmilter libsm libsmdb libsmutil
206SUBDIR.${MK_TELNET}+=	libtelnet
207SUBDIR.${MK_TESTS_SUPPORT}+=	atf
208SUBDIR.${MK_TESTS_SUPPORT}.${MK_CXX}+=	kyua
209SUBDIR.${MK_TESTS_SUPPORT}.${MK_CXX}+=	liblutok
210SUBDIR.${MK_TESTS}+=	tests
211SUBDIR.${MK_UNBOUND}+=	libunbound
212SUBDIR.${MK_USB}+=	libusbhid libusb
213SUBDIR.${MK_OFED}+=	ofed
214SUBDIR.${MK_VERIEXEC}+=	libveriexec
215SUBDIR.${MK_ZFS}+=	libbe
216
217.if !make(install)
218SUBDIR_PARALLEL=
219.endif
220
221.include <bsd.subdir.mk>
222