5261 libm should stop using synonyms.h
[illumos-gate.git] / usr / src / lib / Makefile
blob6d8588d839d2c87652eba99044bb78d8d24e9709
2 # CDDL HEADER START
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
19 # CDDL HEADER END
22 # Copyright 2011 Nexenta Systems, Inc. All rights reserved.
23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright (c) 2012 by Delphix. All rights reserved.
25 # Copyright (c) 2012, Joyent, Inc. All rights reserved.
26 # Copyright (c) 2013 Gary Mills
27 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
29 include ../Makefile.master
31 # Note that libcurses installs commands along with its library.
32 # This is a minor bug which probably should be fixed.
33 # Note also that a few extra libraries are kept in cmd source.
35 # Certain libraries are linked with, hence depend on, other libraries.
37 # Although we have historically used .WAIT to express dependencies, it
38 # reduces the amount of parallelism and thus lengthens the time it
39 # takes to build the libraries. Thus, we now require that any new
40 # libraries explicitly call out their dependencies. Eventually, all
41 # the library dependencies will be called out explicitly. See
42 # "Library interdependencies" near the end of this file.
44 # Aside from explicit dependencies (and legacy .WAITs), all libraries
45 # are built in parallel.
47 .PARALLEL:
49 SUBDIRS= \
50 common .WAIT \
51 ../cmd/sgs/libconv \
52 ../cmd/sgs/libdl .WAIT
54 SUBDIRS += \
55 libc .WAIT \
56 ../cmd/sgs/libelf .WAIT \
57 c_synonyms \
58 libmd \
59 libmd5 \
60 librsm \
61 libmp .WAIT \
62 libnsl \
63 libsecdb .WAIT \
64 librpcsvc \
65 libsocket .WAIT \
66 libsctp \
67 libsip \
68 libcommputil \
69 libresolv \
70 libresolv2 .WAIT \
71 libw .WAIT \
72 libintl .WAIT \
73 ../cmd/sgs/librtld_db \
74 libaio \
75 libast \
76 libdll \
77 libcmd \
78 libshell \
79 libsum \
80 librt \
81 libadm \
82 libctf \
83 libdtrace \
84 libdtrace_jni \
85 libcurses \
86 libtermcap \
87 libgen \
88 libgss \
89 libpam \
90 libuuid \
91 libthread \
92 libpthread .WAIT \
93 libslp \
94 libbsdmalloc \
95 libdoor \
96 libdevinfo \
97 libdladm \
98 libdlpi \
99 libeti \
100 libcrypt \
101 libdns_sd \
102 libefi \
103 libfstyp \
104 libwanboot \
105 libwanbootutil \
106 libcryptoutil \
107 libinetutil \
108 libipadm \
109 libipd \
110 libipmp \
111 libiscsit \
112 libkmf \
113 libkstat \
114 libkvm \
115 liblm \
116 libmalloc \
117 libmapmalloc \
118 libmtmalloc \
119 libnls \
120 libnwam \
121 libsmbios \
122 libtecla \
123 libumem \
124 libnvpair .WAIT \
125 libexacct \
126 libsasl \
127 libldap5 \
128 libsldap .WAIT \
129 libbsm \
130 libsys \
131 libsysevent \
132 libnisdb \
133 libpool \
134 libpp \
135 libproc \
136 libproject \
137 libsendfile \
138 nametoaddr \
139 ncad_addr \
140 hbaapi \
141 smhba \
142 sun_fc \
143 sun_sas \
144 gss_mechs/mech_krb5 .WAIT \
145 libkrb5 .WAIT \
146 krb5 .WAIT \
147 libsmbfs \
148 libfcoe \
149 libsrpt \
150 libstmf \
151 libstmfproxy \
152 libnsctl \
153 libunistat \
154 libdscfg \
155 librdc \
156 libinstzones \
157 libpkg \
158 libpcidb \
159 libm1 \
160 libm \
161 libmvec
164 SUBDIRS += \
165 passwdutil \
166 pam_modules \
167 crypt_modules \
168 libadt_jni \
169 abi \
170 auditd_plugins \
171 libvolmgt \
172 libdevice \
173 libdevid \
174 libc_db \
175 libndmp \
176 libsec \
177 libtnfprobe \
178 libtnf \
179 libtnfctl \
180 libdhcpagent \
181 libdhcputil \
182 libxnet \
183 libipsecutil \
184 nsswitch \
185 print \
186 libuutil \
187 libscf \
188 libinetsvc \
189 librestart \
190 libsched \
191 libelfsign \
192 pkcs11 .WAIT \
193 libpctx .WAIT \
194 libcpc \
195 getloginx \
196 watchmalloc \
197 extendedFILE \
198 madv \
199 mpss \
200 libdisasm \
201 libwrap \
202 libxcurses \
203 libxcurses2 \
204 libbrand .WAIT \
205 libzonecfg \
206 libzoneinfo \
207 libzonestat \
208 libtsnet \
209 libtsol \
210 gss_mechs/mech_spnego \
211 gss_mechs/mech_dummy \
212 gss_mechs/mech_dh \
213 rpcsec_gss \
214 libraidcfg .WAIT \
215 librcm .WAIT \
216 libcfgadm .WAIT \
217 libpicl .WAIT \
218 libpicltree .WAIT \
219 raidcfg_plugins \
220 cfgadm_plugins \
221 libmail \
222 lvm \
223 libsmedia \
224 libipp \
225 libdiskmgt \
226 liblgrp \
227 libfsmgt \
228 fm \
229 libavl \
230 libcmdutils \
231 libcontract \
232 ../cmd/sendmail/libmilter \
233 sasl_plugins \
234 udapl \
235 libzpool \
236 libzfs_core \
237 libzfs \
238 libbe \
239 pylibbe \
240 libzfs_jni \
241 pyzfs \
242 pysolaris \
243 libmapid \
244 brand \
245 policykit \
246 hal \
247 libshare \
248 libsqlite \
249 libidmap \
250 libadutils \
251 libipmi \
252 libexacct/demo \
253 libvrrpadm \
254 libvscan \
255 libgrubmgmt \
256 smbsrv \
257 libilb \
258 scsi \
259 libima \
260 libsun_ima \
261 mpapi \
262 librstp \
263 libreparse \
264 libhotplug \
265 libfruutils .WAIT \
266 libfru \
267 $($(MACH)_SUBDIRS)
269 i386_SUBDIRS= \
270 libfdisk \
271 libsaveargs
273 sparc_SUBDIRS= .WAIT \
274 efcode \
275 libds \
276 libdscp \
277 libprtdiag .WAIT \
278 libprtdiag_psr \
279 libpri \
280 librsc \
281 storage \
282 libpcp \
283 libtsalarm \
284 libv12n
286 FM_sparc_DEPLIBS= libpri
288 fm: \
289 libexacct \
290 libipmi \
291 libzfs \
292 scsi \
293 $(FM_$(MACH)_DEPLIBS)
296 # Create a special version of $(SUBDIRS) with no .WAIT's, for use with the
297 # clean and clobber targets (for more information, see those targets, below).
299 NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=)
301 DCSUBDIRS = \
304 MSGSUBDIRS= \
305 abi \
306 auditd_plugins \
307 brand \
308 cfgadm_plugins \
309 gss_mechs/mech_dh \
310 gss_mechs/mech_krb5 \
311 krb5 \
312 libast \
313 libbsm \
314 libc \
315 libcfgadm \
316 libcmd \
317 libcontract \
318 libcurses \
319 libdhcputil \
320 libipsecutil \
321 libdiskmgt \
322 libdladm \
323 libdll \
324 libgrubmgmt \
325 libgss \
326 libidmap \
327 libipmp \
328 libilb \
329 libinetutil \
330 libinstzones \
331 libipadm \
332 libnsl \
333 libnwam \
334 libpam \
335 libpicl \
336 libpool \
337 libpkg \
338 libpp \
339 libscf \
340 libsasl \
341 libldap5 \
342 libsecdb \
343 libshare \
344 libshell \
345 libsldap \
346 libslp \
347 libsmbfs \
348 libsmedia \
349 libsum \
350 libtsol \
351 libuutil \
352 libvrrpadm \
353 libvscan \
354 libwanboot \
355 libwanbootutil \
356 libzfs \
357 libzonecfg \
358 lvm \
359 madv \
360 mpss \
361 pam_modules \
362 pyzfs \
363 pysolaris \
364 rpcsec_gss \
365 libreparse
366 MSGSUBDIRS += \
367 $($(MACH)_MSGSUBDIRS)
369 sparc_MSGSUBDIRS= \
370 libprtdiag \
371 libprtdiag_psr
373 i386_MSGSUBDIRS= libfdisk
375 HDRSUBDIRS= \
376 auditd_plugins \
377 libast \
378 libbrand \
379 libbsm \
380 libc \
381 libcmd \
382 libcmdutils \
383 libcommputil \
384 libcontract \
385 libcpc \
386 libctf \
387 libcurses \
388 libtermcap \
389 libcryptoutil \
390 libdevice \
391 libdevid \
392 libdevinfo \
393 libdiskmgt \
394 libdladm \
395 libdll \
396 libdlpi \
397 libdhcpagent \
398 libdhcputil \
399 libdisasm \
400 libdns_sd \
401 libdscfg \
402 libdtrace \
403 libdtrace_jni \
404 libelfsign \
405 libeti \
406 libfru \
407 libfstyp \
408 libgen \
409 libipadm \
410 libipd \
411 libipsecutil \
412 libinetsvc \
413 libinetutil \
414 libinstzones \
415 libipmi \
416 libipmp \
417 libipp \
418 libiscsit \
419 libkstat \
420 libkvm \
421 libmail \
422 libmd \
423 libmtmalloc \
424 libndmp \
425 libnvpair \
426 libnsctl \
427 libnsl \
428 libnwam \
429 libpam \
430 libpcidb \
431 libpctx \
432 libpicl \
433 libpicltree \
434 libpool \
435 libpp \
436 libproc \
437 libraidcfg \
438 librcm \
439 librdc \
440 libscf \
441 libsip \
442 libsmbios \
443 librestart \
444 librpcsvc \
445 librsm \
446 librstp \
447 libsasl \
448 libsec \
449 libshell \
450 libslp \
451 libsmedia \
452 libsocket \
453 libsqlite \
454 libfcoe \
455 libsrpt \
456 libstmf \
457 libstmfproxy \
458 libsum \
459 libsysevent \
460 libtecla \
461 libtnf \
462 libtnfctl \
463 libtnfprobe \
464 libtsnet \
465 libtsol \
466 libvrrpadm \
467 libvolmgt \
468 libumem \
469 libunistat \
470 libuutil \
471 libwanboot \
472 libwanbootutil \
473 libwrap \
474 libxcurses2 \
475 libzfs \
476 libzfs_core \
477 libzfs_jni \
478 libzoneinfo \
479 libzonestat \
480 hal \
481 policykit \
482 lvm \
483 pkcs11 \
484 passwdutil \
485 ../cmd/sendmail/libmilter \
486 fm \
487 udapl \
488 libmapid \
489 libkrb5 \
490 libsmbfs \
491 libshare \
492 libidmap \
493 libvscan \
494 libgrubmgmt \
495 smbsrv \
496 libilb \
497 scsi \
498 hbaapi \
499 smhba \
500 libima \
501 libsun_ima \
502 mpapi \
503 libreparse \
504 $($(MACH)_HDRSUBDIRS)
506 i386_HDRSUBDIRS= \
507 libfdisk \
508 libsaveargs
510 sparc_HDRSUBDIRS= \
511 libds \
512 libdscp \
513 libpri \
514 libv12n \
515 storage
517 all := TARGET= all
518 check := TARGET= check
519 clean := TARGET= clean
520 clobber := TARGET= clobber
521 install := TARGET= install
522 install_h := TARGET= install_h
523 lint := TARGET= lint
524 _dc := TARGET= _dc
525 _msg := TARGET= _msg
527 .KEEP_STATE:
530 # For the all and install targets, we clearly must respect library
531 # dependencies so that the libraries link correctly. However, for
532 # the remaining targets (check, clean, clobber, install_h, lint, _dc
533 # and _msg), libraries do not have any dependencies on one another
534 # and thus respecting dependencies just slows down the build.
535 # As such, for these rules, we use pattern replacement to explicitly
536 # avoid triggering the dependency information. Note that for clean,
537 # clobber and lint, we must use $(NOWAIT_SUBDIRS) rather than
538 # $(SUBDIRS), to prevent `.WAIT' from expanding to `.WAIT-nodepend'.
541 all: $(SUBDIRS)
543 install: $(SUBDIRS) .WAIT install_extra
545 # extra libraries kept in other source areas
546 install_extra:
547 @cd ../cmd/sgs; pwd; $(MAKE) install_lib
548 @pwd
550 clean clobber lint: $(NOWAIT_SUBDIRS:%=%-nodepend)
552 install_h check: $(HDRSUBDIRS:%=%-nodepend)
554 _msg: $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc
556 _dc: $(DCSUBDIRS:%=%-nodepend)
559 # Library interdependencies are called out explicitly here
561 auditd_plugins: libbsm libnsl libsecdb
562 gss_mechs/mech_krb5: libgss libnsl libsocket libresolv pkcs11
563 libadt_jni: libbsm
564 libast: libsocket libm
565 libadutils: libldap5 libresolv libsocket libnsl
566 nsswitch: libadutils libidmap
567 libbe: libzfs
568 libbsm: libtsol
569 libcmd: libsum libast libsocket libnsl
570 libcmdutils: libavl
571 libcontract: libnvpair
572 libdevid: libdevinfo
573 libdevinfo: libnvpair libsec
574 libdhcpagent: libsocket libdhcputil libuuid libdlpi libcontract
575 libdhcputil: libnsl libgen libinetutil libdlpi
576 libdladm: libdevinfo libinetutil libsocket libscf librcm libnvpair \
577 libexacct libnsl libkstat libcurses
578 libdll: libast
579 libdlpi: libinetutil libdladm
580 libds: libsysevent
581 libdscfg: libnsctl libunistat libsocket libnsl
582 libdtrace: libproc libgen libctf
583 libdtrace_jni: libuutil libdtrace
584 libefi: libuuid
585 libfstyp: libnvpair
586 libelfsign: libcryptoutil libkmf
587 libidmap: libadutils libldap5 libavl libsldap libuutil
588 libipadm: libnsl libinetutil libsocket libdlpi libnvpair libdhcpagent \
589 libdladm libsecdb
590 libiscsit: libc libnvpair libstmf libuuid libnsl
591 libkmf: libcryptoutil pkcs11
592 libm: libc
593 libm1: libc libm
594 libmvec: libc libm
595 libnsl: libmd5
596 libmapid: libresolv
597 librdc: libsocket libnsl libnsctl libunistat libdscfg
598 libuuid: libdlpi
599 libinetutil: libsocket
600 libipsecutil: libtecla libsocket
601 libinstzones: libzonecfg libcontract
602 libpkg: libwanboot libscf libadm
603 libnwam: libscf
604 libsecdb: libnsl
605 libsasl: libgss libsocket pkcs11 libmd
606 sasl_plugins: pkcs11 libgss libsocket libsasl
607 libsctp: libsocket
608 libshell: libast libcmd libdll libsocket libsecdb libm
609 libsip: libmd5
610 libsmbfs: libcmdutils libsocket libnsl libkrb5
611 libsocket: libnsl
612 libstmfproxy: libstmf libsocket libnsl libpthread
613 libsum: libast
614 libsysevent: libsecdb
615 libldap5: libsasl libsocket libnsl libmd
616 libsldap: libldap5 libtsol libnsl libc libscf libresolv
617 libpool: libnvpair libexacct
618 libpp: libast
619 libzonecfg: libc libsocket libnsl libuuid libnvpair libsysevent libsec \
620 libbrand libpool libscf
621 libproc: ../cmd/sgs/librtld_db ../cmd/sgs/libelf libctf libsaveargs
622 libproject: libpool libproc libsecdb
623 libtermcap: libcurses
624 libtsnet: libnsl libtsol libsecdb
625 libwrap: libnsl libsocket
626 libwanboot: libnvpair libresolv libnsl libsocket libdevinfo libinetutil \
627 libdhcputil
628 libwanbootutil: libnsl
629 pam_modules: libproject passwdutil smbsrv
630 libscf: libuutil libmd libgen libsmbios libnsl
631 libinetsvc: libscf
632 librestart: libuutil libscf
633 libsaveargs: libdisasm
634 ../cmd/sgs/libdl: ../cmd/sgs/libconv
635 ../cmd/sgs/libelf: ../cmd/sgs/libconv
636 pkcs11: libcryptoutil
637 print: libldap5
638 udapl/udapl_tavor: udapl/libdat
639 libzfs: libdevid libgen libnvpair libuutil \
640 libadm libavl libefi libidmap libmd libzfs_core libm
641 libzfs_core: libnvpair
642 libzfs_jni: libdiskmgt libnvpair libzfs
643 libzpool: libavl libumem libnvpair libcmdutils
644 libsec: libavl libidmap
645 brand: libc libsocket
646 libshare: libscf libzfs libuuid libfsmgt libsecdb libumem libsmbfs
647 libexacct/demo: libexacct libproject libsocket libnsl
648 libtsalarm: libpcp
649 smbsrv: libsocket libnsl libmd libxnet libpthread librt \
650 libshare libidmap pkcs11 libsqlite libcryptoutil \
651 libreparse libcmdutils
652 libv12n: libds libuuid
653 libvrrpadm: libsocket libdladm libscf
654 libvscan: libscf
655 libfru: libfruutils
656 scsi: libnvpair libfru
657 mpapi: libpthread libdevinfo libsysevent libnvpair
658 sun_fc: libdevinfo libsysevent libnvpair
659 libsun_ima: libdevinfo libsysevent libnsl
660 sun_sas: libdevinfo libsysevent libnvpair libkstat libdevid
661 libgrubmgmt: libdevinfo libzfs libfstyp
662 pylibbe: libbe libzfs
663 pyzfs: libnvpair libzfs
664 pysolaris: libsec libidmap
665 libreparse: libnvpair
666 libhotplug: libnvpair
667 cfgadm_plugins: libhotplug
668 libilb: libsocket
669 libipmi: libm
670 libprtdiag: libm
671 libsqlite: libm
672 libstmf: libm
673 libvscan: libm
676 $(INTEL_BUILD)libdiskmgt:libfdisk
679 # The reason this rule checks for the existence of the
680 # Makefile is that some of the directories do not exist
681 # in certain situations (e.g., exportable source builds,
682 # OpenSolaris).
684 $(SUBDIRS): FRC
685 @if [ -f $@/Makefile ]; then \
686 cd $@; pwd; $(MAKE) $(TARGET); \
687 else \
688 true; \
691 $(SUBDIRS:%=%-nodepend):
692 @if [ -f $(@:%-nodepend=%)/Makefile ]; then \
693 cd $(@:%-nodepend=%); pwd; $(MAKE) $(TARGET); \
694 else \
695 true; \
698 FRC: