xref: /freebsd/lib/Makefile (revision ec4deee4e4f2aef1b97d9424f25d04e91fd7dc10)
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	libevent1 \
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_googletest= libregex
111SUBDIR_DEPEND_libarchive= libz libbz2 libexpat liblzma libmd libzstd
112SUBDIR_DEPEND_libauditdm= libbsm
113SUBDIR_DEPEND_libbsnmp= ${_libnetgraph}
114SUBDIR_DEPEND_libc++:= libcxxrt
115# libssp_nonshared doesn't need to be linked into libc on every arch, but it is
116# small enough to build that this bit of serialization is likely insignificant.
117SUBDIR_DEPEND_libc= libcompiler_rt libssp_nonshared
118SUBDIR_DEPEND_libcam= libsbuf
119SUBDIR_DEPEND_libcasper= libnv
120SUBDIR_DEPEND_libdevstat= libkvm
121SUBDIR_DEPEND_libdpv= libfigpar ncurses libutil
122SUBDIR_DEPEND_libedit= ncurses
123SUBDIR_DEPEND_libgeom= libexpat libsbuf
124SUBDIR_DEPEND_librpcsec_gss= libgssapi
125SUBDIR_DEPEND_libmagic= libz
126SUBDIR_DEPEND_libmemstat= libkvm
127SUBDIR_DEPEND_libopie= libmd
128SUBDIR_DEPEND_libpam= libcrypt libopie ${_libradius} librpcsvc libtacplus libutil ${_libypclnt} ${_libcom_err}
129SUBDIR_DEPEND_libpjdlog= libutil
130SUBDIR_DEPEND_libprocstat= libkvm libutil
131SUBDIR_DEPEND_libradius= libmd
132SUBDIR_DEPEND_libsmb= libkiconv
133SUBDIR_DEPEND_libtacplus= libmd
134SUBDIR_DEPEND_libulog= libmd
135SUBDIR_DEPEND_libunbound= ${_libldns}
136SUBDIR_DEPEND_liblzma= ${_libthr}
137.if ${MK_OFED} != "no"
138SUBDIR_DEPEND_libpcap= ofed
139.endif
140
141# NB: keep these sorted by MK_* knobs
142
143SUBDIR.${MK_ATM}+=	libngatm
144SUBDIR.${MK_BEARSSL}+=	libbearssl libsecureboot
145SUBDIR.${MK_BLACKLIST}+=libblacklist
146SUBDIR.${MK_BLUETOOTH}+=libbluetooth libsdp
147SUBDIR.${MK_BSNMP}+=	libbsnmp
148
149.if !defined(COMPAT_32BIT) && !defined(COMPAT_SOFTFP)
150SUBDIR.${MK_CLANG}+=	clang
151.endif
152
153SUBDIR.${MK_CUSE}+= 	libcuse
154SUBDIR.${MK_CXX}+=	libdevdctl
155SUBDIR.${MK_TOOLCHAIN}+=libpe
156SUBDIR.${MK_DIALOG}+=	libdpv
157SUBDIR.${MK_FILE}+=	libmagic
158SUBDIR.${MK_GPIO}+=	libgpio
159SUBDIR.${MK_GSSAPI}+=	libgssapi librpcsec_gss
160SUBDIR.${MK_ICONV}+=	libiconv_modules
161SUBDIR.${MK_KERBEROS_SUPPORT}+=	libcom_err
162SUBDIR.${MK_LDNS}+=	libldns
163SUBDIR.${MK_STATS}+=	libstats
164
165# The libraries under libclang_rt can only be built by clang, and only make
166# sense to build when clang is enabled at all.  Furthermore, they can only be
167# built for certain architectures.
168.if ${MK_CLANG} != "no" && ${COMPILER_TYPE} == "clang" && \
169    (${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \
170    ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "i386" || \
171    ${MACHINE_CPUARCH} == "powerpc")
172_libclang_rt=	libclang_rt
173.endif
174
175.if ${MK_LIBCPLUSPLUS} != "no"
176_libcxxrt=	libcxxrt
177_libcplusplus=	libc++
178_libcplusplus+=	libc++experimental
179.endif
180
181SUBDIR.${MK_EFI}+=	libefivar
182SUBDIR.${MK_GOOGLETEST}+=	googletest
183SUBDIR.${MK_LIBTHR}+=	libthr
184SUBDIR.${MK_NETGRAPH}+=	libnetgraph
185SUBDIR.${MK_NIS}+=	libypclnt
186
187.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
188_libvgl=	libvgl
189.endif
190
191.if ${MACHINE_CPUARCH} == "aarch64"
192SUBDIR.${MK_PMC}+=	libopencsd
193.endif
194
195.if ${MACHINE_CPUARCH} == "amd64"
196SUBDIR.${MK_PMC}+=	libipt
197SUBDIR.${MK_BHYVE}+=	libvmmapi
198.endif
199
200.if ${MACHINE_ARCH} != "powerpc"
201SUBDIR.${MK_OPENMP}+=	libomp
202.endif
203SUBDIR.${MK_OPENSSL}+=	libmp
204SUBDIR.${MK_PMC}+=	libpmc libpmcstat
205SUBDIR.${MK_RADIUS_SUPPORT}+=	libradius
206SUBDIR.${MK_SENDMAIL}+=	libmilter libsm libsmdb libsmutil
207SUBDIR.${MK_TELNET}+=	libtelnet
208SUBDIR.${MK_TESTS_SUPPORT}+=	atf
209SUBDIR.${MK_TESTS_SUPPORT}.${MK_CXX}+=	kyua
210SUBDIR.${MK_TESTS_SUPPORT}.${MK_CXX}+=	liblutok
211SUBDIR.${MK_TESTS}+=	tests
212SUBDIR.${MK_UNBOUND}+=	libunbound
213SUBDIR.${MK_USB}+=	libusbhid libusb
214SUBDIR.${MK_OFED}+=	ofed
215SUBDIR.${MK_VERIEXEC}+=	libveriexec
216SUBDIR.${MK_ZFS}+=	libbe
217
218.if !make(install)
219SUBDIR_PARALLEL=
220.endif
221
222.include <bsd.subdir.mk>
223