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