1 #
   2 # CDDL HEADER START
   3 #
   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.
   7 #
   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.
  12 #
  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]
  18 #
  19 # CDDL HEADER END
  20 #
  21 
  22 #
  23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
  24 # Copyright (c) 2012 by Delphix. All rights reserved.
  25 # Copyright 2020 Joyent, Inc.
  26 # Copyright (c) 2013 Gary Mills
  27 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
  28 # Copyright (c) 2015 Gary Mills
  29 # Copyright 2016 Toomas Soome <tsoome@me.com>
  30 # Copyright 2018 Nexenta Systems, Inc.
  31 # Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
  32 # Copyright 2017 RackTop Systems.
  33 # Copyirght 2018 Jason King
  34 # Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
  35 #
  36 
  37 include ../Makefile.master
  38 
  39 #       Note that libcurses installs commands along with its library.
  40 #       This is a minor bug which probably should be fixed.
  41 #       Note also that a few extra libraries are kept in cmd source.
  42 #
  43 # Certain libraries are linked with, hence depend on, other libraries.
  44 # Library dependencies are called out explicitly, see "Library
  45 # interdependencies" below.
  46 .PARALLEL:
  47 
  48 # Build libc and its dependencies
  49 SUBDIRS=                        \
  50         crt                     \
  51         ../cmd/sgs/libconv      \
  52         ../cmd/sgs/libdl        \
  53         libc                    \
  54         .WAIT
  55 
  56 # Build libraries with lots of dependents
  57 SUBDIRS +=              \
  58         libm            \
  59         libmd           \
  60         libmp           \
  61         libnsl          \
  62         libnvpair       \
  63         libsocket       \
  64         .WAIT
  65 
  66 # Build everything else. Aside from explicit dependencies, all libraries
  67 # are built in parallel.
  68 SUBDIRS +=                              \
  69         ../cmd/sendmail/libmilter       \
  70         ../cmd/sgs/libelf       \
  71         ../cmd/sgs/librtld_db   \
  72         abi             \
  73         auditd_plugins  \
  74         brand           \
  75         c_synonyms      \
  76         cfgadm_plugins  \
  77         crypt_modules   \
  78         extendedFILE    \
  79         fm              \
  80         getloginx       \
  81         gss_mechs/mech_dh       \
  82         gss_mechs/mech_dummy    \
  83         gss_mechs/mech_krb5     \
  84         gss_mechs/mech_spnego   \
  85         hal             \
  86         hbaapi          \
  87         iconv_modules   \
  88         krb5            \
  89         libadm          \
  90         libads          \
  91         libadt_jni      \
  92         libadutils      \
  93         libaio          \
  94         libast          \
  95         libavl          \
  96         libbe           \
  97         libbrand        \
  98         libbsdmalloc    \
  99         libbsm          \
 100         libc_db         \
 101         libcfgadm       \
 102         libcmd          \
 103         libcmdutils     \
 104         libcommputil    \
 105         libcontract     \
 106         libcpc          \
 107         libcrypt        \
 108         libcryptoutil   \
 109         libctf          \
 110         libcurses       \
 111         libcustr        \
 112         libdemangle     \
 113         libdevice       \
 114         libdevid        \
 115         libdevinfo      \
 116         libdhcpagent    \
 117         libdhcputil     \
 118         libdisasm       \
 119         libdiskmgt      \
 120         libdladm        \
 121         libdll          \
 122         libdlpi         \
 123         libdns_sd       \
 124         libdoor         \
 125         libdtrace       \
 126         libdtrace_jni   \
 127         libdwarf        \
 128         libefi          \
 129         libelfsign      \
 130         libeti          \
 131         libexacct       \
 132         libexacct/demo  \
 133         libfakekernel   \
 134         libfcoe         \
 135         libficl         \
 136         libfru          \
 137         libfruutils     \
 138         libfsmgt        \
 139         libfstyp        \
 140         libgen          \
 141         libgrubmgmt     \
 142         libgss          \
 143         libhotplug      \
 144         libidmap        \
 145         libilb          \
 146         libima          \
 147         libinetsvc      \
 148         libinetutil     \
 149         libinstzones    \
 150         libintl         \
 151         libipadm        \
 152         libipd          \
 153         libipmi         \
 154         libipmp         \
 155         libipp          \
 156         libipsecutil    \
 157         libiscsit       \
 158         libjedec        \
 159         libkmf          \
 160         libkrb5         \
 161         libkstat        \
 162         libkvm          \
 163         libldap5        \
 164         liblgrp         \
 165         liblm           \
 166         libm1           \
 167         libmail         \
 168         libmalloc       \
 169         libmapid        \
 170         libmapmalloc    \
 171         libmd5          \
 172         libmlrpc        \
 173         libmtmalloc     \
 174         libmvec         \
 175         libndmp         \
 176         libnisdb        \
 177         libnls          \
 178         libnwam         \
 179         libofmt         \
 180         libpam          \
 181         libpcidb        \
 182         libpcsc         \
 183         libpctx         \
 184         libpicl         \
 185         libpicltree     \
 186         libpkg          \
 187         libpool         \
 188         libpp           \
 189         libproc         \
 190         libproject      \
 191         libpthread      \
 192         libraidcfg      \
 193         librcm          \
 194         libreparse      \
 195         libresolv       \
 196         libresolv2      \
 197         librestart      \
 198         librpcsvc       \
 199         librsm          \
 200         librstp         \
 201         librt           \
 202         libsasl         \
 203         libscf          \
 204         libsched        \
 205         libsctp         \
 206         libsec          \
 207         libsecdb        \
 208         libsendfile     \
 209         libsff          \
 210         libshare        \
 211         libshell        \
 212         libsip          \
 213         libsldap        \
 214         libslp          \
 215         libsmbfs        \
 216         libsmbios       \
 217         libsmedia       \
 218         libsqlite       \
 219         libsrpt         \
 220         libstmf         \
 221         libstmfproxy    \
 222         libsum          \
 223         libsun_ima      \
 224         libsys          \
 225         libsysevent     \
 226         libtecla        \
 227         libtermcap      \
 228         libthread       \
 229         libtnf          \
 230         libtnfctl       \
 231         libtnfprobe     \
 232         libtsnet        \
 233         libtsol         \
 234         libumem         \
 235         libuuid         \
 236         libuutil        \
 237         libvolmgt       \
 238         libvrrpadm      \
 239         libvscan        \
 240         libw            \
 241         libwrap         \
 242         libxcurses      \
 243         libxcurses2     \
 244         libxnet         \
 245         libzfs          \
 246         libzfs_core     \
 247         libzfs_jni      \
 248         libzonecfg      \
 249         libzoneinfo     \
 250         libzonestat     \
 251         libzpool        \
 252         libzutil        \
 253         madv            \
 254         mpapi           \
 255         mpss            \
 256         nametoaddr      \
 257         ncad_addr       \
 258         nsswitch        \
 259         pam_modules     \
 260         passwdutil      \
 261         pkcs11          \
 262         policykit       \
 263         print           \
 264         pylibbe         \
 265         pysolaris       \
 266         pyzfs           \
 267         raidcfg_plugins \
 268         rpcsec_gss      \
 269         sasl_plugins    \
 270         scsi            \
 271         smbclnt         \
 272         smbsrv          \
 273         smhba           \
 274         sun_fc          \
 275         sun_sas         \
 276         udapl           \
 277         watchmalloc     \
 278         $($(MACH)_SUBDIRS)
 279 
 280 i386_SUBDIRS=           \
 281         libfdisk        \
 282         libsaveargs
 283 
 284 sparc_SUBDIRS=          \
 285         efcode          \
 286         libds           \
 287         libdscp         \
 288         libprtdiag      \
 289         libprtdiag_psr  \
 290         libpri          \
 291         librsc          \
 292         storage         \
 293         libpcp          \
 294         libtsalarm      \
 295         libv12n
 296 
 297 #
 298 # Create a special version of $(SUBDIRS) with no .WAIT's, for use with the
 299 # clean and clobber targets (for more information, see those targets, below).
 300 #
 301 NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=)
 302 
 303 DCSUBDIRS=
 304 
 305 MSGSUBDIRS=             \
 306         abi             \
 307         auditd_plugins  \
 308         brand           \
 309         cfgadm_plugins  \
 310         gss_mechs/mech_dh       \
 311         gss_mechs/mech_krb5     \
 312         krb5            \
 313         libast          \
 314         libbsm          \
 315         libc            \
 316         libcfgadm       \
 317         libcmd          \
 318         libcontract     \
 319         libcurses       \
 320         libdhcputil     \
 321         libdiskmgt      \
 322         libdladm        \
 323         libdll          \
 324         libgrubmgmt     \
 325         libgss          \
 326         libidmap        \
 327         libilb          \
 328         libinstzones    \
 329         libipadm        \
 330         libipmp         \
 331         libipsecutil    \
 332         libldap5        \
 333         libnsl          \
 334         libnwam         \
 335         libofmt         \
 336         libpam          \
 337         libpicl         \
 338         libpkg          \
 339         libpool         \
 340         libpp           \
 341         libreparse      \
 342         libsasl         \
 343         libscf          \
 344         libsecdb        \
 345         libshare        \
 346         libshell        \
 347         libsldap        \
 348         libslp          \
 349         libsmbfs        \
 350         libsmedia       \
 351         libsum          \
 352         libtsol         \
 353         libuutil        \
 354         libvrrpadm      \
 355         libvscan        \
 356         libzfs          \
 357         libzonecfg      \
 358         madv            \
 359         mpss            \
 360         pam_modules     \
 361         pyzfs           \
 362         rpcsec_gss      \
 363         $($(MACH)_MSGSUBDIRS)
 364 
 365 sparc_MSGSUBDIRS=       \
 366         libprtdiag      \
 367         libprtdiag_psr
 368 
 369 i386_MSGSUBDIRS= libfdisk
 370 
 371 HDRSUBDIRS=                             \
 372         ../cmd/sendmail/libmilter       \
 373         auditd_plugins  \
 374         fm              \
 375         hal             \
 376         hbaapi          \
 377         libads          \
 378         libast          \
 379         libbrand        \
 380         libbsm          \
 381         libc            \
 382         libcmd          \
 383         libcmdutils     \
 384         libcommputil    \
 385         libcontract     \
 386         libcpc          \
 387         libcryptoutil   \
 388         libctf          \
 389         libcurses       \
 390         libcustr        \
 391         libdemangle     \
 392         libdevice       \
 393         libdevid        \
 394         libdevinfo      \
 395         libdhcpagent    \
 396         libdhcputil     \
 397         libdisasm       \
 398         libdiskmgt      \
 399         libdladm        \
 400         libdll          \
 401         libdlpi         \
 402         libdns_sd       \
 403         libdtrace       \
 404         libdtrace_jni   \
 405         libelfsign      \
 406         libeti          \
 407         libfakekernel   \
 408         libfcoe         \
 409         libfru          \
 410         libfstyp        \
 411         libgen          \
 412         libgrubmgmt     \
 413         libidmap        \
 414         libilb          \
 415         libima          \
 416         libinetsvc      \
 417         libinetutil     \
 418         libinstzones    \
 419         libipadm        \
 420         libipd          \
 421         libipmi         \
 422         libipmp         \
 423         libipp          \
 424         libipsecutil    \
 425         libiscsit       \
 426         libkrb5         \
 427         libkstat        \
 428         libkvm          \
 429         libmail         \
 430         libmapid        \
 431         libmd           \
 432         libmlrpc        \
 433         libmtmalloc     \
 434         libndmp         \
 435         libnsl          \
 436         libnvpair       \
 437         libnwam         \
 438         libofmt         \
 439         libpam          \
 440         libpcidb        \
 441         libpcsc         \
 442         libpctx         \
 443         libpicl         \
 444         libpicltree     \
 445         libpool         \
 446         libpp           \
 447         libproc         \
 448         libraidcfg      \
 449         librcm          \
 450         libreparse      \
 451         librestart      \
 452         librpcsvc       \
 453         librsm          \
 454         librstp         \
 455         libsasl         \
 456         libscf          \
 457         libsec          \
 458         libsff          \
 459         libshare        \
 460         libshell        \
 461         libsip          \
 462         libslp          \
 463         libsmbfs        \
 464         libsmbios       \
 465         libsmedia       \
 466         libsocket       \
 467         libsqlite       \
 468         libsrpt         \
 469         libstmf         \
 470         libstmfproxy    \
 471         libsum          \
 472         libsun_ima      \
 473         libsysevent     \
 474         libtecla        \
 475         libtermcap      \
 476         libtnf          \
 477         libtnfctl       \
 478         libtnfprobe     \
 479         libtsnet        \
 480         libtsol         \
 481         libumem         \
 482         libuutil        \
 483         libvolmgt       \
 484         libvrrpadm      \
 485         libvscan        \
 486         libwrap         \
 487         libxcurses2     \
 488         libzfs          \
 489         libzfs_core     \
 490         libzfs_jni      \
 491         libzoneinfo     \
 492         libzonestat     \
 493         mpapi           \
 494         passwdutil      \
 495         pkcs11          \
 496         policykit       \
 497         scsi            \
 498         smbsrv          \
 499         smhba           \
 500         udapl           \
 501         $($(MACH)_HDRSUBDIRS)
 502 
 503 i386_HDRSUBDIRS=        \
 504         libfdisk        \
 505         libsaveargs
 506 
 507 sparc_HDRSUBDIRS=       \
 508         libds           \
 509         libdscp         \
 510         libpri          \
 511         libv12n         \
 512         storage
 513 
 514 all :=          TARGET= all
 515 check :=        TARGET= check
 516 clean :=        TARGET= clean
 517 clobber :=      TARGET= clobber
 518 install :=      TARGET= install
 519 install_h :=    TARGET= install_h
 520 _dc :=          TARGET= _dc
 521 _msg :=         TARGET= _msg
 522 
 523 .KEEP_STATE:
 524 
 525 #
 526 # For the all and install targets, we clearly must respect library
 527 # dependencies so that the libraries link correctly.  However, for
 528 # the remaining targets (check, clean, clobber, install_h, _dc
 529 # and _msg), libraries do not have any dependencies on one another
 530 # and thus respecting dependencies just slows down the build.
 531 # As such, for these rules, we use pattern replacement to explicitly
 532 # avoid triggering the dependency information.  Note that for clean and
 533 # clobber, we must use $(NOWAIT_SUBDIRS) rather than
 534 # $(SUBDIRS), to prevent `.WAIT' from expanding to `.WAIT-nodepend'.
 535 #
 536 
 537 all:                    $(SUBDIRS)
 538 
 539 install:                $(SUBDIRS) .WAIT install_extra
 540 
 541 # extra libraries kept in other source areas
 542 install_extra:
 543         @cd ../cmd/sgs; pwd; $(MAKE) install_lib
 544         @pwd
 545 
 546 clean clobber:          $(NOWAIT_SUBDIRS:%=%-nodepend)
 547 
 548 lint:
 549 
 550 install_h check:        $(HDRSUBDIRS:%=%-nodepend)
 551 
 552 _msg:                   $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc
 553 
 554 _dc:                    $(DCSUBDIRS:%=%-nodepend)
 555 
 556 # Library interdependencies are called out explicitly here.
 557 ../cmd/sgs/libconv: crt
 558 ../cmd/sgs/libdl: crt
 559 libc:           ../cmd/sgs/libconv ../cmd/sgs/libdl
 560 
 561 libm:           libc
 562 libmd:          libc
 563 libmp:          libc
 564 libnsl:         libc libmd libmp
 565 libnvpair:      libc libnsl
 566 libsocket:      libc libnsl
 567 
 568 basedeps:       libc libm libmd libmp libnsl libnvpair libsocket
 569 basedeps :=     TARGET=install
 570 
 571 # The following dependencies are currently required by libdbus-1 and should
 572 # be used for anything linking against it.
 573 dbusdeps:       libsecdb libtsol libinetutil libscf libuutil libgen libsmbios
 574 
 575 # The following dependencies don't need to be listed below as they are built
 576 # before everything else:
 577 # libc libm libmd libmp libnsl libnvpair libsocket
 578 ../cmd/sendmail/libmilter:      libsocket libnsl
 579 abi:            libctf libmapmalloc libproc
 580 auditd_plugins: libbsm libsecdb libgss libmtmalloc
 581 brand:          libzonecfg libmapmalloc
 582 cfgadm_plugins: libdevice libdevinfo libhotplug librcm hbaapi libkstat libscf
 583 fm:             libexacct libipmi libzfs scsi libdevinfo libdevid libcfgadm \
 584                 libcontract libsysevent ../cmd/sgs/libelf libdladm libsff \
 585                 libpcidb libdiskmgt
 586 $(SPARC_BLD)fm: libpri
 587 gss_mechs/mech_dh: libgss
 588 gss_mechs/mech_dummy: libgss
 589 gss_mechs/mech_krb5: libgss libresolv2 pkcs11 libkstat
 590 gss_mechs/mech_spnego: gss_mechs/mech_krb5
 591 hal:            dbusdeps
 592 krb5:           gss_mechs/mech_krb5 libtecla libldap5
 593 libads:         libnsl
 594 libadt_jni:     libbsm
 595 libadutils:     libldap5 libresolv2
 596 libbe:          libzfs libinstzones libuuid libgen libdevinfo libefi libficl
 597 libbsm:         libinetutil libscf libsecdb libtsol
 598 libcfgadm:      libdevinfo
 599 libcontract:    libnvpair
 600 libcmd:         libsum libast
 601 libcmdutils:    libavl libnvpair
 602 libcpc:         libpctx
 603 libcrypt:       libgen
 604 libctf:         libdwarf
 605 libdemangle:    libcustr
 606 libdevice:      libnvpair
 607 libdevid:       libdevinfo
 608 libdevinfo:     libsec libgen
 609 libdhcpagent:   libdhcputil libuuid libdlpi libcontract
 610 libdhcputil:    libgen libinetutil libdlpi
 611 libdiskmgt:     libdevid libdevinfo libadm libefi libkstat libsysevent
 612 $(INTEL_BLD)libdiskmgt: libfdisk
 613 libdladm:       libdevinfo libinetutil libscf librcm libexacct libkstat \
 614                 libpool
 615 libdll:         libast
 616 libdlpi:        libinetutil libdladm
 617 libds:          libsysevent
 618 libdtrace:      libproc libgen libctf libmapmalloc
 619 libdtrace_jni:  libuutil libdtrace
 620 libdwarf:       ../cmd/sgs/libelf
 621 libefi:         libuuid libsmbios
 622 libelfsign:     libcryptoutil libkmf ../cmd/sgs/libelf
 623 libeti:         libcurses
 624 libexacct/demo: libexacct libproject
 625 libfakekernel:  libumem libcryptoutil
 626 libfcoe:        libdladm
 627 libficl:        libuuid libumem
 628 libfru:         libfruutils
 629 libfsmgt:       libkstat
 630 libgrubmgmt:    libdevinfo libzfs libfstyp libefi
 631 $(INTEL_BLD)libgrubmgmt: libfdisk
 632 libidmap:       libavl libuutil
 633 libinetsvc:     libscf
 634 libinetutil:    libsocket
 635 libinstzones:   libzonecfg libcontract
 636 libipadm:       libinetutil libdlpi libdhcpagent libdladm libsecdb libdhcputil
 637 libipmi:        libm libnvpair libsocket libnsl
 638 libipmp:        libinetutil
 639 libipsecutil:   libtecla libtsol libkmf
 640 libiscsit:      libstmf libuuid
 641 libhotplug:     libnvpair
 642 libkmf:         libcryptoutil pkcs11 libcustr
 643 libkvm:         ../cmd/sgs/libelf
 644 libldap5:       libsasl
 645 libmapid:       libresolv2 libscf
 646 libmlrpc:       libsmbfs libuuid
 647 libndmp:        libscf
 648 libnisdb:       libldap5
 649 libnwam:        libscf libbsm libdladm libipadm
 650 libpcp:         libumem libdevinfo
 651 libpctx:        libproc
 652 libpkg:         libscf libadm
 653 libpool:        libscf libexacct
 654 libpp:          libast
 655 libproc:        ../cmd/sgs/librtld_db ../cmd/sgs/libelf libctf
 656 $(INTEL_BLD)libproc: libsaveargs
 657 libproject:     libpool libproc libsecdb
 658 libprtdiag:     libkstat libdevinfo
 659 libprtdiag_psr: libprtdiag
 660 libraidcfg:     libdevinfo
 661 librcm:         libnvpair
 662 librestart:     libuutil libscf libpool libproject libsecdb libsysevent
 663 libsasl:        libgss pkcs11
 664 libsaveargs:    libdisasm
 665 libscf:         libuutil libgen libnsl libnvpair libsmbios
 666 libsec:         libavl libidmap
 667 libsecdb:       libnsl
 668 libsff:         libnvpair
 669 libshare:       libscf libzfs libuuid libfsmgt libsecdb libumem libsmbfs
 670 libshell:       libast libcmd libdll libsecdb
 671 libsip:         libmd5
 672 libsldap:       libldap5 libscf
 673 libsmbfs:       libkrb5 libsec libidmap pkcs11
 674 libsmbios:      libdevinfo
 675 libsrpt:        libstmf
 676 libstmf:        libscf
 677 libstmfproxy:   libstmf libpthread
 678 libsum:         libast
 679 libsun_ima:     libdevinfo libsysevent
 680 libsysevent:    libsecdb
 681 libtecla:       libcurses
 682 libtermcap:     libcurses
 683 libtnfctl:      ../cmd/sgs/libelf
 684 libtsalarm:     libpcp
 685 libtsnet:       libtsol libsecdb
 686 libtsol:        libsecdb
 687 libuuid:        libdlpi
 688 libv12n:        libds libuuid
 689 libvolmgt:      libadm
 690 libvrrpadm:     libdladm libscf
 691 libvscan:       libscf libsecdb
 692 libzfs:         libdevid libgen libuutil libavl libefi libidmap \
 693                 libumem libtsol libzfs_core libcryptoutil pkcs11 libmd libzutil
 694 libzfs_core:    libnvpair
 695 libzfs_jni:     libdiskmgt libzfs libzutil
 696 libzonecfg:     libuuid libsysevent libsec libbrand libpool libscf libproc \
 697                 libuutil libbsm libsecdb
 698 libzonestat:    libcmdutils libumem
 699 libzpool:       libavl libumem libcmdutils libsysevent libfakekernel libzutil
 700 libzutil:       libadm libavl libdevid libefi
 701 madv:           libgen
 702 mpapi:          libpthread libdevinfo libsysevent
 703 mpss:           libgen
 704 nsswitch:       libadutils libidmap libdns_sd libscf libldap5 libsldap
 705 pam_modules:    libproject passwdutil smbsrv libtsnet libpam libbsm libsecdb
 706 passwdutil:     libsldap
 707 pkcs11:         libcryptoutil libgen libuuid
 708 policykit:      dbusdeps
 709 print:          libldap5 libmd5 libsendfile
 710 pylibbe:        libbe libzfs
 711 pysolaris:      libsec libidmap
 712 pyzfs:          libzfs
 713 raidcfg_plugins: libraidcfg librcm libcfgadm libpicl libpicltree
 714 rpcsec_gss:     libgss
 715 sasl_plugins:   pkcs11 libgss libsasl
 716 scsi:           libfru libumem libdevid libdevinfo
 717 smbclnt:        libfakekernel pkcs11
 718 smbsrv:         libxnet libpthread librt libshare libidmap pkcs11 libsqlite \
 719                 libcryptoutil libreparse libcmdutils libresolv2 libsmbfs \
 720                 libuuid libfakekernel libads libgss libldap5 krb5 libmlrpc
 721 storage:        libdevice libdevinfo libdevid
 722 sun_fc:         libdevinfo libsysevent
 723 sun_sas:        libdevinfo libsysevent libkstat libdevid
 724 udapl:          libdevinfo libdladm
 725 
 726 #
 727 # The reason this rule checks for the existence of the
 728 # Makefile is that some of the directories do not exist
 729 # in certain situations (e.g., exportable source builds,
 730 # OpenSolaris).
 731 #
 732 $(SUBDIRS): FRC
 733         @if [ -f $@/Makefile  ]; then \
 734                 cd $@; pwd; $(MAKE) $(TARGET); \
 735         else \
 736                 true; \
 737         fi
 738 
 739 $(SUBDIRS:%=%-nodepend):
 740         @if [ -f $(@:%-nodepend=%)/Makefile  ]; then \
 741                 cd $(@:%-nodepend=%); pwd; $(MAKE) $(TARGET); \
 742         else \
 743                 true; \
 744         fi
 745 
 746 FRC: