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) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
24#
25# Copyright (c) 2018, Joyent, Inc.
26
27ETCTSOLFILES =	devalloc_defaults
28
29include		../Makefile.cmd
30
31CERRWARN +=	-_gcc=-Wno-unused-value
32CERRWARN +=	$(CNOWARN_UNINIT)
33CERRWARN +=	-_gcc=-Wno-parentheses
34CERRWARN +=	-_gcc=-Wno-clobbered
35
36# not linted
37SMATCH=off
38
39ROOTSEC =	$(ROOTETC)/security
40ROOTSECDEV =	$(ROOTSEC)/dev
41ROOTSECLIB =	$(ROOTSEC)/lib
42ROOTSECAUD =	$(ROOTSEC)/audio
43ROOTDIRS =	$(ROOTSECDEV) $(ROOTSECLIB) $(ROOTSECAUD)
44
45ROOTMANIFESTDIR=	$(ROOTSVCSYSTEMDEVICE)
46SVCMETHOD =	svc-allocate	
47MANIFEST =	allocate.xml
48
49RTLCKS =	audio fd0 sr0 st0 st1
50CLEANfd =	fd_clean
51CLEANsr =	sr_clean
52CLEANst =	st_clean
53CLEANaudio =	audio_clean
54CLEANdisk =	disk_clean
55CLEAN_SCRIPTS =	$(CLEANfd) $(CLEANsr) $(CLEANst) $(CLEANaudio) $(CLEANdisk)
56WDW_SCRIPTS =	wdwmsg wdwwrapper
57WDW_LINKS =	$(CLEANaudio) $(CLEANdisk) $(CLEANst)
58SCRIPTS =	$(CLEAN_SCRIPTS) $(WDW_SCRIPTS)
59ALLSCRIPTS =	allscripts.sh
60
61PROGalloc =	allocate
62PROGmkdevalloc =	mkdevalloc
63PROGdminfo =	dminfo
64PROGaddalloc =	add_allocatable
65PROG =		$(PROGalloc) $(PROGmkdevalloc) $(PROGdminfo) \
66	$(PROGaddalloc)
67
68LINKPROGalloc =	deallocate list_devices
69LINKPROGmkdevalloc = mkdevmaps
70LINKPROGaddalloc = remove_allocatable
71
72POFILE =	allocate_all.po
73POFILES =	$(OBJS:%.o=%.po) $(ALLSCRIPTS:%.sh=%.po)
74
75DFLAGS +=	-D_REENTRANT
76CPPFLAGS +=	$(DFLAGS)
77
78ROOTLOCKS =	$(RTLCKS:%=$(ROOTSECDEV)/%)
79ROOTSCRIPTS =	$(SCRIPTS:%=$(ROOTSECLIB)/%)
80ROOTWDWLINKS =	$(WDW_LINKS:%=$(ROOTSECLIB)/%.windowing)
81
82ROOTPROG =	$(PROGallocate:%=$(ROOTUSRSBIN)/%) \
83		$(PROGmkdevalloc:%=$(ROOTUSRSBIN)/%) \
84		$(PROGdminfo:%=$(ROOTUSRSBIN)/%) \
85		$(PROGaddaloc:%=$(ROOTUSRSBIN)/%)
86ROOTLINKalloc =	$(LINKPROGalloc:%=$(ROOTUSRSBIN)/%)
87ROOTLINKmkdevalloc = $(LINKPROGmkdevalloc:%=$(ROOTUSRSBIN)/%)
88ROOTLINKaddalloc = $(LINKPROGaddalloc:%=$(ROOTUSRSBIN)/%)
89ROOTLINKS =	$(ROOTLINKalloc) $(ROOTLINKmkdevalloc) $(ROOTLINKaddalloc)
90
91PROGallocOBJS =		allocate.o allocate3.o
92PROGmkdevallocOBJS =	mkdevalloc.o
93PROGdminfoOBJS =	dminfo.o
94PROGaddallocOBJS =	add_allocatable.o
95
96OBJS =		$(PROGallocOBJS) \
97		$(PROGmkdevallocOBJS) \
98		$(PROGdminfoOBJS) \
99		$(PROGaddallocOBJS)
100
101SRCS =		$(OBJS:%.o=%.c)
102
103$(ROOTUSRSBIN)/% :=	FILEMODE = 555
104$(ROOTUSRSBIN)/allocate :=	FILEMODE = 4555
105$(ROOTSECDEV)/% :=	FILEMODE = 0400
106$(ROOTSECLIB)/% :=	FILEMODE = 0555
107
108lint :=			LDLIBS += -lbsm -lsec -lsecdb -ldevinfo -ltsol
109
110$(PROGalloc) :=		LDLIBS += -lbsm -lsec -lsecdb -ldevinfo -ltsol
111$(PROGmkdevalloc) :=	LDLIBS += -lbsm
112$(PROGdminfo) :=	LDLIBS += -lbsm
113$(PROGaddalloc) :=	LDLIBS += -lbsm -lsecdb -ltsol
114
115CLOBBERFILES +=	$(SCRIPTS)
116
117.KEEP_STATE:
118
119all :		$(PROG) $(RTLCKS) $(SCRIPTS)
120
121install :	$(PROG) $(ROOTDIRS) $(ROOTPROG) $(ROOTLOCKS) \
122		$(ROOTSCRIPTS) $(ROOTLINKS) $(ROOTWDWLINKS) \
123		$(ROOTETCTSOLFILES) $(ROOTMANIFEST) $(ROOTSVCMETHOD)
124$(RTLCKS):
125		$(TOUCH) $@
126
127$(ROOTSECLIB)/%: %.sh
128		$(INS.rename)
129
130$(PROGalloc) :	$(PROGallocOBJS)
131		$(LINK.c) $(PROGallocOBJS) -o $@ $(LDLIBS)
132		$(POST_PROCESS)
133
134$(PROGaddalloc) :	$(PROGaddallocOBJS)
135		$(LINK.c) $(PROGaddallocOBJS) -o $@ $(LDLIBS)
136		$(POST_PROCESS)
137
138$(PROGmkdevalloc) :	$(PROGmkdevallocOBJS)
139			$(LINK.c) $(PROGmkdevallocOBJS) -o $@ $(LDLIBS)
140			$(POST_PROCESS)
141
142$(PROGdminfo) :	$(PROGdminfoOBJS)
143		$(LINK.c) $(PROGdminfoOBJS) -o $@ $(LDLIBS)
144		$(POST_PROCESS)
145
146$(ROOTDIRS) :
147		$(INS.dir)
148
149$(ROOTSECDEV)/%: %
150		$(INS.file)
151
152$(ROOTSECLIB)/%: %
153		$(RM) $@
154		$(INS.file)
155
156$(ROOTLINKalloc) :	$(PROGalloc:%=$(ROOTUSRSBIN)/%)
157			$(RM) $@
158			$(LN) $(PROGalloc:%=$(ROOTUSRSBIN)/%) $@
159
160$(ROOTLINKaddalloc) :	$(PROGaddalloc:%=$(ROOTUSRSBIN)/%)
161			$(RM) $@
162			$(LN) $(PROGaddalloc:%=$(ROOTUSRSBIN)/%) $@
163
164$(ROOTLINKmkdevalloc) :	$(PROGmkdevalloc:%=$(ROOTUSRSBIN)/%)
165			$(RM) $@
166			$(LN) $(PROGmkdevalloc:%=$(ROOTUSRSBIN)/%) $@
167
168
169$(ROOTETCSECLIB)/%.windowing: %
170	$(RM) $@
171	$(SYMLINK) $< $@
172
173$(POFILE):      $(POFILES)
174		$(RM) $@
175		$(CAT) $(POFILES) > $@
176
177#
178# Concatenate all the scripts into one before we build the catalogue.
179# Done to shrink the catalogue since some messages are shared between
180# the various scripts.
181#
182$(ALLSCRIPTS):	$(SCRIPTS:%=%.sh)
183		$(CAT) $(SCRIPTS:%=%.sh) > $@
184
185clean :
186		$(RM) $(PROG) $(RTLCKS) $(OBJS) \
187		$(SCRIPTS) $(ALLSCRIPTS) $(POFILE) $(POFILES)
188
189lint :		lint_SRCS
190
191strip :
192		$(STRIP) $(PROG)
193
194include		../Makefile.targ
195