xref: /illumos-gate/usr/src/cmd/cron/Makefile (revision a787240632bcb1404b9fd4583516b875d3f02c8b)
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, Version 1.0 only
6# (the "License").  You may not use this file except in compliance
7# with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22#
23# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24# Use is subject to license terms.
25#
26# ident	"%Z%%M%	%I%	%E% SMI"
27#
28
29DEFAULTFILES =	cron.dfl
30
31include		../Makefile.cmd
32
33MANIFEST =	cron.xml
34
35ROOTMANIFESTDIR = $(ROOTSVCSYSTEM)
36ROOTMETHOD =	$(ROOTLIBSVCMETHOD)/svc-cron
37
38CPPFLAGS +=	-D_FILE_OFFSET_BITS=64
39
40ROOTVAR =	$(ROOT)/var
41
42ROOTSPCRON =	$(ROOTVAR)/spool/cron
43ROOTCROND =	$(ROOTETC)/cron.d
44ROOTCRONTABS =	$(ROOTSPCRON)/crontabs
45ROOTATJOBS =	$(ROOTSPCRON)/atjobs
46ROOTLIBCRON =	$(ROOTLIB)/cron
47
48PROG1 =		cron
49PROG2 =		at atq atrm crontab
50XPG4PROG =	at
51PROG =		$(PROG1) $(PROG2)
52
53SCRIPT =	batch
54XPG4SCRIPT =	batch.xpg4
55
56POFILE=		$(PROG1)_cmd.po
57POFILES=	at.po crontab.po funcs.po batch.po
58XGETFLAGS=	-a -x $(PROG1).xcl
59
60ROOTDIRS =	$(ROOTSPCRON) $(ROOTCROND) \
61		$(ROOTCRONTABS) $(ROOTATJOBS)
62
63ROOTPROG =	$(PROG1:%=$(ROOTUSRSBIN)/%) $(PROG2:%=$(ROOTBIN)/%)	\
64		$(SCRIPT:%=$(ROOTBIN)/%) \
65		$(XPG4PROG:%=$(ROOTXPG4BIN)/%) \
66		$(XPG4SCRIPT:%.xpg4=$(ROOTXPG4BIN)/%)
67
68ROOTSYMLINK =	$(ROOTLIBCRON) $(ROOTETC)/cron
69
70COMMONOBJ1=	permit.o
71COMMONOBJ2=	funcs.o
72COMMONOBJS=	$(COMMONOBJ1) $(COMMONOBJ2)
73CRONOBJS=	cron.o elm.o
74ATOBJS=		at.o att1.o att2.o
75XPG4OBJS=	values-xpg4.o
76ATRMOBJS=	atrm.o
77ATQOBJS=	atq.o
78CRONTABOBJS=	crontab.o
79
80XPG4ATOBJS=	$(ATOBJS:%=atobjs.xpg4/%) $(COMMONOBJS:%=atobjs.xpg4/%) \
81		$(XPG4OBJS:%=atobjs.xpg4/%)
82
83cron :=		POBJS = $(CRONOBJS) $(COMMONOBJ2)
84at :=		POBJS = $(ATOBJS) $(COMMONOBJS)
85at.xpg4 :=	POBJS = $(XPG4ATOBJS)
86atrm :=		POBJS = $(ATRMOBJS) $(COMMONOBJS)
87atq :=		POBJS = $(ATQOBJS) $(COMMONOBJS)
88crontab :=	POBJS = crontab.o $(COMMONOBJS)
89
90at.o atobjs.xpg4/at.o funcs.o permit.o crontab.o elm.o := CFLAGS += $(CCVERBOSE)
91
92XPG4POBJS =	atobjs.xpg4/at.o atobjs.xpg4/att1.o		\
93		atobjs.xpg4/att2.o atobjs.xpg4/funcs.o			\
94		atobjs.xpg4/permit.o atobjs.xpg4/values-xpg4.o
95NOBJS=		$(CRONOBJS) $(ATOBJS) $(ATRMOBJS) $(ATQOBJS) $(CRONTABOBJS) \
96		$(COMMONOBJS)
97OBJS =		$(NOBJS) $(XPG4ATOBJS)
98SRCS =		$(NOBJS:%.o=%.c)
99
100CLOBBERFILES +=	$(SCRIPT) $(XPG4SCRIPT)
101
102$(ROOTLIBCRON) :=		SYMLNKDEST = ../../etc/cron.d
103$(ROOTETC)/cron :=		SYMLNKDEST = ../usr/sbin/cron
104
105$(ROOTBIN)/at :=		FILEMODE = 04755
106$(ROOTBIN)/at :=		OWNER = root
107$(ROOTBIN)/at :=		GROUP = sys
108$(ROOTXPG4BIN)/at :=		FILEMODE = 04755
109$(ROOTXPG4BIN)/at :=		OWNER = root
110$(ROOTXPG4BIN)/at :=		GROUP = sys
111$(ROOTBIN)/atrm :=		FILEMODE = 04755
112$(ROOTBIN)/atrm :=		OWNER = root
113$(ROOTBIN)/atrm :=		GROUP = sys
114$(ROOTBIN)/atq :=		FILEMODE = 04755
115$(ROOTBIN)/atq :=		OWNER = root
116$(ROOTBIN)/atq :=		GROUP = sys
117$(ROOTBIN)/crontab :=		FILEMODE = 04555
118$(ROOTBIN)/crontab :=		OWNER = root
119$(ROOTUSRSBIN)/cron :=		FILEMODE = 0555
120$(ROOTUSRSBIN)/cron :=		OWNER = root
121$(ROOTUSRSBIN)/cron :=		GROUP = sys
122
123LDLIBS +=	-lbsm
124
125at :=		LDLIBS += -lproject -lsecdb
126at.xpg4 :=	LDLIBS += -lproject -lsecdb
127atq :=		LDLIBS += -lsecdb
128atrm :=		LDLIBS += -lsecdb
129cron :=		LDLIBS += -lcmd -lpam -lproject -lcontract
130crontab :=	LDLIBS += -lsecdb -lpam
131
132lint :=		LDLIBS += -lproject -lsecdb -lcontract -lpam
133
134$(XPG4) := CFLAGS += -DXPG4
135
136$(ROOTSVCSYSTEM)/cron.xml := OWNER = root
137$(ROOTSVCSYSTEM)/cron.xml := GROUP = sys
138$(ROOTSVCSYSTEM)/cron.xml := FILEMODE = 0444
139
140$(ROOTLIBSVCMETHOD)/svc-cron := OWNER = root
141$(ROOTLIBSVCMETHOD)/svc-cron := GROUP = bin
142$(ROOTLIBSVCMETHOD)/svc-cron := FILEMODE = 0555
143
144
145.KEEP_STATE:
146
147all :		$(PROG) $(XPG4) $(SCRIPT) $(XPG4SCRIPT) $(FILES)
148
149install :	all $(ROOTPROG) $(ROOTETCDEFAULTFILES) $(ROOTSYMLINK) \
150		$(ROOTMANIFEST) $(ROOTMETHOD)
151
152$(PROG) :	$$(POBJS)
153		$(LINK.c) $(POBJS) -o $@ $(LDLIBS)
154		$(POST_PROCESS)
155
156$(XPG4) :	atobjs.xpg4 $(XPG4POBJS)
157		$(LINK.c) $(XPG4POBJS) -o $@ $(LDLIBS)
158		$(POST_PROCESS)
159
160atobjs.xpg4/%.o:	%.c
161	$(COMPILE.c) -o $@ $<
162
163atobjs.xpg4:
164	-@mkdir -p $@
165
166atobjs.xpg4/values-xpg4.o:	../../lib/common/common/values-xpg4.c
167	$(COMPILE.c) -o $@ ../../lib/common/common/values-xpg4.c
168
169att1.c :	att1.y
170		$(YACC.y) -d att1.y
171		$(MV) y.tab.c att1.c
172		$(MV) y.tab.h att1.h
173
174att2.c :	att2.l att2.ed att1.c
175		$(LEX) att2.l
176		ed - lex.yy.c < att2.ed
177		$(MV) lex.yy.c att2.c
178
179# Don't re-install direcories installed by Targetdirs
180#$(ROOTDIRS):
181#		$(INS.dir)
182
183$(ROOTSYMLINK) :
184		$(RM) $@; $(SYMLINK) $(SYMLNKDEST) $@
185
186check:		$(CHKMANIFEST)
187
188$(POFILE):	$(POFILES)
189	$(RM) $@; cat $(POFILES) > $@
190
191clean :
192		$(RM) $(OBJS) att1.h att1.c att2.c
193
194lint :		lint_SRCS
195
196strip :
197		$(STRIP) $(PROG) $(XPG4)
198
199include		../Makefile.targ
200