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