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) 2018, Joyent, Inc.
  25 # Copyright (c) 2012 by Delphix. All rights reserved.
  26 # Copyright (c) 2013 DEY Storage Systems, Inc. All rights reserved.
  27 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
  28 # Copyright 2016 Toomas Soome <tsoome@me.com>
  29 # Copyright 2018 Nexenta Systems, Inc.
  30 # Copyright 2018 Gary Mills
  31 # Copyright 2019 Peter Tribble
  32 #
  33 
  34 include ../Makefile.master
  35 
  36 #
  37 #       Note that the commands 'lp', and 'perl' are first in
  38 #       the list, violating alphabetical order.  This is because they are very
  39 #       long-running and should be given the most wall-clock time for a
  40 #       parallel build.
  41 #
  42 #       Commands in the FIRST_SUBDIRS list are built before starting the build
  43 #       of other commands.  Currently this includes only 'isaexec' and
  44 #       'platexec'.  This is necessary because $(ROOT)/usr/lib/isaexec or
  45 #       $(ROOT)/usr/lib/platexec must exist when some other commands are built
  46 #       because their 'make install' creates a hard link to one of them.
  47 #
  48 #       Commands are listed one per line so that TeamWare can auto-merge most
  49 #       changes.
  50 #
  51 
  52 FIRST_SUBDIRS=          \
  53         isaexec         \
  54         platexec
  55 
  56 COMMON_SUBDIRS=         \
  57         allocate        \
  58         availdevs       \
  59         lp              \
  60         perl            \
  61         Adm             \
  62         abi             \
  63         adbgen          \
  64         acct            \
  65         acctadm         \
  66         arch            \
  67         asa             \
  68         ast             \
  69         audio           \
  70         auths           \
  71         autopush        \
  72         awk             \
  73         awk_xpg4        \
  74         backup          \
  75         banner          \
  76         bart            \
  77         basename        \
  78         bc              \
  79         bdiff           \
  80         beadm           \
  81         bnu             \
  82         boot            \
  83         busstat         \
  84         cal             \
  85         captoinfo       \
  86         cat             \
  87         cdrw            \
  88         cfgadm          \
  89         checkeq         \
  90         checknr         \
  91         chgrp           \
  92         chmod           \
  93         chown           \
  94         chroot          \
  95         clear           \
  96         clinfo          \
  97         cmd-crypto      \
  98         cmd-inet        \
  99         col             \
 100         compress        \
 101         consadm         \
 102         coreadm         \
 103         cpio            \
 104         cpc             \
 105         cron            \
 106         crypt           \
 107         csh             \
 108         csplit          \
 109         ctfconvert      \
 110         ctfdiff         \
 111         ctfdump         \
 112         ctfmerge        \
 113         ctrun           \
 114         ctstat          \
 115         ctwatch         \
 116         datadm          \
 117         date            \
 118         dc              \
 119         dd              \
 120         deroff          \
 121         devfsadm        \
 122         syseventd       \
 123         devctl          \
 124         devinfo         \
 125         devmgmt         \
 126         devprop         \
 127         dfs.cmds        \
 128         diff            \
 129         diff3           \
 130         diffmk          \
 131         dircmp          \
 132         dirname         \
 133         dis             \
 134         diskinfo        \
 135         diskmgtd        \
 136         dispadmin       \
 137         dladm           \
 138         dlstat          \
 139         dlutil          \
 140         dmesg           \
 141         dodatadm        \
 142         dtrace          \
 143         du              \
 144         dumpadm         \
 145         dumpcs          \
 146         echo            \
 147         ed              \
 148         eeprom          \
 149         eject           \
 150         emul64ioctl     \
 151         enhance         \
 152         env             \
 153         eqn             \
 154         etdump          \
 155         expand          \
 156         expr            \
 157         exstr           \
 158         factor          \
 159         false           \
 160         fcinfo          \
 161         fcoesvc         \
 162         fdetach         \
 163         fdformat        \
 164         fdisk           \
 165         ficl            \
 166         filesync        \
 167         file            \
 168         find            \
 169         flowadm         \
 170         flowstat        \
 171         fm              \
 172         fmt             \
 173         fmthard         \
 174         fmtmsg          \
 175         fold            \
 176         format          \
 177         fs.d            \
 178         fstyp           \
 179         fuser           \
 180         fwflash         \
 181         gcore           \
 182         gencat          \
 183         geniconvtbl     \
 184         genmsg          \
 185         getconf         \
 186         getdevpolicy    \
 187         getent          \
 188         getfacl         \
 189         getmajor        \
 190         getopt          \
 191         gettext         \
 192         gettxt          \
 193         grep            \
 194         groups          \
 195         growfs          \
 196         grpck           \
 197         gss             \
 198         hal             \
 199         halt            \
 200         head            \
 201         hostid          \
 202         hostname        \
 203         hotplug         \
 204         hotplugd        \
 205         ibd_upgrade     \
 206         iconv           \
 207         id              \
 208         idmap           \
 209         infocmp         \
 210         init            \
 211         initpkg         \
 212         install.d       \
 213         intrd           \
 214         intrstat        \
 215         ipcrm           \
 216         ipcs            \
 217         ipdadm          \
 218         ipf             \
 219         isainfo         \
 220         isalist         \
 221         itutools        \
 222         iscsiadm        \
 223         iscsid          \
 224         iscsitsvc       \
 225         isns            \
 226         itadm           \
 227         kbd             \
 228         keyserv         \
 229         killall         \
 230         krb5            \
 231         ksh             \
 232         kvmstat         \
 233         last            \
 234         lastcomm        \
 235         latencytop      \
 236         ldap            \
 237         ldapcachemgr    \
 238         lgrpinfo        \
 239         line            \
 240         link            \
 241         dlmgmtd         \
 242         listen          \
 243         loadkeys        \
 244         locale          \
 245         localedef       \
 246         lockstat        \
 247         locator         \
 248         lofiadm         \
 249         logadm          \
 250         logger          \
 251         login           \
 252         logins          \
 253         look            \
 254         ls              \
 255         luxadm          \
 256         mach            \
 257         mail            \
 258         mailwrapper     \
 259         mailx           \
 260         make            \
 261         makekey         \
 262         man             \
 263         mandoc          \
 264         mdb             \
 265         mesg            \
 266         mkdir           \
 267         mkfifo          \
 268         mkfile          \
 269         mkmsgs          \
 270         mknod           \
 271         mkpwdict        \
 272         mktemp          \
 273         modload         \
 274         more            \
 275         mpathadm        \
 276         msgfmt          \
 277         msgid           \
 278         mt              \
 279         mv              \
 280         mvdir           \
 281         ndmpadm         \
 282         ndmpd           \
 283         ndmpstat        \
 284         netadm          \
 285         netfiles        \
 286         newform         \
 287         newgrp          \
 288         news            \
 289         newtask         \
 290         nice            \
 291         nl              \
 292         nlsadmin        \
 293         nohup           \
 294         nsadmin         \
 295         nscd            \
 296         oamuser         \
 297         oawk            \
 298         od              \
 299         pack            \
 300         pagesize        \
 301         passmgmt        \
 302         passwd          \
 303         pathchk         \
 304         pbind           \
 305         pcidr           \
 306         pcitool         \
 307         pfexec          \
 308         pfexecd         \
 309         pginfo          \
 310         pgstat          \
 311         pgrep           \
 312         picl            \
 313         plimit          \
 314         policykit       \
 315         pools           \
 316         power           \
 317         powertop        \
 318         ppgsz           \
 319         pg              \
 320         plockstat       \
 321         pr              \
 322         prctl           \
 323         print           \
 324         printf          \
 325         priocntl        \
 326         profiles        \
 327         projadd         \
 328         projects        \
 329         prstat          \
 330         prtconf         \
 331         prtdiag         \
 332         prtvtoc         \
 333         ps              \
 334         psradm          \
 335         psrinfo         \
 336         psrset          \
 337         ptools          \
 338         pwck            \
 339         pwconv          \
 340         pwd             \
 341         pyzfs           \
 342         raidctl         \
 343         ramdiskadm      \
 344         rcap            \
 345         rcm_daemon      \
 346         rctladm         \
 347         refer           \
 348         regcmp          \
 349         renice          \
 350         rm              \
 351         rmdir           \
 352         rmformat        \
 353         rmmount         \
 354         rmt             \
 355         rmvolmgr        \
 356         roles           \
 357         rpcbind         \
 358         rpcgen          \
 359         rpcinfo         \
 360         rpcsvc          \
 361         runat           \
 362         sa              \
 363         saf             \
 364         sasinfo         \
 365         savecore        \
 366         sbdadm          \
 367         script          \
 368         scsi            \
 369         sdiff           \
 370         sdpadm          \
 371         sed             \
 372         sendmail        \
 373         setfacl         \
 374         setmnt          \
 375         setpgrp         \
 376         setuname        \
 377         sgs             \
 378         sh              \
 379         shcomp          \
 380         smbios          \
 381         smbsrv          \
 382         smserverd       \
 383         soelim          \
 384         sort            \
 385         spell           \
 386         split           \
 387         sqlite          \
 388         srchtxt         \
 389         srptadm         \
 390         srptsvc         \
 391         ssh             \
 392         stat            \
 393         stmfadm         \
 394         stmfproxy       \
 395         stmfsvc         \
 396         stmsboot        \
 397         streams         \
 398         strings         \
 399         su              \
 400         sulogin         \
 401         sunpc           \
 402         svc             \
 403         svr4pkg         \
 404         swap            \
 405         sync            \
 406         sysdef          \
 407         syseventadm     \
 408         syslogd         \
 409         tabs            \
 410         tail            \
 411         tar             \
 412         tbl             \
 413         tcopy           \
 414         tcpd            \
 415         th_tools        \
 416         tic             \
 417         time            \
 418         tip             \
 419         tnf             \
 420         touch           \
 421         tput            \
 422         tr              \
 423         trapstat        \
 424         troff           \
 425         true            \
 426         truss           \
 427         tsol            \
 428         tty             \
 429         ttymon          \
 430         tzreload        \
 431         uadmin          \
 432         ul              \
 433         uname           \
 434         units           \
 435         unlink          \
 436         unpack          \
 437         userattr        \
 438         users           \
 439         utmp_update     \
 440         utmpd           \
 441         uuidgen         \
 442         valtools        \
 443         vgrind          \
 444         vi              \
 445         volcheck        \
 446         volrmmount      \
 447         vrrpadm         \
 448         vscan           \
 449         vt              \
 450         vtfontcvt       \
 451         w               \
 452         wall            \
 453         which           \
 454         who             \
 455         whodo           \
 456         wracct          \
 457         write           \
 458         xargs           \
 459         xstr            \
 460         yes             \
 461         ypcmd           \
 462         yppasswd        \
 463         zdb             \
 464         zdump           \
 465         zfs             \
 466         zhack           \
 467         zic             \
 468         zinject         \
 469         zlogin          \
 470         zoneadm         \
 471         zoneadmd        \
 472         zonecfg         \
 473         zonename        \
 474         zpool           \
 475         zlook           \
 476         zonestat        \
 477         zstreamdump     \
 478         ztest
 479 
 480 i386_SUBDIRS=           \
 481         acpi            \
 482         acpihpd         \
 483         addbadsec       \
 484         ahciem          \
 485         biosdev         \
 486         cxgbetool       \
 487         diskscan        \
 488         nvmeadm         \
 489         rtc             \
 490         ucodeadm        \
 491         xhci            \
 492         xvm
 493 
 494 sparc_SUBDIRS=          \
 495         dcs             \
 496         device_remap    \
 497         drd             \
 498         fruadm          \
 499         ldmad           \
 500         oplhpd          \
 501         prtdscp         \
 502         prtfru          \
 503         scadm           \
 504         sckmd           \
 505         sf880drd        \
 506         virtinfo        \
 507         vntsd
 508 
 509 #
 510 # Commands that are messaged.  Note that 'lp' comes first
 511 # (see previous comment about 'lp'.)
 512 #
 513 MSGSUBDIRS=             \
 514         lp              \
 515         abi             \
 516         acctadm         \
 517         allocate        \
 518         asa             \
 519         audio           \
 520         audit           \
 521         auditconfig     \
 522         auditd          \
 523         auditrecord     \
 524         auditset        \
 525         auths           \
 526         autopush        \
 527         awk             \
 528         awk_xpg4        \
 529         backup          \
 530         banner          \
 531         bart            \
 532         basename        \
 533         beadm           \
 534         bnu             \
 535         busstat         \
 536         cal             \
 537         cat             \
 538         cdrw            \
 539         cfgadm          \
 540         checkeq         \
 541         checknr         \
 542         chgrp           \
 543         chmod           \
 544         chown           \
 545         cmd-crypto      \
 546         cmd-inet        \
 547         col             \
 548         compress        \
 549         consadm         \
 550         coreadm         \
 551         cpio            \
 552         cpc             \
 553         cron            \
 554         csh             \
 555         csplit          \
 556         ctrun           \
 557         ctstat          \
 558         ctwatch         \
 559         datadm          \
 560         date            \
 561         dc              \
 562         dcs             \
 563         dd              \
 564         deroff          \
 565         devfsadm        \
 566         dfs.cmds        \
 567         diff            \
 568         diffmk          \
 569         dladm           \
 570         dlstat          \
 571         du              \
 572         dumpcs          \
 573         ed              \
 574         eject           \
 575         env             \
 576         eqn             \
 577         expand          \
 578         expr            \
 579         fcinfo          \
 580         file            \
 581         filesync        \
 582         find            \
 583         flowadm         \
 584         flowstat        \
 585         fm              \
 586         fold            \
 587         fs.d            \
 588         fwflash         \
 589         geniconvtbl     \
 590         genmsg          \
 591         getconf         \
 592         getent          \
 593         gettext         \
 594         gettxt          \
 595         grep            \
 596         grpck           \
 597         gss             \
 598         halt            \
 599         head            \
 600         hostname        \
 601         hotplug         \
 602         iconv           \
 603         id              \
 604         idmap           \
 605         isaexec         \
 606         iscsiadm        \
 607         iscsid          \
 608         isns            \
 609         itadm           \
 610         kbd             \
 611         krb5            \
 612         ksh             \
 613         last            \
 614         ldap            \
 615         ldapcachemgr    \
 616         lgrpinfo        \
 617         locale          \
 618         lofiadm         \
 619         logadm          \
 620         logger          \
 621         logins          \
 622         ls              \
 623         luxadm          \
 624         mailx           \
 625         make            \
 626         man             \
 627         mesg            \
 628         mkdir           \
 629         mkpwdict        \
 630         mktemp          \
 631         more            \
 632         mpathadm        \
 633         msgfmt          \
 634         mv              \
 635         ndmpadm         \
 636         ndmpstat        \
 637         newgrp          \
 638         newtask         \
 639         nice            \
 640         nohup           \
 641         oawk            \
 642         pack            \
 643         passwd          \
 644         passmgmt        \
 645         pathchk         \
 646         pfexec          \
 647         pg              \
 648         pgrep           \
 649         picl            \
 650         pools           \
 651         power           \
 652         pr              \
 653         praudit         \
 654         print           \
 655         profiles        \
 656         projadd         \
 657         projects        \
 658         prstat          \
 659         prtdiag         \
 660         ps              \
 661         psrinfo         \
 662         ptools          \
 663         pwconv          \
 664         pwd             \
 665         pyzfs           \
 666         raidctl         \
 667         ramdiskadm      \
 668         rcap            \
 669         rcm_daemon      \
 670         refer           \
 671         regcmp          \
 672         renice          \
 673         roles           \
 674         rm              \
 675         rmdir           \
 676         rmformat        \
 677         rmmount         \
 678         rmvolmgr        \
 679         sasinfo         \
 680         sbdadm          \
 681         scadm           \
 682         script          \
 683         scsi            \
 684         sdiff           \
 685         sdpadm          \
 686         sgs             \
 687         sh              \
 688         shcomp          \
 689         smbsrv          \
 690         sort            \
 691         split           \
 692         srptadm         \
 693         stat            \
 694         stmfadm         \
 695         stmsboot        \
 696         strings         \
 697         su              \
 698         svc             \
 699         svr4pkg         \
 700         swap            \
 701         syseventadm     \
 702         syseventd       \
 703         tabs            \
 704         tar             \
 705         tbl             \
 706         time            \
 707         tnf             \
 708         touch           \
 709         tput            \
 710         troff           \
 711         tsol            \
 712         tty             \
 713         ttymon          \
 714         tzreload        \
 715         ul              \
 716         uname           \
 717         units           \
 718         unlink          \
 719         unpack          \
 720         userattr        \
 721         valtools        \
 722         vgrind          \
 723         vi              \
 724         volcheck        \
 725         volrmmount      \
 726         vrrpadm         \
 727         vscan           \
 728         w               \
 729         who             \
 730         whodo           \
 731         wracct          \
 732         write           \
 733         xargs           \
 734         yppasswd        \
 735         zdump           \
 736         zfs             \
 737         zic             \
 738         zlogin          \
 739         zoneadm         \
 740         zoneadmd        \
 741         zonecfg         \
 742         zonename        \
 743         zpool           \
 744         zonestat
 745 
 746 sparc_MSGSUBDIRS=       \
 747         fruadm          \
 748         prtdscp         \
 749         prtfru          \
 750         virtinfo        \
 751         vntsd
 752 
 753 i386_MSGSUBDIRS=        \
 754         ucodeadm
 755 
 756 #
 757 # commands that use dcgettext for localized time, LC_TIME
 758 #
 759 DCSUBDIRS=              \
 760         cal             \
 761         cfgadm          \
 762         diff            \
 763         ls              \
 764         pr              \
 765         ps              \
 766         tar             \
 767         w               \
 768         who             \
 769         whodo           \
 770         write
 771 
 772 #
 773 # commands that belong only to audit.
 774 #
 775 AUDITSUBDIRS=           \
 776         amt             \
 777         audit           \
 778         audit_warn      \
 779         auditconfig     \
 780         auditd          \
 781         auditrecord     \
 782         auditreduce     \
 783         auditset        \
 784         auditstat       \
 785         praudit
 786 
 787 #
 788 # commands not owned by the systems group
 789 #
 790 BWOSDIRS=
 791 
 792 
 793 all :=          TARGET = all
 794 install :=      TARGET = install
 795 clean :=        TARGET = clean
 796 clobber :=      TARGET = clobber
 797 lint :=         TARGET = lint
 798 _msg :=         TARGET = _msg
 799 _dc :=          TARGET = _dc
 800 
 801 .KEEP_STATE:
 802 
 803 SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
 804 
 805 .PARALLEL:      $(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(AUDITSUBDIRS)
 806 
 807 all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) \
 808         $(AUDITSUBDIRS)
 809 
 810 #
 811 # Manifests cannot be checked in parallel, because we are using
 812 # the global repository that is in $(SRC)/cmd/svc/seed/global.db.
 813 # For this reason, to avoid .PARALLEL and .NO_PARALLEL conflicts,
 814 # we spawn off a sub-make to perform the non-parallel 'make check'
 815 #
 816 check:
 817         $(MAKE) -f Makefile.check check
 818 
 819 #
 820 # The .WAIT directive works around an apparent bug in parallel make.
 821 # Evidently make was getting the target _msg vs. _dc confused under
 822 # some level of parallelization, causing some of the _dc objects
 823 # not to be built.
 824 #
 825 _msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
 826 
 827 _dc: $(DCSUBDIRS)
 828 
 829 #
 830 # Dependencies
 831 #
 832 fs.d:   fstyp
 833 ksh:    shcomp isaexec
 834 print:  lp
 835 fmt:    mailx
 836 
 837 $(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(AUDITSUBDIRS): FRC
 838         @if [ -f $@/Makefile  ]; then \
 839                 cd $@; pwd; $(MAKE) $(TARGET); \
 840         else \
 841                 true; \
 842         fi
 843 
 844 FRC: