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