xref: /illumos-gate/usr/src/cmd/sa/Makefile (revision dd4eeefdb8e4583c47e28a7f315db6087931ef06)
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 2006 Sun Microsystems, Inc.  All rights reserved.
23# Use is subject to license terms.
24#
25#pragma	ident	"%Z%%M%	%I%	%E% SMI"
26#
27# cmd/sa/Makefile
28#
29
30MANIFEST =	sar.xml
31SVCMETHOD =	svc-sar
32
33include ../Makefile.cmd
34
35ROOTMANIFESTDIR = $(ROOTSVCSYSTEM)
36
37GREP=		grep
38
39SADC= 		sadc
40SADP= 		sadp
41SAR= 		sar
42TIMEX=		timex
43SAG=		sag
44SA1=		sa1
45SA2=		sa2
46
47sadc :=		LDLIBS += -lkstat
48
49# Executables produced
50BINPROG=	$(TIMEX)
51SBINPROG=	$(SAR) $(SAG)
52LIBPROG=	$(SADC)
53LIBSHELL=	$(SA1) $(SA2)
54INITSHELL=	$(PERF)
55
56PROGS=		$(BINPROG) $(SBINPROG) $(LIBPROG)
57SHELLS=		$(LIBSHELL)
58TXTS= 		$(SADP).c README
59ALL=		$(PROGS) $(SHELLS)
60
61# Source files
62SAG_OBJECTS=	$(SAG)a.o $(SAG)b.o
63SADC_OBJECTS=	$(SADC).o
64srcs=		$(TIMEX) $(SAR) $(SADC)
65SRCS=		$(srcs:%=%.c) $(SAG_OBJECTS:%.o=%.c)
66SHSRCS=		$(SHELLS:%=%.sh)
67
68# Set of target install directories
69LIBSAD=		$(ROOT)/usr/lib/sa
70CROND=		$(ROOT)/var/spool/cron
71CRONTABSD=	$(CROND)/crontabs
72
73# Set of target install files
74SYSCRONTAB=	$(CRONTABSD)/sys
75ROOTPROG=	$(BINPROG:%=$(ROOTBIN)/%)
76ROOTUSBINPROG=	$(SBINPROG:%=$(ROOTUSRSBIN)/%)
77ROOTLIBPROG=	$(LIBPROG:%=$(LIBSAD)/%)
78ROOTLIBSHELL=	$(LIBSHELL:%=$(LIBSAD)/%)
79ROOTSYMLINKS=	$(SBINPROG:%=$(ROOTBIN)/%)
80
81# Performance monitoring should not be enabled by default. Hence, these
82# entries are comments. Note the difficulty of inserting a literal #
83# in a makefile.... Wonderful parser here....
84COMMENT_CHAR:sh=          echo \\043
85ENTRY1=		'$(COMMENT_CHAR) 0 * * * 0-6 /usr/lib/sa/sa1'
86ENTRY2=		'$(COMMENT_CHAR) 20,40 8-17 * * 1-5 /usr/lib/sa/sa1'
87ENTRY3=		'$(COMMENT_CHAR) 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A'
88
89CLOBBERFILES=	$(PROGS) $(SHELLS)
90
91# Conditionals
92$(SYSCRONTAB)		:= OWNER = root
93$(SYSCRONTAB)     	:= GROUP = sys
94$(ROOTBIN)/$(TIMEX)	:= GROUP = sys
95# $(ROOTUSRSBIN)/$(SADP) 	:= FILEMODE = 2555
96# $(ROOTUSRSBIN)/$(SADP) 	:= GROUP = sys
97$(LIBSAD)/$(SADC) 	:= FILEMODE = 0555
98$(LIBSAD)/$(SADC) 	:= GROUP = bin
99
100.KEEP_STATE:
101
102all: 		$(ALL) $(TXTS)
103
104$(SAG):		$(SAG_OBJECTS)
105	$(LINK.c) -o $@ $(SAG_OBJECTS) $(LDLIBS)
106	$(POST_PROCESS)
107
108$(SADC):	$(SADC_OBJECTS)
109	$(LINK.c) -o $@ $(SADC_OBJECTS) $(LDLIBS)
110	$(POST_PROCESS)
111
112# The edit of SYSCRONTAB must be done unconditionally because of the
113# creation of this file by a different component (Adm) and the possible
114# backdating.
115install:	all $(ROOTPROG) $(ROOTUSBINPROG)     \
116		$(ROOTINITSHELL)  $(ROOTLIBSHELL) $(ROOTSYMLINKS) \
117		$(ROOTMANIFEST) $(ROOTSVCMETHOD) $(ROOTLIBPROG)
118	@if [ -f $(SYSCRONTAB) ]; \
119	then \
120		if $(GREP) "sa1" $(SYSCRONTAB) >/dev/null 2>&1 ; then :; \
121		else \
122			echo $(ENTRY1) >> $(SYSCRONTAB); \
123			echo $(ENTRY2) >> $(SYSCRONTAB); \
124			echo "$(SYSCRONTAB) modified"; \
125		fi; \
126		if $(GREP) "sa2" $(SYSCRONTAB) >/dev/null 2>&1 ; then :; \
127		else \
128			echo $(ENTRY3) >> $(SYSCRONTAB); \
129		fi; \
130	fi
131
132$(LIBSAD)/%: %
133	$(INS.file)
134
135$(ROOTSYMLINKS):
136	-$(RM) $@; $(SYMLINK) ../sbin/`basename $@` $@
137
138$(ETCINITD)/%: %
139	$(INS.file)
140
141check:	$(CHKMANIFEST)
142
143clean:
144	$(RM) $(SAG_OBJECTS) $(SADC_OBJECTS) $(PROGS) $(SHELLS) $(SADP)
145
146lint:	lint_SRCS
147
148include ../Makefile.targ
149