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 28include ../Makefile.master 29 30sparc_HDRS= 31i386_HDRS= stack_unwind.h 32 33# Headers are listed one per line so that TeamWare can auto-merge most changes 34 35KRB5HDRS= mit_copyright.h mit-sipb-copyright.h 36 37ATTRDB_HDRS= secdb.h auth_attr.h exec_attr.h prof_attr.h user_attr.h \ 38 auth_list.h 39 40HDRS= $($(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 210ISOHDRS = \ 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 231ARPAHDRS = \ 232 ftp.h \ 233 inet.h \ 234 nameser.h \ 235 telnet.h \ 236 tftp.h \ 237 nameser_compat.h 238 239AUDIOHDRS = \ 240 au.h 241 242UUIDHDRS = \ 243 uuid.h 244 245# rpcsvc headers which are just headers (not derived from a .x file) 246RPCSVC_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 260RPCSVC_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 276LVMRPCHDRS = \ 277mhdx.h mdiox.h meta_basic.h metad.h metamed.h metamhd.h metacl.h 278 279SYMHDRASSERT = $(ROOT)/usr/include/iso/assert_iso.h 280SYMHDRERRNO = $(ROOT)/usr/include/iso/errno_iso.h 281SYMHDRFLOAT = $(ROOT)/usr/include/iso/float_iso.h 282SYMHDRISO646 = $(ROOT)/usr/include/iso/iso646_iso.h 283 284RPCGENFLAGS = -C -h 285rpcsvc/rwall.h := RPCGENFLAGS += -M 286meta_basic.h := RPCGENFLAGS += -M 287metad.h := RPCGENFLAGS += -M 288metamed.h := RPCGENFLAGS += -M 289mhdx.h := RPCGENFLAGS += -M 290mdiox.h := RPCGENFLAGS += -M 291metamhd.h := RPCGENFLAGS += -M 292metacl.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 304RPCSVCPROTS = \ 305$(RPCSVC_GEN_HDRS:%.h=%.x) nis_object.x yp.x 306 307LVMSVCPROTS = \ 308$(LVMRPCHDRS:%.h=%.x) 309 310RPCSVCHDRS= $(RPCSVC_SRC_HDRS) $(RPCSVC_GEN_HDRS) 311 312PROTOHDRS= dumprestore.h routed.h ripngd.h rwhod.h timed.h 313 314ROOTHDRS= $(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 325DIRS= iso arpa audio rpcsvc protocols security uuid kerberosv5 326ROOTDIRS= $(DIRS:%=$(ROOT)/usr/include/%) 327 328SED= sed 329 330# check files really don't exist 331# 332# should do something with the rpcsvc headers 333 334iso/%.check: iso/%.h 335 $(DOT_H_CHECK) 336 337arpa/%.check: arpa/%.h 338 $(DOT_H_CHECK) 339 340audio/%.check: audio/%.h 341 $(DOT_H_CHECK) 342 343rpcsvc/%.check: rpcsvc/%.h 344 $(DOT_H_CHECK) 345 346rpcsvc/%.check: rpcsvc/%.x 347 $(DOT_X_CHECK) 348 349protocols/%.check: protocols/%.h 350 $(DOT_H_CHECK) 351 352kerberosv5/%.check: kerberosv5/%.h 353 $(DOT_H_CHECK) 354 355uuid/%.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# 366CHECKHDRS= $(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 381assert.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 416install_h: $(ROOTDIRS) .WAIT $(ROOTHDRS) $(SYMHDRASSERT) $(SYMHDRERRNO) \ 417 $(SYMHDRFLOAT) $(SYMHDRISO646) 418 419check: $(CHECKHDRS) 420 421clean 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 440rpcsvc/%.h: rpcsvc/%.x 441 $(RPCGEN) $(RPCGENFLAGS) $< -o $@ 442 443rpcsvc/nis.h: rpcsvc/nis.x 444 $(RPCGEN) $(RPCGENFLAGS) rpcsvc/nis.x |\ 445 $(SED) -e '/EDIT_START/,$$ d' > $@ 446 447meta_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 454metad.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 461mhdx.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 468mdiox.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 477metamed.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 485metamhd.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 492metacl.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 ' > $@ 498