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