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