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 # Copyright 2015 Gary Mills
  23 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 #
  26 # Copyright (c) 2018, Joyent, Inc.
  27 
  28 PROG=           acctcms acctcom acctcon acctcon1 acctcon2 \
  29                 acctdisk acctdusg acctmerg accton acctprc acctprc1 \
  30                 acctprc2 acctwtmp closewtmp fwtmp \
  31                 wtmpfix utmp2wtmp
  32 SHFILE1=        acct chargefee ckpacct dodisk lastlogin\
  33                 monacct nulladm prctmp prdaily prtacct \
  34                 remove runacct shutacct startup turnacct
  35 SHFILE2=        ptecms.awk ptelus.awk
  36 SUBDIRS=        lib
  37 ALL=            $(PROG) $(SHFILE1) $(SHFILE2) holidays
  38 
  39 SRCS=           $(PROG:%=%.c)
  40 SHFILE1SRCS=    $(SHFILE1:%=%.sh)
  41 
  42 BINPROG=        acctcom
  43 LIBPROG=        acctcms acctcon acctcon1 acctcon2 acctdisk \
  44                 acctdusg acctmerg accton acctprc acctprc1 acctprc2 \
  45                 acctwtmp closewtmp fwtmp utmp2wtmp \
  46                 wtmpfix chargefee ckpacct dodisk monacct \
  47                 lastlogin nulladm prctmp prdaily prtacct \
  48                 remove runacct shutacct startup turnacct \
  49                 ptecms.awk ptelus.awk
  50 ETCPROG=        holidays
  51 INITPROG=       acct
  52 
  53 include         ../Makefile.cmd
  54 
  55 all:=           TARGET= all
  56 install:=       TARGET= install
  57 clean:=         TARGET= clean
  58 clobber:=       TARGET= clobber
  59 lint:=          TARGET= lint
  60 
  61 acctcom := LDLIBS += lib/a.a
  62 acctcms acctcon acctcon1 acctmerg acctprc1 acctprc := LDLIBS += lib/a.a
  63 
  64 acctdusg:= CPPFLAGS += -D_FILE_OFFSET_BITS=64
  65 acctdusg:= LDLIBS += -lcmdutils
  66 
  67 LIBACCTD=       $(ROOTLIB)/acct
  68 ETCACCTD=       $(ROOTETC)/acct
  69 ETCINITD=       $(ROOTETC)/init.d
  70 VARADMD=        $(ROOT)/var/adm
  71 ACCTDIR=        $(VARADMD)/acct
  72 ACCTSUBDIRS=    $(ACCTDIR)/nite $(ACCTDIR)/fiscal $(ACCTDIR)/sum
  73 WKDIRS=         $(ACCTDIR) $(ACCTSUBDIRS)
  74 
  75 # DIRS is directories to create. $(ETCINITD) [aka: /etc/init.d] is created
  76 # in /usr/src/Targetdirs and hence should be assumed to exist.
  77 DIRS=           $(LIBACCTD) $(ETCACCTD) $(WKDIRS)
  78 
  79 USRBINPROG=     $(BINPROG:%=$(ROOTBIN)/%)
  80 LIBACCTPROG=    $(LIBPROG:%=$(LIBACCTD)/%)
  81 ETCACCTPROG=    $(ETCPROG:%=$(ETCACCTD)/%)
  82 ETCINITPROG=    $(INITPROG:%=$(ETCINITD)/%)
  83 
  84 $(LIBACCTD) :=          DIRMODE=        755
  85 $(ETCACCTD) :=          DIRMODE=        755
  86 $(WKDIRS) :=            DIRMODE=        775
  87 $(LIBACCTD)/accton :=   FILEMODE=       04755
  88 $(ETCINITPROG) :=       FILEMODE=       0744
  89 $(ETCACCTPROG) :=       FILEMODE=       0644
  90 
  91 CERRWARN +=     -_gcc=-Wno-implicit-function-declaration
  92 CERRWARN +=     -_gcc=-Wno-parentheses
  93 CERRWARN +=     -_gcc=-Wno-unused-variable
  94 CERRWARN +=     -_gcc=-Wno-address
  95 
  96 # not linted
  97 SMATCH=off
  98 
  99 .KEEP_STATE:
 100 
 101 .PARALLEL: $(ALL)
 102 
 103 all: $(SUBDIRS) .WAIT $(ALL)
 104 
 105 install: all .WAIT $(DIRS) .WAIT $(USRBINPROG) $(LIBACCTPROG) $(ETCACCTPROG) \
 106         $(ETCINITPROG)
 107 
 108 THIS_YEAR:sh=   date +%Y
 109 
 110 holidays:       FRC
 111         @if grep $(THIS_YEAR) holidays > /dev/null 2>&1;\
 112         then \
 113                 :;\
 114         else \
 115                 $(ECHO) "building holidays";\
 116                 ( \
 117                 $(ECHO) "* @(#)holidays\tJanuary 1, `date +%Y`";\
 118                 $(ECHO) "*";\
 119                 $(ECHO) "* Prime/Nonprime Table for UNIX Accounting System";\
 120                 $(ECHO) "*";\
 121                 $(ECHO) "* Curr\tPrime\tNon-Prime";\
 122                 $(ECHO) "* Year\tStart\tStart";\
 123                 $(ECHO) "*";\
 124                 $(ECHO) "  `date +%Y`\t0800\t1800";\
 125                 $(ECHO) "*";\
 126                 $(ECHO) "* only the first column (month/day) is significiant.";\
 127                 $(ECHO) "*";\
 128                 $(ECHO) "* month/day\tCompany";\
 129                 $(ECHO) "* \t\tHoliday";\
 130                 $(ECHO) "*";\
 131                 $(ECHO) "1/1\t\tNew Years Day";\
 132                 $(ECHO) "7/4\t\tIndep. Day";\
 133                 $(ECHO) "12/25\t\tChristmas" ) > holidays;\
 134         fi
 135 
 136 $(DIRS):
 137         $(INS.dir)
 138 
 139 $(LIBACCTD)/% : %
 140         $(INS.file)
 141 
 142 $(ETCACCTD)/% : %
 143         $(INS.file)
 144 
 145 $(ETCINITD)/% : %
 146         $(INS.file)
 147 
 148 $(SUBDIRS): FRC
 149         @cd $@; pwd; $(MAKE) $(MFLAGS) $(TARGET)
 150 
 151 FRC:
 152 
 153 clean: $(SUBDIRS)
 154 
 155 clobber: $(SUBDIRS)
 156         $(RM) $(PROG) $(SHFILE1) holidays
 157 
 158 lint:   $(SUBDIRS)
 159         $(LINT.c) $(SRCS)