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 # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 22 # Use is subject to license terms. 23 # 24 #ident "@(#)Makefile.master 1.45 09/09/03 SMI" 25 # 26 # Makefile.master, global definitions for system source 27 # 28 ROOT= /proto 29 30 # RELEASE_BUILD should be cleared for final release builds. This is completely 31 # independent of CH. NOT_RELEASE_BUILD is exactly what the name implies. 32 # 33 # INTERNAL_RELEASE_BUILD is a subset of RELEASE_BUILD. It mostly controls 34 # identification strings. Enabling RELEASE_BUILD automatically enables 35 # INTERNAL_RELEASE_BUILD. 36 # 37 # STRIP_COMMENTS toggles comment section striping. Generally the same setting 38 # as INTERNAL_RELEASE_BUILD. 39 # 40 # STRIPFLAG is similar. It is set to a unique value depending upon the 41 # value of CH. It is set here for use in lower level Makefiles to allow 42 # a single point change to effect the entire build. 43 # 44 POUND_SIGN:sh= echo \\043 45 46 NOT_RELEASE_BUILD= 47 INTERNAL_RELEASE_BUILD:sh= echo \\043 48 RELEASE_BUILD:sh= echo \\043 49 $(RELEASE_BUILD)NOT_RELEASE_BUILD:sh= echo \\043 50 $(RELEASE_BUILD)INTERNAL_RELEASE_BUILD= 51 52 # SPARC_BLD is '#' for an Intel build. 53 # INTEL_BLD is '#' for a Sparc build. 54 SPARC_BLD_1= $(MACH:i386=$(POUND_SIGN)) 55 SPARC_BLD= $(SPARC_BLD_1:sparc=) 56 INTEL_BLD_1= $(MACH:sparc=$(POUND_SIGN)) 57 INTEL_BLD= $(INTEL_BLD_1:i386=) 58 59 MACH_TYPE_i386 = pc 60 MACH_TYPE_sparc = sun 61 MACH_TYPE = $(MACH_TYPE_$(MACH)) 62 63 STRIP_COMMENTS= $(INTERNAL_RELEASE_BUILD) 64 65 STRIPFLAG= -s 66 67 # BUILD_TOOLS is the root of all tools including compilers. 68 # ONBLD_TOOLS is the root of all the tools that are part of SUNWonbld. 69 70 BUILD_TOOLS= /ws/onnv-tools 71 ONBLD_TOOLS= $(BUILD_TOOLS)/onbld 72 73 # at least one thing still can't be built with 1.6, 74 # so make 1.6 the default but overridable. However, 75 # if you're having trouble compiling with java 1.6 and 76 # have found java 1.5 here and want to use it, think 77 # again - that's the last resort, first look at java 78 # options like -source. 79 JAVA5_ROOT= /usr/jdk/instances/jdk1.5.0 80 JAVA6_ROOT= /usr/jdk/instances/jdk1.6.0 81 JAVA_ROOT= $(JAVA6_ROOT) 82 83 MAKEFILE= -f Makefile.sfw 84 85 SFW_STAMP_UNPACKED= .unpacked 86 SFW_STAMP_PATCHED= .patched 87 SFW_STAMP_PATCHES= .patches 88 89 # this can help catch problems if sh is ksh93 90 KSH93=/usr/bin/ksh93 91 BASH=/usr/bin/bash 92 SHELL=$(KSH93) 93 CONFIG_SHELL=$(BASH) 94 GPATCH= /usr/bin/gpatch 95 GPATCH_FLAGS= -p0 96 METAINFO_FILE= METADATA 97 METAINFO= $(PERL) $(SRC)/tools/metainfo.pl --file $(METAINFO_FILE) 98 METACHECK= $(METAINFO) --validate 99 COMPONENT_NAME= $(METAINFO) --key NAME 100 COMPONENT_VERSION= $(METAINFO) --key VERSION 101 COMPONENT_PACKAGES= $(METAINFO) --key PACKAGE 102 COMPONENT_ARCHIVE= $(METAINFO) --archive-name SOURCE_DOWNLOAD 103 INSTALL_PROTO= $(SRC)/tools/install-proto 104 STRIPBINS= $(SRC)/tools/stripbins 105 INCREFIXUP= $(SRC)/tools/increfixup 106 UNPACKARCHIVE= $(SRC)/tools/unpack-archive 107 INSTALL=$(INSTALL_PROTO) 108 109 SFW_CHECK_DEPS= $(PERL) $(SRC)/tools/check-deps.pl \ 110 -e $(SRC)/tools/exception_list.check-deps \ 111 -d $(PKGARCHIVE) -p $(SFW_PKGDB) 112 SFW_RUN_CHECK_DEPS= $(POUND_SIGN) 113 RPCGEN= /usr/bin/rpcgen 114 AWK= /usr/bin/awk 115 ECHO= echo 116 INS= install 117 TRUE= true 118 SYMLINK= /usr/bin/ln -s 119 LN= /usr/bin/ln 120 SH= /usr/bin/sh 121 CHMOD= /usr/bin/chmod 122 CHOWN= $(TRUE) 123 CHGRP= $(TRUE) 124 MV= /usr/bin/mv -f 125 RMDIR= /usr/bin/rmdir 126 MKDIR= /usr/bin/mkdir 127 TOUCH= /usr/bin/touch 128 RM= /usr/bin/rm -f 129 GREP= /usr/bin/grep 130 SED= /usr/bin/sed 131 CP= /usr/bin/cp 132 LORDER= /usr/ccs/bin/lorder 133 MCS= /usr/ccs/bin/mcs 134 CAT= /usr/bin/cat 135 M4= /usr/ccs/bin/m4 136 STRIP= /usr/ccs/bin/strip 137 TSORT= /usr/ccs/bin/tsort 138 JAVAC= $(JAVA_ROOT)/bin/javac 139 JAVAH= $(JAVA_ROOT)/bin/javah 140 JAVADOC= $(JAVA_ROOT)/bin/javadoc 141 RMIC= $(JAVA_ROOT)/bin/rmic 142 JAR= $(JAVA_ROOT)/bin/jar 143 GMAKE= /usr/sfw/bin/gmake 144 CCSMAKE= /usr/ccs/bin/make 145 XREF= $(ONBLD_TOOLS)/bin/xref 146 PERL= /usr/perl5/bin/perl 147 FIND= /usr/bin/find 148 XARGS= /usr/bin/xargs 149 TAR= /usr/bin/tar 150 GTAR= /usr/sfw/bin/gtar 151 PYTHON= /usr/bin/python 152 PYTHON_64= /usr/bin/$(MACH64)/python 153 PYTHON24= /usr/bin/python2.4 154 PYTHON24_64= /usr/bin/$(MACH64)/python2.4 155 PYTHON26= /usr/bin/python2.6 156 PYTHON26_64= /usr/bin/$(MACH64)/python2.6 157 ELFEDIT= /usr/bin/elfedit 158 GINSTALL= /usr/bin/ginstall 159 160 161 162 FILEMODE= 644 163 DIRMODE= 755 164 OWNER= root 165 GROUP= bin 166 167 # Paths, relative to proto root. 168 # 169 # Suitable for passing to things like configure scripts which 170 # use the path for compiled in default file location information 171 CFGPREFIX= /usr 172 CFGBIN= $(CFGPREFIX)/bin 173 CFGLIB= $(CFGPREFIX)/lib 174 CFGSBIN= /sbin 175 CFGINC= $(CFGPREFIX)/include 176 CFGUSRSBIN= $(CFGPREFIX)/sbin 177 CFGLOCALE= $(CFGPREFIX)/share/locale 178 CFGINFO= $(CFGPREFIX)/share/info 179 CFGETC= /etc 180 CFGBIN32= $(CFGBIN)/$(MACH32) 181 CFGBIN64= $(CFGBIN)/$(MACH64) 182 CFGLIB64= $(CFGLIB)/$(MACH64) 183 CFGUSRSBIN32= $(CFGUSRSBIN)/$(MACH32) 184 CFGUSRSBIN64= $(CFGUSRSBIN)/$(MACH64) 185 CFGMAN= $(CFGPREFIX)/share/man 186 CFGMAN1= $(CFGMAN)/man1 187 CFGMAN3= $(CFGMAN)/man3 188 CFGMAN5= $(CFGMAN)/man5 189 CFGMAN6= $(CFGMAN)/man6 190 CFGDOC= $(CFGPREFIX)/share/doc 191 CFGUSRDEMO= $(CFGPREFIX)/demo 192 193 COMPONENT_TOP:sh = pwd 194 MANSCRIPT = $(COMPONENT_TOP)/sunman-stability 195 196 # Common configure options with common values 197 CONFIGURE_OPTIONS = --prefix=$(CFGPREFIX) 198 CONFIGURE_OPTIONS += --mandir=$(CFGMAN) 199 200 ROOTBIN= $(ROOT)$(CFGBIN) 201 ROOTLIB= $(ROOT)$(CFGLIB) 202 ROOTSBIN= $(ROOT)$(CFGSBIN) 203 ROOTUSRSBIN= $(ROOT)$(CFGUSRSBIN) 204 ROOTETC= $(ROOT)$(CFGETC) 205 ROOTBIN32= $(ROOT)$(CFGBIN32) 206 ROOTBIN64= $(ROOT)$(CFGBIN64) 207 ROOTLIB64= $(ROOT)$(CFGLIB64) 208 ROOTUSRSBIN32= $(ROOT)$(CFGUSRSBIN32) 209 ROOTUSRSBIN64= $(ROOT)$(CFGUSRSBIN64) 210 ROOTMAN1= $(ROOT)$(CFGMAN1) 211 ROOTMAN3= $(ROOT)$(CFGMAN3) 212 ROOTMAN5= $(ROOT)$(CFGMAN5) 213 ROOTMAN6= $(ROOT)$(CFGMAN6) 214 ROOTDOC= $(ROOT)$(CFGDOC) 215 ROOTUSRDEMO= $(ROOT)$(CFGUSRDEMO) 216 ROOTINCLUDE= $(ROOT)$(CFGINC) 217 218 # 219 # Begin /usr/sfw freeware rules for freeware that has "External" 220 # taxonomy stability level. 221 # 222 CFGSFW= /usr/sfw 223 CFGSFWBIN= /usr/sfw/bin 224 CFGSFWSBIN= /usr/sfw/sbin 225 CFGSFWSHARE= /usr/sfw/share 226 CFGSFWINFO= /usr/sfw/share/info 227 CFGSFWINCLUDE= /usr/sfw/include 228 CFGSFWLIB= /usr/sfw/lib 229 CFGLIBEXEC= /usr/sfw/libexec 230 CFGSFWMAN= /usr/sfw/share/man 231 CFGSFWMANN= /usr/sfw/share/mann 232 CFGSFWMAN1= /usr/sfw/share/man/man1 233 CFGSFWMAN1M= /usr/sfw/share/man/man1m 234 CFGSFWMAN3= /usr/sfw/share/man/man3 235 CFGSFWMAN4= /usr/sfw/share/man/man4 236 CFGSFWMAN5= /usr/sfw/share/man/man5 237 CFGSFWMAN7= /usr/sfw/share/man/man7 238 239 ROOTSFW= $(ROOT)$(CFGSFW) 240 ROOTSFWBIN= $(ROOT)$(CFGSFWBIN) 241 ROOTSFWSBIN= $(ROOT)$(CFGSFWSBIN) 242 ROOTSFWSHARE= $(ROOT)$(CFGSFWSHARE) 243 ROOTSFWINFO= $(ROOT)$(CFGSFWINFO) 244 ROOTSFWINCLUDE= $(ROOT)$(CFGSFWINCLUDE) 245 ROOTSFWLIB= $(ROOT)$(CFGSFWLIB) 246 ROOTLIBEXEC= $(ROOT)$(CFGLIBEXEC) 247 ROOTSFWMAN= $(ROOT)$(CFGSFWMAN) 248 ROOTSFWMANN= $(ROOT)$(CFGSFWMANN) 249 ROOTSFWMAN1= $(ROOT)$(CFGSFWMAN1) 250 ROOTSFWMAN1M= $(ROOT)$(CFGSFWMAN1M) 251 ROOTSFWMAN3= $(ROOT)$(CFGSFWMAN3) 252 ROOTSFWMAN4= $(ROOT)$(CFGSFWMAN4) 253 ROOTSFWMAN5= $(ROOT)$(CFGSFWMAN5) 254 ROOTSFWMAN7= $(ROOT)$(CFGSFWMAN7) 255 256 # 257 # End /usr/sfw freeware rules 258 # 259 260 # 261 # Begin /usr/gnu freeware rules. 262 # 263 CFGGNU= /usr/gnu 264 CFGGNUBIN= /usr/gnu/bin 265 CFGGNUSHARE= /usr/gnu/share 266 CFGGNUMAN= /usr/gnu/share/man 267 CFGGNUMAN1= /usr/gnu/share/man/man1 268 269 ROOTGNU= $(ROOT)$(CFGGNU) 270 ROOTGNUBIN= $(ROOT)$(CFGGNUBIN) 271 ROOTGNUSHARE= $(ROOT)$(CFGGNUSHARE) 272 ROOTGNUMAN= $(ROOT)$(CFGGNUMAN) 273 ROOTGNUMAN1= $(ROOT)$(CFGGNUMAN1) 274 275 # 276 # End /usr/gnu freeware rules 277 # 278 279 # Declare that nothing should be built in parallel. 280 # Individual Makefiles can use the .PARALLEL target to declare otherwise. 281 .NO_PARALLEL: 282 283 ROOTPROG= $(PROG:%=$(ROOTBIN)/%) 284 ROOTSHFILES= $(SHFILES:%=$(ROOTBIN)/%) 285 ROOTLIBPROG= $(PROG:%=$(ROOTLIB)/%) 286 ROOTLIBSHFILES= $(SHFILES:%=$(ROOTLIB)/%) 287 ROOTSBINPROG= $(PROG:%=$(ROOTSBIN)/%) 288 ROOTUSRSBINPROG=$(PROG:%=$(ROOTUSRSBIN)/%) 289 ROOTETCPROG= $(PROG:%=$(ROOTETC)/%) 290 ROOTPROG64= $(PROG:%=$(ROOTBIN64)/%) 291 ROOTPROG32= $(PROG:%=$(ROOTBIN32)/%) 292 ROOTUSRSBINPROG32= $(PROG:%=$(ROOTUSRSBIN32)/%) 293 ROOTUSRSBINPROG64= $(PROG:%=$(ROOTUSRSBIN64)/%) 294 295 ROOTMAN1FILES=$(MAN1FILES:%=$(ROOTMAN1)/%) 296 $(ROOTMAN1FILES) := FILEMODE = 444 297 $(ROOTMAN1FILES) := OWNER = root 298 $(ROOTMAN1FILES) := GROUP = bin 299 300 ROOTMAN3FILES=$(MAN3FILES:%=$(ROOTMAN3)/%) 301 $(ROOTMAN3FILES) := FILEMODE = 444 302 $(ROOTMAN3FILES) := OWNER = root 303 $(ROOTMAN3FILES) := GROUP = bin 304 305 ROOTMAN5FILES=$(MAN5FILES:%=$(ROOTMAN5)/%) 306 $(ROOTMAN5FILES) := FILEMODE = 444 307 $(ROOTMAN5FILES) := OWNER = root 308 $(ROOTMAN5FILES) := GROUP = bin 309 310 ROOTMAN6FILES=$(MAN6FILES:%=$(ROOTMAN6)/%) 311 $(ROOTMAN6FILES) := FILEMODE = 444 312 $(ROOTMAN6FILES) := OWNER = root 313 $(ROOTMAN6FILES) := GROUP = bin 314 315 # 316 # Begin /usr/sfw freeware rules for freeware that has "External" 317 # taxonomy stability level. 318 # 319 ROOTSFWINFOFILES=$(INFOFILES:%=$(ROOTSFWINFO)/%) 320 $(ROOTSFWINFOFILES) := FILEMODE = 444 321 $(ROOTSFWINFOFILES) := OWNER = root 322 $(ROOTSFWINFOFILES) := GROUP = bin 323 324 ROOTSFWMANNFILES=$(MANNFILES:%=$(ROOTSFWMANN)/%) 325 $(ROOTSFWMANNFILES) := FILEMODE = 444 326 $(ROOTSFWMANNFILES) := OWNER = root 327 $(ROOTSFWMANNFILES) := GROUP = bin 328 329 ROOTSFWMAN1FILES=$(MAN1FILES:%=$(ROOTSFWMAN1)/%) 330 $(ROOTSFWMAN1FILES) := FILEMODE = 444 331 $(ROOTSFWMAN1FILES) := OWNER = root 332 $(ROOTSFWMAN1FILES) := GROUP = bin 333 334 ROOTSFWMAN1MFILES=$(MAN1MFILES:%=$(ROOTSFWMAN1M)/%) 335 $(ROOTSFWMAN1MFILES) := FILEMODE = 444 336 $(ROOTSFWMAN1MFILES) := OWNER = root 337 $(ROOTSFWMAN1MFILES) := GROUP = bin 338 339 ROOTSFWMAN3FILES=$(MAN3FILES:%=$(ROOTSFWMAN3)/%) 340 $(ROOTSFWMAN3FILES) := FILEMODE = 444 341 $(ROOTSFWMAN3FILES) := OWNER = root 342 $(ROOTSFWMAN3FILES) := GROUP = bin 343 344 ROOTSFWMAN4FILES=$(MAN4FILES:%=$(ROOTSFWMAN4)/%) 345 $(ROOTSFWMAN4FILES) := FILEMODE = 444 346 $(ROOTSFWMAN4FILES) := OWNER = root 347 $(ROOTSFWMAN4FILES) := GROUP = bin 348 349 ROOTSFWMAN5FILES=$(MAN5FILES:%=$(ROOTSFWMAN5)/%) 350 $(ROOTSFWMAN5FILES) := FILEMODE = 444 351 $(ROOTSFWMAN5FILES) := OWNER = root 352 $(ROOTSFWMAN5FILES) := GROUP = bin 353 354 ROOTSFWMAN7FILES=$(MAN7FILES:%=$(ROOTSFWMAN7)/%) 355 $(ROOTSFWMAN7FILES) := FILEMODE = 444 356 $(ROOTSFWMAN7FILES) := OWNER = root 357 $(ROOTSFWMAN7FILES) := GROUP = bin 358 359 ROOTSFWBINPROG= $(PROG:%=$(ROOTSFWBIN)/%) 360 $(ROOTSFWBINPROG) := FILEMODE= 555 361 $(ROOTSFWBINPROG) := OWNER= root 362 $(ROOTSFWBINPROG) := GROUP= bin 363 364 ROOTSFWSBINPROG= $(PROG:%=$(ROOTSFWSBIN)/%) 365 $(ROOTSFWSBINPROG) := FILEMODE= 555 366 $(ROOTSFWSBINPROG) := OWNER= root 367 $(ROOTSFWSBINPROG) := GROUP= bin 368 369 # 370 # End /usr/sfw freeware rules 371 # 372 373 374 INS.file= $(RM) $@; $(INS) -s -m $(FILEMODE) -f $(@D) $< 375 INS.dir= $(INS) -s -d -m $(DIRMODE) $@ 376 # installs and renames at once 377 # 378 INS.rename= $(INS.file); $(MV) $(@D)/$(<F) $@ 379 380 # MACH must be set in the shell environment per uname -p on the build host 381 # More specific architecture variables should be set in lower makefiles. 382 # 383 # MACH64 is derived from MACH 384 # 385 MACH64_1= $(MACH:sparc=sparcv9) 386 MACH64= $(MACH64_1:i386=amd64) 387 388 MACH32_1= $(MACH:sparc=sparcv7) 389 MACH32= $(MACH32_1:i386=i86) 390 391 # 392 # C compiler mode. Future compilers may change the default on us, 393 # so force transition mode globally. Lower level makefiles can 394 # override this by setting CCMODE. 395 # 396 CCMODE= -Xa 397 CCMODE64= -Xa 398 399 # 400 # C compiler verbose mode. This is so we can enable it globally, 401 # but turn it off in the lower level makefiles of things we cannot 402 # (or aren't going to) fix. 403 # 404 CCVERBOSE= 405 406 # 407 # compiler 32/64 bit flag, in case it changes again (and needed 408 # since lint doesn't really want the extra bits in XARCH). 409 CCBITS32= -m32 410 CCBITS64= -m64 411 412 # 413 # 414 # compiler '-xarch' flag. This is here to centralize it and make it 415 # overridable for testing. 416 sparc_XARCH= $(CCBITS32) -xarch=sparc 417 sparcv9_XARCH= $(CCBITS64) -xcode=abs64 418 i386_XARCH= $(CCBITS32) -xchip=pentium 419 amd64_XARCH= $(CCBITS64) -xarch=generic -Ui386 -U__i386 420 421 # 422 # disable the incremental linker 423 ILDOFF= -xildoff 424 425 # C99 mode 426 C99_ENABLE= -xc99=all 427 C99_DISABLE= -xc99=none 428 C99MODE= $(C99_ENABLE) 429 C99LMODE= $(C99MODE:-xc99%=-Xc99%) 430 431 # XPG6 mode. This option enables XPG6 conformance, plus extensions. 432 # Amongst other things, this option will cause system calls like 433 # popen (3C) and system (3C) to invoke the standards-conforming 434 # shell, /usr/xpg4/bin/sh, instead of /usr/bin/sh. 435 XPG6MODE= $(C99MODE) -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1 436 437 # 438 # The Sun Studio 11 compiler has changed the behaviour of integer 439 # wrap arounds and so a flag is needed to use the legacy behaviour 440 # (without this flag panics/hangs could be exposed within the source). 441 # 442 sparc_IROPTFLAG = -W2,-xwrap_int 443 sparcv9_IROPTFLAG = -W2,-xwrap_int 444 i386_IROPTFLAG = 445 amd64_IROPTFLAG = 446 447 IROPTFLAG = $($(MACH)_IROPTFLAG) 448 IROPTFLAG64 = $($(MACH64)_IROPTFLAG) 449 450 # In most places, assignments to these macros should be appended with += 451 # (CPPFLAGS.master allows values to be prepended to CPPFLAGS). 452 sparc_CFLAGS= $(sparc_XARCH) 453 sparcv9_CFLAGS= $(sparcv9_XARCH) -dalign $(CCVERBOSE) 454 i386_CFLAGS= $(i386_XARCH) 455 amd64_CFLAGS= $(amd64_XARCH) 456 457 # 458 sparc_COPTFLAG= -xO3 459 sparcv9_COPTFLAG= -xO3 460 i386_COPTFLAG= -xO3 461 amd64_COPTFLAG= -xO3 462 COPTFLAG= $($(MACH)_COPTFLAG) 463 COPTFLAG64= $($(MACH64)_COPTFLAG) 464 465 # 466 # tradeoff time for space (smaller is better) 467 # 468 sparc_SPACEFLAG = -xspace -W0,-Lt 469 sparcv9_SPACEFLAG = -xspace -W0,-Lt 470 i386_SPACEFLAG = -xspace 471 amd64_SPACEFLAG = 472 SPACEFLAG = $($(MACH)_SPACEFLAG) 473 SPACEFLAG64 = $($(MACH64)_SPACEFLAG) 474 475 sparc_XREGSFLAG = -xregs=no%appl 476 sparcv9_XREGSFLAG = -xregs=no%appl 477 i386_XREGSFLAG = 478 amd64_XREGSFLAG = 479 XREGSFLAG = $($(MACH)_XREGSFLAG) 480 XREGSFLAG64 = $($(MACH64)_XREGSFLAG) 481 482 CFLAGS= $(COPTFLAG) $($(MACH)_CFLAGS) $(SPACEFLAG) $(CCMODE) \ 483 $(ILDOFF) $(C99MODE) $(IROPTFLAG) 484 485 CFLAGS64= $(COPTFLAG64) $($(MACH64)_CFLAGS) $(SPACEFLAG64) $(CCMODE64) \ 486 $(ILDOFF) $(C99MODE) $(IROPTFLAG64) 487 488 DTEXTDOM=-DTEXT_DOMAIN=\"$(TEXT_DOMAIN)\" # For messaging. 489 CPPFLAGS.master=$(DTEXTDOM) \ 490 -I$(ROOTINCLUDE) \ 491 -I$(ROOTSFWINCLUDE) \ 492 $(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) $(ENVCPPFLAGS4) 493 CPPFLAGS= $(CPPFLAGS.master) 494 AS_CPPFLAGS= $(CPPFLAGS.master) 495 JAVAFLAGS= -deprecation 496 497 # 498 # For source message catalogue 499 # 500 .SUFFIXES: $(SUFFIXES) .po 501 MSGROOT= $(ROOT)/catalog 502 MSGDOMAIN= $(MSGROOT)/$(TEXT_DOMAIN) 503 COMPILE.cpp= $(CC) -E -C $(CFLAGS) $(CPPFLAGS) 504 XGETTEXT= xgettext 505 XGETFLAGS= -c TRANSLATION_NOTE 506 BUILD.po= $(XGETTEXT) $(XGETFLAGS) $<.i ;\ 507 $(RM) $@ ;\ 508 sed "/^domain/d" < messages.po > $@ ;\ 509 $(RM) messages.po $<.i 510 # 511 # This is overwritten by local Makefile when PROG is a list. 512 # 513 POFILE= $(PROG).po 514 515 COMPAT_VERSION= 4 516 517 sparc_CCFLAGS= -compat=$(COMPAT_VERSION) \ 518 -Qoption ccfe -messages=no%anachronism 519 sparcv9_CCFLAGS= $(sparcv9_XARCH) -dalign -compat=5 \ 520 -Qoption ccfe -messages=no%anachronism \ 521 -Qoption ccfe -features=no%conststrings 522 i386_CCFLAGS= -compat=$(COMPAT_VERSION) \ 523 -Qoption ccfe -messages=no%anachronism \ 524 -Qoption ccfe -features=no%conststrings 525 amd64_CCFLAGS= $(amd64_XARCH) -compat=5 \ 526 -Qoption ccfe -messages=no%anachronism \ 527 -Qoption ccfe -features=no%conststrings 528 529 sparc_CCOPTFLAG= -xO3 530 sparcv9_CCOPTFLAG= -xO3 531 i386_CCOPTFLAG= -xO3 532 amd64_CCOPTFLAG= -xO3 533 534 CCOPTFLAG= $($(MACH)_CCOPTFLAG) 535 CCOPTFLAG64= $($(MACH64)_CCOPTFLAG) 536 CCFLAGS= $(CCOPTFLAG) $($(MACH)_CCFLAGS) 537 CCFLAGS64= $(CCOPTFLAG64) $($(MACH64)_CCFLAGS) 538 # 539 # 540 LDLIBS.cmd = $(ENVLDLIBS1) $(ENVLDLIBS2) $(ENVLDLIBS3) 541 LDFLAGS.cmd = -L$(ROOTSFWLIB) -R/usr/sfw/lib 542 LDFLAGS.cmd += $(STRIPFLAG) $(ENVLDFLAGS1) $(ENVLDFLAGS2) $(ENVLDFLAGS3) 543 LDFLAGS.lib = -L$(ROOTSFWLIB) -R/usr/sfw/lib 544 LDLIBS.lib = $(ENVLDLIBS1) $(ENVLDLIBS2) $(ENVLDLIBS3) 545 # 546 # Define compilation macros. 547 # 548 COMPILE.c= $(CC) $(CFLAGS) $(CPPFLAGS) -c 549 COMPILE64.c= $(CC64) $(CFLAGS64) $(CPPFLAGS) -c 550 COMPILE.cc= $(CCC) $(CCFLAGS) $(CPPFLAGS) -c 551 COMPILE64.cc= $(CCC64) $(CCFLAGS64) $(CPPFLAGS) -c 552 COMPILE.s= $(AS) $(ASFLAGS) $(AS_CPPFLAGS) 553 554 CLASSPATH= .:$(WEBSTART_HOME)/classes 555 COMPILE.java= $(JAVAC) $(JAVAFLAGS) -classpath $(CLASSPATH) 556 557 # 558 # Link time macros 559 # 560 CCNEEDED = -lC -lc 561 COMPILE64.s= $(AS) $(ASFLAGS) $($(MACH64)_XARCH) $(AS_CPPFLAGS) 562 LINK.c= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) 563 LINK64.c= $(CC64) $(CFLAGS64) $(CPPFLAGS) $(LDFLAGS) 564 LINK.cc= $(CCC) $(CCFLAGS) $(CPPFLAGS) -norunpath -nolib $(LDFLAGS) $(CCNEEDED) 565 LINK64.cc= $(CCC64) $(CCFLAGS64) $(CPPFLAGS) -norunpath -nolib $(LDFLAGS) $(CCNEEDED) 566 LINT.c= $(LINT) $(LINTFLAGS) $(CPPFLAGS) 567 LINT64.c= $(LINT) $(LINTFLAGS64) $(CPPFLAGS) 568 569 # For some future builds, NATIVE_MACH and MACH might be different. 570 # Therefore, NATIVE_MACH needs to be redefined in the 571 # environment as `uname -p` to override this macro. 572 # 573 # For now at least, we cross-compile amd64 on i386 machines. 574 NATIVE_MACH= $(MACH:amd64=i386) 575 576 # Define native compilation macros 577 # 578 579 # Base directory where compilers are loaded. 580 # Defined here so it can be overridden by developer. 581 # 582 SPRO_ROOT= $(BUILD_TOOLS)/SUNWspro 583 SPRO_VROOT= $(SPRO_ROOT)/SS12 584 585 # All sub-Makefiles should pass a specific path when building 586 # (such as with configure/make/perl) to ensure that the right 587 # compiler above is found rather than one in the build path 588 # (which might be older/newer depending on what the build machine 589 # has in /opt/SUNWspro or /opt/teamware). This is the default 590 # which can be overridden. 591 # 592 SFW_PATH=$(SPRO_VROOT)/bin:$(PATH) 593 594 # Specify platform compiler versions for languages 595 # that we use (currently only c and c++). 596 # 597 sparc_CC= $(SPRO_VROOT)/bin/cc 598 sparc_CCC= $(SPRO_VROOT)/bin/CC 599 sparc_AS= /usr/ccs/bin/as 600 sparc_LD= /usr/ccs/bin/ld 601 602 sparcv9_CC= $(SPRO_VROOT)/bin/cc 603 sparcv9_CCC= $(SPRO_VROOT)/bin/CC 604 sparcv9_AS= /usr/ccs/bin/as 605 sparcv9_LD= /usr/ccs/bin/ld 606 607 i386_CC= $(SPRO_VROOT)/bin/cc 608 i386_CCC= $(SPRO_VROOT)/bin/CC 609 i386_AS= /usr/ccs/bin/as 610 i386_LD= /usr/ccs/bin/ld 611 612 amd64_CC= $(SPRO_VROOT)/bin/cc 613 amd64_CCC= $(SPRO_VROOT)/bin/CC 614 amd64_AS= $(SPRO_VROOT)/bin/as 615 amd64_LD= /usr/ccs/bin/ld 616 617 NATIVECC= $($(NATIVE_MACH)_CC) 618 NATIVECCC= $($(NATIVE_MACH)_CCC) 619 NATIVEAS= $($(NATIVE_MACH)_AS) 620 NATIVELD= $($(NATIVE_MACH)_LD) 621 622 CC= $(NATIVECC) 623 CCC= $(NATIVECCC) 624 AS= $(NATIVEAS) 625 LD= $(NATIVELD) 626 627 GCC= /usr/sfw/bin/gcc 628 GXX= /usr/sfw/bin/g++ 629 630 CC64= $($(MACH64)_CC) 631 CCC64= $($(MACH64)_CCC) 632 AS64= $($(MACH64)_AS) 633 LD64= $($(MACH64)_LD) 634 635 # 636 # Use the same lint as the cc compiler 637 # 638 sparc_LINT= $(SPRO_VROOT)/bin/lint 639 i386_LINT= $(SPRO_VROOT)/bin/lint 640 LINT= $($(MACH)_LINT) 641 642 # Rules (normally from make.rules) and macros which are used for post 643 # processing files. Normally, these do stripping of the comment section 644 # automatically. 645 # RELEASE_CM: Should be editted to reflect the release. 646 # POST_PROCESS_O: Post-processing for `.o' files. 647 # POST_PROCESS_A: Post-processing for `.a' files (currently null). 648 # POST_PROCESS_SO: Post-processing for `.so' files. 649 # POST_PROCESS: Post-processing for executable files (no suffix). 650 # Note that these macros are not completely generalized as they are to be 651 # used with the file name to be processed following. 652 # 653 # It is left as an exercise to Release Engineering to embellish the generation 654 # of the release comment string. 655 # 656 # If this is a standard development build: 657 # compress the comment section (mcs -c) 658 # add the standard comment (mcs -a $(RELEASE_CM)) 659 # add the development specific comment (mcs -a $(DEV_CM)) 660 # 661 # If this is an installation build: 662 # delete the comment section (mcs -d) 663 # add the standard comment (mcs -a $(RELEASE_CM)) 664 # add the development specific comment (mcs -a $(DEV_CM)) 665 # 666 # If this is an release build: 667 # delete the comment section (mcs -d) 668 # add the standard comment (mcs -a $(RELEASE_CM)) 669 # 670 # Sigh,... The declaration POUND_SIGN is always '#'. This is just needed 671 # to get around the make **bug** that '#' is always a comment delimiter, 672 # even when escaped or quoted. 673 # 674 # The following list of macros are used in the definition of RELEASE_CM 675 # which is used to label all binaries in the build: 676 # 677 # SFWRELEASE Specific release of the build, eg: 5.2 678 # SFWVERSION Version of the build (alpha, beta, Generic) 679 # PATCHID If this is a patch this value should contain 680 # the patchid value (eg: "Generic 100832-01"), otherwise 681 # it will be set to $(SFWVERSION) 682 # RELEASE_DATE Date of the Release Build 683 # PATCH_DATE Date the patch was created, if this is blank it 684 # will default to the RELEASE_DATE 685 # 686 POUND_SIGN:sh= echo \\043 687 SFWVERS= "11.11.0" 688 SFWRELEASE= 5.11 689 SFWVERSION= SunOS Development 690 PATCHID= $(SFWVERSION) 691 RELEASE_DATE= October 2007 692 PATCH_DATE= $(RELEASE_DATE) 693 RELEASE_CM= "@($(POUND_SIGN))SunOS $(SFWRELEASE) $(PATCHID) $(PATCH_DATE)" 694 DEV_CM= "@($(POUND_SIGN))SunOS Internal Development: `$(ECHO) $$LOGNAME` `date +%D` `$(ECHO) [\`basename $$CODEMGR_WS\`]`" 695 696 PROCESS_COMMENT= @?${MCS} -c -a $(RELEASE_CM) -a $(DEV_CM) 697 $(STRIP_COMMENTS)PROCESS_COMMENT= @?${MCS} -d -a $(RELEASE_CM) -a $(DEV_CM) 698 $(RELEASE_BUILD)PROCESS_COMMENT= @?${MCS} -d -a $(RELEASE_CM) 699 700 POST_PROCESS_O= $(PROCESS_COMMENT) $@ 701 POST_PROCESS_A= 702 POST_PROCESS_SO= $(PROCESS_COMMENT) $@ 703 POST_PROCESS= $(PROCESS_COMMENT) $@ 704 705 # Default build rules which perform comment section post-processing. 706 # 707 .c: 708 $(LINK.c) -o $@ $< $(LDLIBS) 709 $(POST_PROCESS) 710 .c.o: 711 $(COMPILE.c) $(OUTPUT_OPTION) $< 712 $(POST_PROCESS_O) 713 .c.a: 714 $(COMPILE.c) -o $% $< 715 $(PROCESS_COMMENT) $% 716 $(AR) $(ARFLAGS) $@ $% 717 $(RM) $% 718 .s.o: 719 $(COMPILE.s) -o $@ $< 720 $(POST_PROCESS_O) 721 .s.a: 722 $(COMPILE.s) -o $% $< 723 $(PROCESS_COMMENT) $% 724 $(AR) $(ARFLAGS) $@ $% 725 $(RM) $% 726 .cc: 727 $(LINK.cc) -o $@ $< $(LDLIBS) 728 $(POST_PROCESS) 729 .cc.o: 730 $(COMPILE.cc) $(OUTPUT_OPTION) $< 731 $(POST_PROCESS_O) 732 .cc.a: 733 $(COMPILE.cc) -o $% $< 734 $(AR) $(ARFLAGS) $@ $% 735 $(PROCESS_COMMENT) $% 736 $(RM) $% 737 .y: 738 $(YACC.y) $< 739 $(LINK.c) -o $@ y.tab.c $(LDLIBS) 740 $(POST_PROCESS) 741 $(RM) y.tab.c 742 .y.o: 743 $(YACC.y) $< 744 $(COMPILE.c) -o $@ y.tab.c 745 $(POST_PROCESS_O) 746 $(RM) y.tab.c 747 .l: 748 $(RM) $*.c 749 $(LEX.l) $< > $*.c 750 $(LINK.c) -o $@ $*.c -ll $(LDLIBS) 751 $(POST_PROCESS) 752 $(RM) $*.c 753 .l.o: 754 $(RM) $*.c 755 $(LEX.l) $< > $*.c 756 $(COMPILE.c) -o $@ $*.c 757 $(POST_PROCESS_O) 758 $(RM) $*.c 759 760 .java.class: 761 $(COMPILE.java) $< 762 763 # 764 # Rules to create message catalogue files from 765 # .c, .y and .l files 766 # 767 .c.po: 768 $(COMPILE.cpp) $< > $<.i 769 $(BUILD.po) 770 771 .y.po: 772 yacc -d $< 773 $(COMPILE.cpp) y.tab.c > $<.i 774 $(BUILD.po) 775 $(RM) y.tab.c 776 777 .l.po: 778 lex $< 779 $(COMPILE.cpp) lex.yy.c > $<.i 780 $(BUILD.po) 781 $(RM) lex.yy.c 782 783 # 784 # Rules to perform stylistic checks 785 # 786 .SUFFIXES: $(SUFFIXES) .x 787 788 $(ROOTBIN)/%: % 789 $(INS.file) 790 791 $(ROOTLIB)/%: % 792 $(INS.file) 793 794 $(ROOTBIN64)/%: % 795 $(INS.file) 796 797 $(ROOTLIB64)/%: % 798 $(INS.file) 799 800 $(ROOTBIN32)/%: % 801 $(INS.file) 802 803 $(ROOTSBIN)/%: % 804 $(INS.file) 805 806 $(ROOTUSRSBIN)/%: % 807 $(INS.file) 808 809 $(ROOTUSRSBIN32)/%: % 810 $(INS.file) 811 812 $(ROOTUSRSBIN64)/%: % 813 $(INS.file) 814 815 $(ROOTETC)/%: % 816 $(INS.file) 817 818 $(ROOTSFWBIN)/%: % 819 $(INS.file) 820 821 $(ROOTSFWSBIN)/%: % 822 $(INS.file) 823 824 $(ROOTSFWINFO)/%: % 825 $(INS.file) 826 827 $(ROOTSFWLIB)/%: % 828 $(INS.file) 829 830 $(ROOTLIBEXEC)/%: % 831 $(INS.file) 832 833 $(ROOTSFWMAN1)/%: % 834 $(INS.file) 835 836 $(ROOTSFWMAN1M)/%: % 837 $(INS.file) 838 839 $(ROOTSFWMANN)/%: % 840 $(INS.file) 841 842 $(ROOTSFWMAN3)/%: % 843 $(INS.file) 844 845 $(ROOTSFWMAN4)/%: % 846 $(INS.file) 847 848 $(ROOTSFWMAN5)/%: % 849 $(INS.file) 850 851 $(ROOTSFWMAN7)/%: % 852 $(INS.file) 853 854 $(ROOTSFWSHARE)/%: % 855 $(INS.file) 856