1 # 2 # Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. 8 # 9 # This code is distributed in the hope that it will be useful, but WITHOUT 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 # version 2 for more details (a copy is included in the LICENSE file that 13 # accompanied this code). 14 # 15 # You should have received a copy of the GNU General Public License version 16 # 2 along with this work; if not, write to the Free Software Foundation, 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 # 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 # or visit www.oracle.com if you need additional information or have any 21 # questions. 22 # 23 # 24 25 # If a SPEC is not set already, then use these defaults. 26 ifeq ($(SPEC),) 27 # Compiler-specific flags for sparcworks. 28 CC = cc 29 CXX = CC 30 31 # Note that this 'as' is an older version of the Sun Studio 'fbe', and will 32 # use the older style options. The 'fbe' options will match 'cc' and 'CC'. 33 AS = /usr/ccs/bin/as 34 35 NM = /usr/ccs/bin/nm 36 NAWK = /bin/nawk 37 38 MCS = /usr/ccs/bin/mcs 39 STRIP = /usr/ccs/bin/strip 40 endif 41 42 # Check for the versions of C++ and C compilers ($CXX and $CC) used. 43 44 # Get the last thing on the line that looks like x.x+ (x is a digit). 45 COMPILER_REV := \ 46 $(shell $(CXX) -V 2>&1 | sed -n 's/^.*[ ,\t]C++[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p') 47 CC_COMPILER_REV := \ 48 $(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p') 49 50 # Pick which compiler is validated 51 # Validated compiler for JDK9 is SS12.4 (5.13) 52 VALIDATED_COMPILER_REVS := 5.13 53 VALIDATED_CC_COMPILER_REVS := 5.13 54 55 # Warning messages about not using the above validated versions 56 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := $(strip ${VALIDATED_COMPILER_REVS}) 57 ifeq ($(filter ${ENFORCE_COMPILER_REV},${COMPILER_REV}),) 58 PRINTABLE_CC_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_COMPILER_REV}) 59 dummy_var_to_enforce_compiler_rev := $(shell \ 60 echo >&2 WARNING: You are using CC version ${COMPILER_REV} and \ 61 should be using version ${PRINTABLE_CC_REVS}.; \ 62 echo >&2 Set ENFORCE_COMPILER_REV=${COMPILER_REV} to avoid this \ 63 warning.) 64 endif 65 66 ENFORCE_CC_COMPILER_REV${ENFORCE_CC_COMPILER_REV} := $(strip ${VALIDATED_CC_COMPILER_REVS}) 67 ifeq ($(filter ${ENFORCE_CC_COMPILER_REV},${CC_COMPILER_REV}),) 68 PRINTABLE_C_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_CC_COMPILER_REV}) 69 dummy_var_to_enforce_c_compiler_rev := $(shell \ 70 echo >&2 WARNING: You are using cc version ${CC_COMPILER_REV} and \ 71 should be using version ${PRINTABLE_C_REVS}.; \ 72 echo >&2 Set ENFORCE_CC_COMPILER_REV=${CC_COMPILER_REV} to avoid this \ 73 warning.) 74 endif 75 76 COMPILER_REV_NUMERIC := $(shell echo $(COMPILER_REV) | awk -F. '{ print $$1 * 100 + $$2 }') 77 78 # Fail the build if __fabsf is used. __fabsf exists only in Solaris 8 2/04 79 # and newer; objects with a dependency on this symbol will not run on older 80 # Solaris 8. 81 JVM_FAIL_IF_UNDEFINED = __fabsf 82 83 JVM_CHECK_SYMBOLS = $(NM) -u -p $(LIBJVM.o) | \ 84 $(NAWK) -v f="${JVM_FAIL_IF_UNDEFINED}" \ 85 'BEGIN { c=split(f,s); rc=0; } \ 86 /:$$/ { file = $$1; } \ 87 /[^:]$$/ { for(n=1;n<=c;++n) { \ 88 if($$1==s[n]) { \ 89 printf("JVM_CHECK_SYMBOLS: %s contains illegal symbol %s\n", \ 90 file,$$1); \ 91 rc=1; \ 92 } \ 93 } \ 94 } \ 95 END { exit rc; }' 96 97 LINK_LIB.CXX/PRE_HOOK += $(JVM_CHECK_SYMBOLS) || exit 1; 98 99 # New architecture options started in SS12 (5.9), we need both styles to build. 100 # The older arch options for SS11 (5.8) or older and also for /usr/ccs/bin/as. 101 # Note: default for 32bit sparc is now the same as v8plus, so the 102 # settings below have changed all 32bit sparc builds to be v8plus. 103 ARCHFLAG_OLD/sparc = -xarch=v8plus 104 ARCHFLAG_NEW/sparc = -m32 -xarch=sparc 105 ARCHFLAG_OLD/sparcv9 = -xarch=v9 106 ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc 107 ARCHFLAG_OLD/i486 = 108 ARCHFLAG_NEW/i486 = -m32 109 ARCHFLAG_OLD/amd64 = -xarch=amd64 110 ARCHFLAG_NEW/amd64 = -m64 111 112 # Select the ARCHFLAGs and other SS12 (5.9) options 113 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1) 114 ARCHFLAG/sparc = $(ARCHFLAG_NEW/sparc) 115 ARCHFLAG/sparcv9 = $(ARCHFLAG_NEW/sparcv9) 116 ARCHFLAG/i486 = $(ARCHFLAG_NEW/i486) 117 ARCHFLAG/amd64 = $(ARCHFLAG_NEW/amd64) 118 else 119 ARCHFLAG/sparc = $(ARCHFLAG_OLD/sparc) 120 ARCHFLAG/sparcv9 = $(ARCHFLAG_OLD/sparcv9) 121 ARCHFLAG/i486 = $(ARCHFLAG_OLD/i486) 122 ARCHFLAG/amd64 = $(ARCHFLAG_OLD/amd64) 123 endif 124 125 # ARCHFLAGS for the current build arch 126 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) 127 AS_ARCHFLAG = $(ARCHFLAG_OLD/$(BUILDARCH)) 128 129 # Optional sub-directory in /usr/lib where BUILDARCH libraries are kept. 130 ISA_DIR=$(ISA_DIR/$(BUILDARCH)) 131 ISA_DIR/sparcv9=/sparcv9 132 ISA_DIR/amd64=/amd64 133 134 # Use these to work around compiler bugs: 135 OPT_CFLAGS/SLOWER=-xO3 136 OPT_CFLAGS/O2=-xO2 137 OPT_CFLAGS/NOOPT=-xO1 138 139 # Flags for creating the dependency files. 140 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1) 141 DEPFLAGS = -xMMD -xMF $(DEP_DIR)/$(@:%=%.d) 142 endif 143 144 # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. 145 CFLAGS += -DDONT_USE_PRECOMPILED_HEADER 146 147 # Compiler warnings are treated as errors 148 WARNINGS_ARE_ERRORS ?= -xwe 149 CFLAGS_WARN = $(WARNINGS_ARE_ERRORS) 150 151 ################################################ 152 # Begin current (>=5.9) Forte compiler options # 153 ################################################# 154 155 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1) 156 ifeq ($(Platform_arch), x86) 157 OPT_CFLAGS/NO_TAIL_CALL_OPT = -Wu,-O~yz 158 OPT_CCFLAGS/NO_TAIL_CALL_OPT = -Qoption ube -O~yz 159 OPT_CFLAGS/stubGenerator_x86_32.o = $(OPT_CFLAGS) -xspace 160 OPT_CFLAGS/stubGenerator_x86_64.o = $(OPT_CFLAGS) -xspace 161 # The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides 162 # of OPT_CFLAGS. Restore it here. 163 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 164 OPT_CFLAGS/stubGenerator_x86_32.o += -g0 -xs 165 OPT_CFLAGS/stubGenerator_x86_64.o += -g0 -xs 166 endif 167 endif # Platform_arch == x86 168 ifeq ("${Platform_arch}", "sparc") 169 OPT_CFLAGS/stubGenerator_sparc.o = $(OPT_CFLAGS) -xspace 170 # The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides 171 # of OPT_CFLAGS. Restore it here. 172 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 173 OPT_CFLAGS/stubGenerator_sparc.o += -g0 -xs 174 endif 175 endif 176 endif # COMPILER_REV_NUMERIC >= 509 177 178 ################################################# 179 # Begin current (>=5.6) Forte compiler options # 180 ################################################# 181 182 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 506), 1) 183 184 ifeq ("${Platform_arch}", "sparc") 185 186 # We MUST allow data alignment of 4 for sparc (sparcv9 is ok at 8s) 187 ifndef LP64 188 CFLAGS += -xmemalign=4s 189 endif 190 191 endif 192 193 endif 194 195 ################################################# 196 # Begin current (>=5.5) Forte compiler options # 197 ################################################# 198 199 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 505), 1) 200 201 CFLAGS += $(ARCHFLAG) 202 AOUT_FLAGS += $(ARCHFLAG) 203 LIB_FLAGS += $(ARCHFLAG) 204 LFLAGS += $(ARCHFLAG) 205 206 ifeq ("${Platform_arch}", "sparc") 207 208 # Flags for Optimization 209 210 # [phh] Commented out pending verification that we do indeed want 211 # to potentially bias against u1 and u3 targets. 212 #CFLAGS += -xchip=ultra2 213 214 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS) 215 216 endif # sparc 217 218 ifeq ("${Platform_arch_model}", "x86_32") 219 220 OPT_CFLAGS=-xtarget=pentium -xO4 $(EXTRA_OPT_CFLAGS) 221 222 endif # 32bit x86 223 224 ifeq ("${Platform_arch_model}", "x86_64") 225 226 ASFLAGS += $(AS_ARCHFLAG) 227 CFLAGS += $(ARCHFLAG/amd64) 228 # this one seemed useless 229 LFLAGS_VM += $(ARCHFLAG/amd64) 230 # this one worked 231 LFLAGS += $(ARCHFLAG/amd64) 232 AOUT_FLAGS += $(ARCHFLAG/amd64) 233 234 # -xO3 is faster than -xO4 on specjbb with SS10 compiler 235 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS) 236 237 endif # 64bit x86 238 239 # Inline functions 240 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_${Platform_arch}/vm/solaris_${Platform_arch_model}.il 241 242 # no more exceptions 243 CFLAGS/NOEX=-features=no%except 244 245 246 # avoid compilation problems arising from fact that C++ compiler tries 247 # to search for external template definition by just compiling additional 248 # source files in th same context 249 CFLAGS += -template=no%extdef 250 251 # Reduce code bloat by reverting back to 5.0 behavior for static initializers 252 CFLAGS += -features=no%split_init 253 254 # Use -D_Crun_inline_placement so we don't get references to 255 # __1c2n6FIpv_0_ or void*operator new(unsigned,void*) 256 # This avoids the hard requirement of the newer Solaris C++ runtime patches. 257 # NOTE: This is an undocumented feature of the SS10 compiler. See 6306698. 258 CFLAGS += -D_Crun_inline_placement 259 260 # PIC is safer for SPARC, and is considerably slower 261 # a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC" 262 PICFLAG = -KPIC 263 PICFLAG/DEFAULT = $(PICFLAG) 264 # [RGV] Need to figure which files to remove to get link to work 265 #PICFLAG/BETTER = -pic 266 PICFLAG/BETTER = $(PICFLAG/DEFAULT) 267 PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@)) 268 269 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. 270 MAPFLAG = -M FILENAME 271 272 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj 273 SONAMEFLAG = -h SONAME 274 275 # Build shared library 276 SHARED_FLAG = -G 277 278 # We don't need libCstd.so and librwtools7.so, only libCrun.so 279 CFLAGS += -library=%none 280 LFLAGS += -library=%none 281 282 LFLAGS += -mt 283 284 endif # COMPILER_REV_NUMERIC >= 505 285 286 ###################################### 287 # End 5.5 Forte compiler options # 288 ###################################### 289 290 ###################################### 291 # Begin 5.2 Forte compiler options # 292 ###################################### 293 294 ifeq ($(COMPILER_REV_NUMERIC), 502) 295 296 CFLAGS += $(ARCHFLAG) 297 AOUT_FLAGS += $(ARCHFLAG) 298 LIB_FLAGS += $(ARCHFLAG) 299 LFLAGS += $(ARCHFLAG) 300 301 ifeq ("${Platform_arch}", "sparc") 302 303 # Flags for Optimization 304 305 # [phh] Commented out pending verification that we do indeed want 306 # to potentially bias against u1 and u3 targets. 307 #CFLAGS += -xchip=ultra2 308 309 ifdef LP64 310 # SC5.0 tools on v9 are flakey at -xO4 311 # [phh] Is this still true for 6.1? 312 OPT_CFLAGS=-xO3 $(EXTRA_OPT_CFLAGS) 313 else 314 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS) 315 endif 316 317 endif # sparc 318 319 ifeq ("${Platform_arch_model}", "x86_32") 320 321 OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS) 322 323 # SC5.0 tools on x86 are flakey at -xO4 324 # [phh] Is this still true for 6.1? 325 OPT_CFLAGS+=-xO3 326 327 endif # 32bit x86 328 329 # no more exceptions 330 CFLAGS/NOEX=-noex 331 332 # Inline functions 333 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_${Platform_arch}/vm/solaris_${Platform_arch_model}.il 334 335 # Reduce code bloat by reverting back to 5.0 behavior for static initializers 336 CFLAGS += -Qoption ccfe -one_static_init 337 338 # PIC is safer for SPARC, and is considerably slower 339 # a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC" 340 PICFLAG = -KPIC 341 PICFLAG/DEFAULT = $(PICFLAG) 342 # [RGV] Need to figure which files to remove to get link to work 343 #PICFLAG/BETTER = -pic 344 PICFLAG/BETTER = $(PICFLAG/DEFAULT) 345 PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@)) 346 347 # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file. 348 MAPFLAG = -M FILENAME 349 350 # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj 351 SONAMEFLAG = -h SONAME 352 353 # Build shared library 354 SHARED_FLAG = -G 355 356 # Would be better if these weren't needed, since we link with CC, but 357 # at present removing them causes run-time errors 358 LFLAGS += -library=Crun 359 LIBS += -library=Crun -lCrun 360 361 endif # COMPILER_REV_NUMERIC == 502 362 363 ################################## 364 # End 5.2 Forte compiler options # 365 ################################## 366 367 ################################## 368 # Begin old 5.1 compiler options # 369 ################################## 370 ifeq ($(COMPILER_REV_NUMERIC), 501) 371 372 _JUNK_ := $(shell echo >&2 \ 373 "*** ERROR: sparkWorks.make incomplete for 5.1 compiler") 374 @exit 1 375 endif 376 ################################## 377 # End old 5.1 compiler options # 378 ################################## 379 380 ################################## 381 # Begin old 5.0 compiler options # 382 ################################## 383 384 ifeq (${COMPILER_REV_NUMERIC}, 500) 385 386 # Had to hoist this higher apparently because of other changes. Must 387 # come before -xarch specification. 388 # NOTE: native says optimize for the machine doing the compile, bad news. 389 CFLAGS += -xtarget=native 390 391 CFLAGS += $(ARCHFLAG) 392 AOUT_FLAGS += $(ARCHFLAG) 393 LIB_FLAGS += $(ARCHFLAG) 394 LFLAGS += $(ARCHFLAG) 395 396 CFLAGS += -library=iostream 397 LFLAGS += -library=iostream -library=Crun 398 LIBS += -library=iostream -library=Crun -lCrun 399 400 # Flags for Optimization 401 ifdef LP64 402 # SC5.0 tools on v9 are flakey at -xO4 403 OPT_CFLAGS=-xO3 $(EXTRA_OPT_CFLAGS) 404 else 405 OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS) 406 endif 407 408 ifeq ("${Platform_arch}", "sparc") 409 410 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.il 411 412 endif # sparc 413 414 ifeq ("${Platform_arch_model}", "x86_32") 415 OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS) 416 ifeq ("${COMPILER_REV_NUMERIC}", "500") 417 # SC5.0 tools on x86 are flakey at -xO4 418 OPT_CFLAGS+=-xO3 419 else 420 OPT_CFLAGS+=-xO4 421 endif 422 423 CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_x86/vm/solaris_x86_32.il 424 425 endif # 32bit x86 426 427 # The following options run into misaligned ldd problem (raj) 428 #OPT_CFLAGS = -fast -O4 $(ARCHFLAG/sparc) -xchip=ultra 429 430 # no more exceptions 431 CFLAGS/NOEX=-noex 432 433 # PIC is safer for SPARC, and is considerably slower 434 # a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC" 435 PICFLAG = -PIC 436 PICFLAG/DEFAULT = $(PICFLAG) 437 # [RGV] Need to figure which files to remove to get link to work 438 #PICFLAG/BETTER = -pic 439 PICFLAG/BETTER = $(PICFLAG/DEFAULT) 440 PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@)) 441 442 endif # COMPILER_REV_NUMERIC = 500 443 444 ################################ 445 # End old 5.0 compiler options # 446 ################################ 447 448 ifeq ("${COMPILER_REV_NUMERIC}", "402") 449 # 4.2 COMPILERS SHOULD NO LONGER BE USED 450 _JUNK_ := $(shell echo >&2 \ 451 "*** ERROR: SC4.2 compilers are not supported by this code base!") 452 @exit 1 453 endif 454 455 # do not include shared lib path in a.outs 456 AOUT_FLAGS += -norunpath 457 LFLAGS_VM = -norunpath -z noversion 458 459 # need position-indep-code for shared libraries 460 # (ild appears to get errors on PIC code, so we'll try non-PIC for debug) 461 ifeq ($(PICFLAGS),DEFAULT) 462 VM_PICFLAG/LIBJVM = $(PICFLAG/DEFAULT) 463 else 464 VM_PICFLAG/LIBJVM = $(PICFLAG/BYFILE) 465 endif 466 VM_PICFLAG/AOUT = 467 468 VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) 469 CFLAGS += $(VM_PICFLAG) 470 471 # less dynamic linking (no PLTs, please) 472 #LIB_FLAGS += $(LINK_MODE) 473 # %%%%% despite -znodefs, -Bsymbolic gets link errors -- Rose 474 475 LINK_MODE = $(LINK_MODE/$(VERSION)) 476 LINK_MODE/debug = 477 LINK_MODE/optimized = -Bsymbolic -znodefs 478 479 # Have thread local errnos 480 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 505), 1) 481 CFLAGS += -mt 482 else 483 CFLAGS += -D_REENTRANT 484 endif 485 486 ifdef CC_INTERP 487 # C++ Interpreter 488 CFLAGS += -DCC_INTERP 489 endif 490 491 # Flags for Debugging 492 # The -g0 setting allows the C++ frontend to inline, which is a big win. 493 # The -xs setting disables 'lazy debug info' which puts everything in 494 # the .so instead of requiring the '.o' files. 495 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 496 OPT_CFLAGS += -g0 -xs 497 endif 498 DEBUG_CFLAGS = -g 499 FASTDEBUG_CFLAGS = -g0 500 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) 501 DEBUG_CFLAGS += -xs 502 FASTDEBUG_CFLAGS += -xs 503 endif 504 505 # Enable the following CFLAGS additions if you need to compare the 506 # built ELF objects. 507 # 508 # The -g option makes static data global and the "-Qoption ccfe 509 # -xglobalstatic" option tells the compiler to not globalize static 510 # data using a unique globalization prefix. Instead force the use of 511 # a static globalization prefix based on the source filepath so the 512 # objects from two identical compilations are the same. 513 # EXTRA_CFLAGS only covers vm_version.cpp for some reason 514 #EXTRA_CFLAGS += -Qoption ccfe -xglobalstatic 515 #OPT_CFLAGS += -Qoption ccfe -xglobalstatic 516 #DEBUG_CFLAGS += -Qoption ccfe -xglobalstatic 517 #FASTDEBUG_CFLAGS += -Qoption ccfe -xglobalstatic 518 519 ifeq (${COMPILER_REV_NUMERIC}, 502) 520 COMPILER_DATE := $(shell $(CXX) -V 2>&1 | sed -n '/^.*[ ]C++[ ]\([1-9]\.[0-9][0-9]*\)/p' | awk '{ print $$NF; }') 521 ifeq (${COMPILER_DATE}, 2001/01/31) 522 # disable -g0 in fastdebug since SC6.1 dated 2001/01/31 seems to be buggy 523 # use an innocuous value because it will get -g if it's empty 524 FASTDEBUG_CFLAGS = -c 525 endif 526 endif 527 528 # Uncomment or 'gmake CFLAGS_BROWSE=-sbfast' to get source browser information. 529 # CFLAGS_BROWSE = -sbfast 530 CFLAGS += $(CFLAGS_BROWSE) 531 532 # ILD is gone as of SS11 (5.8), not supportted in SS10 (5.7) 533 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 507), 1) 534 # use ild when debugging (but when optimizing we want reproducible results) 535 ILDFLAG = $(ILDFLAG/$(VERSION)) 536 ILDFLAG/debug = -xildon 537 ILDFLAG/optimized = 538 AOUT_FLAGS += $(ILDFLAG) 539 endif 540 541 # Where to put the *.o files (a.out, or shared library)? 542 LINK_INTO = $(LINK_INTO/$(VERSION)) 543 LINK_INTO/debug = LIBJVM 544 LINK_INTO/optimized = LIBJVM 545 546 # We link the debug version into the a.out because: 547 # 1. ild works on a.out but not shared libraries, and using ild 548 # can cut rebuild times by 25% for small changes. (ILD is gone in SS11) 549 # 2. dbx cannot gracefully set breakpoints in shared libraries 550 # 551 552 # apply this setting to link into the shared library even in the debug version: 553 ifdef LP64 554 LINK_INTO = LIBJVM 555 else 556 #LINK_INTO = LIBJVM 557 endif 558 559 # Also, strip debug and line number information (worth about 1.7Mb). 560 # If we can create .debuginfo files, then the VM is stripped in vm.make 561 # and this macro is not used. 562 STRIP_LIB.CXX/POST_HOOK = $(STRIP) -x $@ || exit 1; 563 # STRIP_LIB.CXX/POST_HOOK is incorporated into LINK_LIB.CXX/POST_HOOK 564 # in certain configurations, such as product.make. Other configurations, 565 # such as debug.make, do not include the strip operation.