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