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 2010 Sun Microsystems, Inc. All rights reserved.
23 # Use is subject to license terms.
24 #
25 # head/Makefile
26 #
27 # include global definitions
28 include ../Makefile.master
29
30 sparc_HDRS=
31 i386_HDRS= stack_unwind.h
32
33 # Headers are listed one per line so that TeamWare can auto-merge most changes
34
35 KRB5HDRS= mit_copyright.h mit-sipb-copyright.h
36
37 ATTRDB_HDRS= secdb.h auth_attr.h exec_attr.h prof_attr.h user_attr.h \
38 auth_list.h
39
40 HDRS= $($(MACH)_HDRS) $(ATTRDB_HDRS) \
41 aio.h \
42 alloca.h \
43 apptrace.h \
44 apptrace_impl.h \
45 ar.h \
46 archives.h \
47 assert.h \
48 atomic.h \
49 attr.h \
50 config_admin.h \
51 cpio.h \
52 crypt.h \
53 ctype.h \
54 deflt.h \
55 devid.h \
56 devmgmt.h \
57 devpoll.h \
58 dial.h \
59 dirent.h \
60 dlfcn.h \
61 door.h \
62 elf.h \
63 err.h \
64 errno.h \
65 euc.h \
66 exacct.h \
67 exacct_impl.h \
68 execinfo.h \
69 fatal.h \
70 fcntl.h \
71 float.h \
72 fmtmsg.h \
73 fnmatch.h \
74 ftw.h \
75 gelf.h \
76 getopt.h \
77 getwidth.h \
78 glob.h \
79 grp.h \
80 iconv.h \
81 ieeefp.h \
82 ifaddrs.h \
83 inttypes.h \
84 iso646.h \
85 klpd.h \
86 langinfo.h \
87 lastlog.h \
88 lber.h \
89 ldap.h \
90 libelf.h \
91 libgen.h \
92 libintl.h \
93 libw.h \
94 libzonecfg.h \
95 limits.h \
96 linenum.h \
97 link.h \
98 listen.h \
99 locale.h \
100 macros.h \
101 malloc.h \
102 mdmn_changelog.h \
103 memory.h \
104 meta.h \
105 meta_runtime.h \
106 metadyn.h \
107 mon.h \
108 monetary.h \
109 mp.h \
110 mqueue.h \
111 nan.h \
112 ndbm.h \
113 ndpd.h \
114 netconfig.h \
115 netdb.h \
116 netdir.h \
117 nl_types.h \
118 nlist.h \
119 note.h \
120 nsctl.h \
121 nsswitch.h \
122 nss_common.h \
123 nss_dbdefs.h \
124 nss_netdir.h \
125 paths.h \
126 pcsample.h \
127 pfmt.h \
128 pkgdev.h \
129 pkginfo.h \
130 pkglocs.h \
131 pkgstrct.h \
132 pkgtrans.h \
133 poll.h \
134 port.h \
135 priv.h \
136 priv_utils.h \
137 proc_service.h \
138 procfs.h \
139 prof.h \
140 project.h \
141 pthread.h \
142 pw.h \
143 pwd.h \
144 rctl.h \
145 re_comp.h \
146 regex.h \
147 regexp.h \
148 resolv.h \
149 rje.h \
150 rtld_db.h \
151 sac.h \
152 sched.h \
153 schedctl.h \
154 sdssc.h \
155 search.h \
156 semaphore.h \
157 setjmp.h \
158 sgtty.h \
159 shadow.h \
160 siginfo.h \
161 signal.h \
162 spawn.h \
163 stdarg.h \
164 stdbool.h \
165 stddef.h \
166 stdint.h \
167 stdio.h \
168 stdio_ext.h \
169 stdio_tag.h \
170 stdio_impl.h \
171 stdlib.h \
172 storclass.h \
173 string.h \
174 strings.h \
175 stropts.h \
176 synch.h \
177 sysexits.h \
178 syslog.h \
179 syms.h \
180 tar.h \
181 termio.h \
182 termios.h \
183 thread.h \
184 thread_db.h \
185 time.h \
186 tiuser.h \
187 tzfile.h \
188 ucontext.h \
189 ucred.h \
190 ulimit.h \
191 unistd.h \
192 userdefs.h \
193 ustat.h \
194 utime.h \
195 utmp.h \
196 utmpx.h \
197 valtools.h \
198 values.h \
199 varargs.h \
200 wait.h \
201 wchar.h \
202 wchar_impl.h \
203 wctype.h \
204 widec.h \
205 wordexp.h \
206 xti.h \
207 xti_inet.h \
208 zone.h
209
210 ISOHDRS = \
211 ctype_c99.h \
212 ctype_iso.h \
213 limits_iso.h \
214 locale_iso.h \
215 setjmp_iso.h \
216 signal_iso.h \
217 stdarg_c99.h \
218 stdarg_iso.h \
219 stddef_iso.h \
220 stdio_c99.h \
221 stdio_iso.h \
222 stdlib_c99.h \
223 stdlib_iso.h \
224 string_iso.h \
225 time_iso.h \
226 wchar_c99.h \
227 wchar_iso.h \
228 wctype_c99.h \
229 wctype_iso.h
230
231 ARPAHDRS = \
232 ftp.h \
233 inet.h \
234 nameser.h \
235 telnet.h \
236 tftp.h \
237 nameser_compat.h
238
239 AUDIOHDRS = \
240 au.h
241
242 UUIDHDRS = \
243 uuid.h
244
245 # rpcsvc headers which are just headers (not derived from a .x file)
246 RPCSVC_SRC_HDRS = \
247 bootparam.h \
248 daemon_utils.h \
249 dbm.h \
250 nis_db.h \
251 nislib.h \
252 svc_dg_priv.h \
253 yp_prot.h \
254 ypclnt.h \
255 yppasswd.h \
256 ypupd.h \
257 rpc_sztypes.h
258
259 # rpcsvc headers which are generated from .x files
260 RPCSVC_GEN_HDRS = \
261 bootparam_prot.h \
262 mount.h \
263 nfs_prot.h \
264 nfs4_prot.h \
265 nis.h \
266 nlm_prot.h \
267 rex.h \
268 rquota.h \
269 rstat.h \
270 rusers.h \
271 rwall.h \
272 spray.h \
273 ufs_prot.h \
274 nfs_acl.h
275
276 LVMRPCHDRS = \
277 mhdx.h mdiox.h meta_basic.h metad.h metamed.h metamhd.h metacl.h
278
279 SYMHDRASSERT = $(ROOT)/usr/include/iso/assert_iso.h
280 SYMHDRERRNO = $(ROOT)/usr/include/iso/errno_iso.h
281 SYMHDRFLOAT = $(ROOT)/usr/include/iso/float_iso.h
282 SYMHDRISO646 = $(ROOT)/usr/include/iso/iso646_iso.h
283
284 RPCGENFLAGS = -C -h
285 rpcsvc/rwall.h := RPCGENFLAGS += -M
286 meta_basic.h := RPCGENFLAGS += -M
287 metad.h := RPCGENFLAGS += -M
288 metamed.h := RPCGENFLAGS += -M
289 mhdx.h := RPCGENFLAGS += -M
290 mdiox.h := RPCGENFLAGS += -M
291 metamhd.h := RPCGENFLAGS += -M
292 metacl.h := RPCGENFLAGS += -M
293
294 # rpcsvc rpcgen source (.x files)
295 #
296 # yp.x is an attempt at codifying what was hand coded in RPCL.
297 # Unfortunately it doesn't quite work. (The handcoded stuff isn't
298 # expressable in RPCL) this is due to the fact that YP was written
299 # before rpcgen existed. Hence, yp_prot.h cannot be derived from yp.x
300 #
301 # There is no `.h' for nis_object.x because it is included by nis.x and
302 # the resulting .h is nis.h.
303
304 RPCSVCPROTS = \
305 $(RPCSVC_GEN_HDRS:%.h=%.x) nis_object.x yp.x
306
307 LVMSVCPROTS = \
308 $(LVMRPCHDRS:%.h=%.x)
309
310 RPCSVCHDRS= $(RPCSVC_SRC_HDRS) $(RPCSVC_GEN_HDRS)
311
312 PROTOHDRS= dumprestore.h routed.h ripngd.h rwhod.h timed.h
313
314 ROOTHDRS= $(HDRS:%=$(ROOT)/usr/include/%) \
315 $(KRB5HDRS:%=$(ROOT)/usr/include/kerberosv5/%) \
316 $(ISOHDRS:%=$(ROOT)/usr/include/iso/%) \
317 $(ARPAHDRS:%=$(ROOT)/usr/include/arpa/%) \
318 $(AUDIOHDRS:%=$(ROOT)/usr/include/audio/%) \
319 $(UUIDHDRS:%=$(ROOT)/usr/include/uuid/%) \
320 $(RPCSVCHDRS:%=$(ROOT)/usr/include/rpcsvc/%) \
321 $(RPCSVCPROTS:%=$(ROOT)/usr/include/rpcsvc/%) \
322 $(LVMRPCHDRS:%=$(ROOT)/usr/include/%) \
323 $(PROTOHDRS:%=$(ROOT)/usr/include/protocols/%)
324
325 DIRS= iso arpa audio rpcsvc protocols security uuid kerberosv5
326 ROOTDIRS= $(DIRS:%=$(ROOT)/usr/include/%)
327
328 SED= sed
329
330 # check files really don't exist
331 #
332 # should do something with the rpcsvc headers
333
334 iso/%.check: iso/%.h
335 $(DOT_H_CHECK)
336
337 arpa/%.check: arpa/%.h
338 $(DOT_H_CHECK)
339
340 audio/%.check: audio/%.h
341 $(DOT_H_CHECK)
342
343 rpcsvc/%.check: rpcsvc/%.h
344 $(DOT_H_CHECK)
345
346 rpcsvc/%.check: rpcsvc/%.x
347 $(DOT_X_CHECK)
348
349 protocols/%.check: protocols/%.h
350 $(DOT_H_CHECK)
351
352 kerberosv5/%.check: kerberosv5/%.h
353 $(DOT_H_CHECK)
354
355 uuid/%.check: uuid/%.h
356 $(DOT_H_CHECK)
357
358 # Note that the derived headers (rpcgen) are not checked at this time. These
359 # need work at the source level and rpcgen itself has a bug which causes a
360 # cstyle violation. Furthermore, there seems to be good reasons for the
361 # generated headers to not pass all of the hdrchk rules.
362 #
363 # Add the following to the CHECKHDRS list to activate the .x checks:
364 # $(RPCSVCPROTS:%.x=rpcsvc/%.check) \
365 #
366 CHECKHDRS= $(HDRS:%.h=%.check) \
367 $(KRB5HDRS:%.h=kerberosv5/%.check) \
368 $(ISOHDRS:%.h=iso/%.check) \
369 $(ARPAHDRS:%.h=arpa/%.check) \
370 $(AUDIOHDRS:%.h=audio/%.check) \
371 $(UUIDHDRS:%.h=uuid/%.check) \
372 $(RPCSVC_SRC_HDRS:%.h=rpcsvc/%.check) \
373 $(PROTOHDRS:%.h=protocols/%.check)
374
375 # headers which won't quite meet the standards...
376 #
377 # assert.h is required by ansi-c to *not* be idempotent (section 4.1.2).
378 # Hence the trailing guard is not the last thing in the file nor can it
379 # be without playing silly games.
380
381 assert.check := HDRCHK_TAIL = | grep -v "end guard wrong" | true
382
383 # install rules
384
385 $(ROOT)/usr/include/security/%: security/%
386 $(INS.file)
387
388 $(ROOT)/usr/include/protocols/%: protocols/%
389 $(INS.file)
390
391 $(ROOT)/usr/include/rpcsvc/%: rpcsvc/%
392 $(INS.file)
393
394 $(ROOT)/usr/include/kerberosv5/%: kerberosv5/%
395 $(INS.file)
396
397 $(ROOT)/usr/include/arpa/%: arpa/%
398 $(INS.file)
399
400 $(ROOT)/usr/include/audio/%: audio/%
401 $(INS.file)
402
403 $(ROOT)/usr/include/iso/%: iso/%
404 $(INS.file)
405
406 $(ROOT)/usr/include/uuid/%: uuid/%
407 $(INS.file)
408
409 $(ROOT)/usr/include/%: %
410 $(INS.file)
411
412 .KEEP_STATE:
413
414 .PARALLEL: $(ROOTHDRS) $(CHECKHDRS)
415
416 install_h: $(ROOTDIRS) .WAIT $(ROOTHDRS) $(SYMHDRASSERT) $(SYMHDRERRNO) \
417 $(SYMHDRFLOAT) $(SYMHDRISO646)
418
419 check: $(CHECKHDRS)
420
421 clean clobber:
422 $(RM) $(LVMRPCHDRS);
423 cd rpcsvc ; $(RM) $(RPCSVC_GEN_HDRS)
424
425 $(ROOTDIRS):
426 $(INS.dir)
427
428 $(SYMHDRASSERT):
429 -$(RM) $@; $(SYMLINK) ../assert.h $@
430
431 $(SYMHDRERRNO):
432 -$(RM) $@; $(SYMLINK) ../errno.h $@
433
434 $(SYMHDRFLOAT):
435 -$(RM) $@; $(SYMLINK) ../float.h $@
436
437 $(SYMHDRISO646):
438 -$(RM) $@; $(SYMLINK) ../iso646.h $@
439
440 rpcsvc/%.h: rpcsvc/%.x
441 $(RPCGEN) $(RPCGENFLAGS) $< -o $@
442
443 rpcsvc/nis.h: rpcsvc/nis.x
444 $(RPCGEN) $(RPCGENFLAGS) rpcsvc/nis.x |\
445 $(SED) -e '/EDIT_START/,$$ d' > $@
446
447 meta_basic.h: ../uts/common/sys/lvm/meta_basic.x
448 $(RPCGEN) $(RPCGENFLAGS) ../uts/common/sys/lvm/meta_basic.x | \
449 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
450 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
451 { print $0 } \
452 ' > $@
453
454 metad.h: metad.x
455 $(RPCGEN) $(RPCGENFLAGS) metad.x | \
456 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
457 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
458 { print $0 } \
459 ' > $@
460
461 mhdx.h: ../uts/common/sys/lvm/mhdx.x
462 $(RPCGEN) $(RPCGENFLAGS) ../uts/common/sys/lvm/mhdx.x | \
463 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
464 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
465 { print $0 } \
466 ' > $@
467
468 mdiox.h: ../uts/common/sys/lvm/mdiox.x
469 $(RPCGEN) $(RPCGENFLAGS) ../uts/common/sys/lvm/mdiox.x | \
470 nawk '{sub(/sys\/lvm\/md_mhdx/, "mhdx"); print $$0}' | \
471 nawk '{sub(/sys\/lvm\/md_basic/, "meta_basic"); print $$0}' | \
472 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
473 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
474 { print $0 } \
475 ' > $@
476
477 metamed.h: ../uts/common/sys/lvm/metamed.x
478 $(RPCGEN) $(RPCGENFLAGS) ../uts/common/sys/lvm/metamed.x | \
479 nawk '{sub(/sys\/lvm\/md_basic/, "meta_basic"); print $$0}' | \
480 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
481 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
482 { print $0 } \
483 ' > $@
484
485 metamhd.h: metamhd.x
486 $(RPCGEN) $(RPCGENFLAGS) metamhd.x | \
487 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
488 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
489 { print $0 } \
490 ' > $@
491
492 metacl.h: metacl.x
493 $(RPCGEN) $(RPCGENFLAGS) metacl.x | \
494 awk '/<synch.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
495 /<thread.h>/ { print "#ifdef _REENTRANT"; print $$0; print "#endif\t/* _REENTRANT */"; next } \
496 { print $0 } \
497 ' > $@