204 AC_SUBST($1SYSROOT_LDFLAGS) |
204 AC_SUBST($1SYSROOT_LDFLAGS) |
205 ]) |
205 ]) |
206 |
206 |
207 AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS], |
207 AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS], |
208 [ |
208 [ |
209 # COMPILER_TARGET_BITS_FLAG : option for selecting 32- or 64-bit output |
209 FLAGS_SETUP_TOOLCHAIN_CONTROL |
210 # COMPILER_COMMAND_FILE_FLAG : option for passing a command file to the compiler |
210 |
211 # COMPILER_BINDCMD_FILE_FLAG : option for specifying a file which saves the binder |
211 FLAGS_SETUP_ARFLAGS |
212 # commands produced by the link step (currently AIX only) |
212 FLAGS_SETUP_STRIPFLAGS |
213 if test "x$TOOLCHAIN_TYPE" = xxlc; then |
213 |
214 COMPILER_TARGET_BITS_FLAG="-q" |
214 FLAGS_SETUP_RCFLAGS |
215 COMPILER_COMMAND_FILE_FLAG="-f" |
|
216 COMPILER_BINDCMD_FILE_FLAG="-bloadmap:" |
|
217 else |
|
218 COMPILER_TARGET_BITS_FLAG="-m" |
|
219 COMPILER_COMMAND_FILE_FLAG="@" |
|
220 COMPILER_BINDCMD_FILE_FLAG="" |
|
221 |
|
222 # The solstudio linker does not support @-files. |
|
223 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
224 COMPILER_COMMAND_FILE_FLAG= |
|
225 fi |
|
226 |
|
227 # Check if @file is supported by gcc |
|
228 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
229 AC_MSG_CHECKING([if @file is supported by gcc]) |
|
230 # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument |
|
231 $ECHO "" "--version" > command.file |
|
232 if $CXX @command.file 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then |
|
233 AC_MSG_RESULT(yes) |
|
234 COMPILER_COMMAND_FILE_FLAG="@" |
|
235 else |
|
236 AC_MSG_RESULT(no) |
|
237 COMPILER_COMMAND_FILE_FLAG= |
|
238 fi |
|
239 $RM command.file |
|
240 fi |
|
241 fi |
|
242 AC_SUBST(COMPILER_TARGET_BITS_FLAG) |
|
243 AC_SUBST(COMPILER_COMMAND_FILE_FLAG) |
|
244 AC_SUBST(COMPILER_BINDCMD_FILE_FLAG) |
|
245 |
|
246 # FIXME: figure out if we should select AR flags depending on OS or toolchain. |
|
247 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
248 ARFLAGS="-r" |
|
249 elif test "x$OPENJDK_TARGET_OS" = xaix; then |
|
250 ARFLAGS="-X64" |
|
251 elif test "x$OPENJDK_TARGET_OS" = xwindows; then |
|
252 # lib.exe is used as AR to create static libraries. |
|
253 ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT" |
|
254 else |
|
255 ARFLAGS="" |
|
256 fi |
|
257 AC_SUBST(ARFLAGS) |
|
258 |
|
259 ## Setup strip. |
|
260 # FIXME: should this really be per platform, or should it be per toolchain type? |
|
261 # strip is not provided by clang or solstudio; so guessing platform makes most sense. |
|
262 # FIXME: we should really only export STRIPFLAGS from here, not POST_STRIP_CMD. |
|
263 if test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
264 STRIPFLAGS="-g" |
|
265 elif test "x$OPENJDK_TARGET_OS" = xsolaris; then |
|
266 STRIPFLAGS="-x" |
|
267 elif test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
268 STRIPFLAGS="-S" |
|
269 elif test "x$OPENJDK_TARGET_OS" = xaix; then |
|
270 STRIPFLAGS="-X32_64" |
|
271 fi |
|
272 |
|
273 AC_SUBST(STRIPFLAGS) |
|
274 |
|
275 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
276 CC_OUT_OPTION=-Fo |
|
277 EXE_OUT_OPTION=-out: |
|
278 LD_OUT_OPTION=-out: |
|
279 AR_OUT_OPTION=-out: |
|
280 else |
|
281 # The option used to specify the target .o,.a or .so file. |
|
282 # When compiling, how to specify the to be created object file. |
|
283 CC_OUT_OPTION='-o$(SPACE)' |
|
284 # When linking, how to specify the to be created executable. |
|
285 EXE_OUT_OPTION='-o$(SPACE)' |
|
286 # When linking, how to specify the to be created dynamically linkable library. |
|
287 LD_OUT_OPTION='-o$(SPACE)' |
|
288 # When archiving, how to specify the to be create static archive for object files. |
|
289 AR_OUT_OPTION='rcs$(SPACE)' |
|
290 fi |
|
291 AC_SUBST(CC_OUT_OPTION) |
|
292 AC_SUBST(EXE_OUT_OPTION) |
|
293 AC_SUBST(LD_OUT_OPTION) |
|
294 AC_SUBST(AR_OUT_OPTION) |
|
295 |
|
296 # On Windows, we need to set RC flags. |
|
297 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
298 RC_FLAGS="-nologo -l0x409" |
|
299 JVM_RCFLAGS="-nologo" |
|
300 if test "x$DEBUG_LEVEL" = xrelease; then |
|
301 RC_FLAGS="$RC_FLAGS -DNDEBUG" |
|
302 JVM_RCFLAGS="$JVM_RCFLAGS -DNDEBUG" |
|
303 fi |
|
304 |
|
305 # The version variables used to create RC_FLAGS may be overridden |
|
306 # in a custom configure script, or possibly the command line. |
|
307 # Let those variables be expanded at make time in spec.gmk. |
|
308 # The \$ are escaped to the shell, and the $(...) variables |
|
309 # are evaluated by make. |
|
310 RC_FLAGS="$RC_FLAGS \ |
|
311 -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \ |
|
312 -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \ |
|
313 -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \ |
|
314 -D\"JDK_VER=\$(VERSION_NUMBER)\" \ |
|
315 -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \ |
|
316 -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_FEATURE)\" \ |
|
317 -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\"" |
|
318 |
|
319 JVM_RCFLAGS="$JVM_RCFLAGS \ |
|
320 -D\"HS_BUILD_ID=\$(VERSION_STRING)\" \ |
|
321 -D\"HS_COMPANY=\$(COMPANY_NAME)\" \ |
|
322 -D\"JDK_DOTVER=\$(VERSION_NUMBER_FOUR_POSITIONS)\" \ |
|
323 -D\"HS_COPYRIGHT=Copyright $COPYRIGHT_YEAR\" \ |
|
324 -D\"HS_NAME=\$(PRODUCT_NAME) \$(VERSION_SHORT)\" \ |
|
325 -D\"JDK_VER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\" \ |
|
326 -D\"HS_FNAME=jvm.dll\" \ |
|
327 -D\"HS_INTERNAL_NAME=jvm\"" |
|
328 fi |
|
329 AC_SUBST(RC_FLAGS) |
|
330 AC_SUBST(JVM_RCFLAGS) |
|
331 |
215 |
332 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
216 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
333 # silence copyright notice and other headers. |
217 # silence copyright notice and other headers. |
334 COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo" |
218 COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo" |
335 fi |
219 fi |
336 ]) |
220 ]) |
337 |
221 |
338 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS], |
222 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS], |
339 [ |
223 [ |
340 ############################################################################### |
224 FLAGS_SETUP_SHARED_LIBS |
341 # |
|
342 # How to compile shared libraries. |
|
343 # |
|
344 |
225 |
345 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
226 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
346 PICFLAG="-fPIC" |
|
347 C_FLAG_REORDER='' |
|
348 CXX_FLAG_REORDER='' |
|
349 |
|
350 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
227 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
351 # Linking is different on MacOSX |
228 if test "x$STATIC_BUILD" = xfalse; then |
352 if test "x$STATIC_BUILD" = xtrue; then |
|
353 SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup' |
|
354 else |
|
355 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG" |
|
356 JVM_CFLAGS="$JVM_CFLAGS $PICFLAG" |
229 JVM_CFLAGS="$JVM_CFLAGS $PICFLAG" |
357 fi |
230 fi |
358 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)' |
|
359 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN" |
|
360 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1' |
|
361 SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1' |
|
362 else |
|
363 # Default works for linux, might work on other platforms as well. |
|
364 SHARED_LIBRARY_FLAGS='-shared' |
|
365 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1' |
|
366 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN" |
|
367 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1' |
|
368 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1' |
|
369 fi |
231 fi |
370 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
232 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
371 C_FLAG_REORDER='' |
|
372 CXX_FLAG_REORDER='' |
|
373 |
|
374 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
233 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
375 # Linking is different on MacOSX |
|
376 PICFLAG='' |
|
377 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG" |
|
378 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)' |
|
379 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN" |
|
380 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1' |
|
381 SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1' |
|
382 |
|
383 if test "x$STATIC_BUILD" = xfalse; then |
234 if test "x$STATIC_BUILD" = xfalse; then |
384 JVM_CFLAGS="$JVM_CFLAGS -fPIC" |
235 JVM_CFLAGS="$JVM_CFLAGS -fPIC" |
385 fi |
236 fi |
386 else |
237 fi |
387 # Default works for linux, might work on other platforms as well. |
|
388 PICFLAG='-fPIC' |
|
389 SHARED_LIBRARY_FLAGS='-shared' |
|
390 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1' |
|
391 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1' |
|
392 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1' |
|
393 |
|
394 # arm specific settings |
|
395 if test "x$OPENJDK_TARGET_CPU" = "xarm"; then |
|
396 # '-Wl,-z,origin' isn't used on arm. |
|
397 SET_SHARED_LIBRARY_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1' |
|
398 else |
|
399 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN" |
|
400 fi |
|
401 |
|
402 fi |
|
403 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
404 if test "x$OPENJDK_TARGET_CPU" = xsparcv9; then |
|
405 PICFLAG="-xcode=pic32" |
|
406 else |
|
407 PICFLAG="-KPIC" |
|
408 fi |
|
409 C_FLAG_REORDER='-xF' |
|
410 CXX_FLAG_REORDER='-xF' |
|
411 SHARED_LIBRARY_FLAGS="-G" |
|
412 SET_EXECUTABLE_ORIGIN='-R\$$ORIGIN[$]1' |
|
413 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN" |
|
414 SET_SHARED_LIBRARY_NAME='-h [$]1' |
|
415 SET_SHARED_LIBRARY_MAPFILE='-M[$]1' |
|
416 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
238 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
417 # '-qpic' defaults to 'qpic=small'. This means that the compiler generates only |
|
418 # one instruction for accessing the TOC. If the TOC grows larger than 64K, the linker |
|
419 # will have to patch this single instruction with a call to some out-of-order code which |
|
420 # does the load from the TOC. This is of course slow. But in that case we also would have |
|
421 # to use '-bbigtoc' for linking anyway so we could also change the PICFLAG to 'qpic=large'. |
|
422 # With 'qpic=large' the compiler will by default generate a two-instruction sequence which |
|
423 # can be patched directly by the linker and does not require a jump to out-of-order code. |
|
424 # Another alternative instead of using 'qpic=large -bbigtoc' may be to use '-qminimaltoc' |
|
425 # instead. This creates a distinct TOC for every compilation unit (and thus requires two |
|
426 # loads for accessing a global variable). But there are rumors that this may be seen as a |
|
427 # 'performance feature' because of improved code locality of the symbols used in a |
|
428 # compilation unit. |
|
429 PICFLAG="-qpic" |
|
430 JVM_CFLAGS="$JVM_CFLAGS $PICFLAG" |
239 JVM_CFLAGS="$JVM_CFLAGS $PICFLAG" |
431 C_FLAG_REORDER='' |
240 fi |
432 CXX_FLAG_REORDER='' |
241 |
433 SHARED_LIBRARY_FLAGS="-qmkshrobj -bM:SRE -bnoentry" |
|
434 SET_EXECUTABLE_ORIGIN="" |
|
435 SET_SHARED_LIBRARY_ORIGIN='' |
|
436 SET_SHARED_LIBRARY_NAME='' |
|
437 SET_SHARED_LIBRARY_MAPFILE='' |
|
438 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
439 PICFLAG="" |
|
440 C_FLAG_REORDER='' |
|
441 CXX_FLAG_REORDER='' |
|
442 SHARED_LIBRARY_FLAGS="-dll" |
|
443 SET_EXECUTABLE_ORIGIN='' |
|
444 SET_SHARED_LIBRARY_ORIGIN='' |
|
445 SET_SHARED_LIBRARY_NAME='' |
|
446 SET_SHARED_LIBRARY_MAPFILE='-def:[$]1' |
|
447 fi |
|
448 |
|
449 AC_SUBST(C_FLAG_REORDER) |
|
450 AC_SUBST(CXX_FLAG_REORDER) |
|
451 AC_SUBST(SET_EXECUTABLE_ORIGIN) |
|
452 AC_SUBST(SET_SHARED_LIBRARY_ORIGIN) |
|
453 AC_SUBST(SET_SHARED_LIBRARY_NAME) |
|
454 AC_SUBST(SET_SHARED_LIBRARY_MAPFILE) |
|
455 AC_SUBST(SHARED_LIBRARY_FLAGS) |
|
456 |
242 |
457 # The (cross) compiler is now configured, we can now test capabilities |
243 # The (cross) compiler is now configured, we can now test capabilities |
458 # of the target platform. |
244 # of the target platform. |
459 ]) |
245 ]) |
460 |
246 |
480 # (If you expect perfect errno behavior, do not use this) |
266 # (If you expect perfect errno behavior, do not use this) |
481 # -xlibmopt: Use optimized math routines (CURRENTLY DISABLED) |
267 # -xlibmopt: Use optimized math routines (CURRENTLY DISABLED) |
482 # (If you expect perfect errno behavior, do not use this) |
268 # (If you expect perfect errno behavior, do not use this) |
483 # Can cause undefined external on Solaris 8 X86 on __sincos, removing for now |
269 # Can cause undefined external on Solaris 8 X86 on __sincos, removing for now |
484 |
270 |
485 # FIXME: this will never happen since sparc != sparcv9, ie 32 bit, which we don't build anymore. |
|
486 # Bug? |
|
487 #if test "x$OPENJDK_TARGET_CPU" = xsparc; then |
|
488 # CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s" |
|
489 # CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s" |
|
490 #fi |
|
491 |
|
492 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION], |
271 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION], |
493 [ |
272 [ |
494 |
273 FLAGS_SETUP_DEBUG_SYMBOLS |
495 ############################################################################### |
274 FLAGS_SETUP_QUALITY_CHECKS |
496 # |
275 FLAGS_SETUP_OPTIMIZATION |
497 # Setup the opt flags for different compilers |
|
498 # and different operating systems. |
|
499 # |
|
500 |
|
501 # FIXME: this was indirectly the old default, but just inherited. |
|
502 # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
503 # C_FLAG_DEPS="-MMD -MF" |
|
504 # fi |
|
505 |
|
506 # Generate make dependency files |
|
507 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
508 C_FLAG_DEPS="-MMD -MF" |
|
509 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
510 C_FLAG_DEPS="-MMD -MF" |
|
511 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
512 C_FLAG_DEPS="-xMMD -xMF" |
|
513 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
514 C_FLAG_DEPS="-qmakedep=gcc -MF" |
|
515 fi |
|
516 CXX_FLAG_DEPS="$C_FLAG_DEPS" |
|
517 AC_SUBST(C_FLAG_DEPS) |
|
518 AC_SUBST(CXX_FLAG_DEPS) |
|
519 |
|
520 # Debug symbols |
|
521 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
522 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then |
|
523 # reduce from default "-g2" option to save space |
|
524 CFLAGS_DEBUG_SYMBOLS="-g1" |
|
525 CXXFLAGS_DEBUG_SYMBOLS="-g1" |
|
526 else |
|
527 CFLAGS_DEBUG_SYMBOLS="-g" |
|
528 CXXFLAGS_DEBUG_SYMBOLS="-g" |
|
529 fi |
|
530 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
531 CFLAGS_DEBUG_SYMBOLS="-g" |
|
532 CXXFLAGS_DEBUG_SYMBOLS="-g" |
|
533 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
534 CFLAGS_DEBUG_SYMBOLS="-g -xs" |
|
535 # -g0 enables debug symbols without disabling inlining. |
|
536 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" |
|
537 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
538 CFLAGS_DEBUG_SYMBOLS="-g" |
|
539 CXXFLAGS_DEBUG_SYMBOLS="-g" |
|
540 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
541 CFLAGS_DEBUG_SYMBOLS="-Zi" |
|
542 CXXFLAGS_DEBUG_SYMBOLS="-Zi" |
|
543 fi |
|
544 AC_SUBST(CFLAGS_DEBUG_SYMBOLS) |
|
545 AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS) |
|
546 |
276 |
547 # Debug symbols for JVM_CFLAGS |
277 # Debug symbols for JVM_CFLAGS |
548 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
278 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
549 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs" |
279 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs" |
550 if test "x$DEBUG_LEVEL" = xslowdebug; then |
280 if test "x$DEBUG_LEVEL" = xslowdebug; then |
593 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then |
310 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then |
594 JVM_CFLAGS="$JVM_CFLAGS -homeparams" |
311 JVM_CFLAGS="$JVM_CFLAGS -homeparams" |
595 fi |
312 fi |
596 fi |
313 fi |
597 fi |
314 fi |
598 |
|
599 # Optimization levels |
|
600 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
601 CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil" |
|
602 |
|
603 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then |
|
604 # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global? |
|
605 C_O_FLAG_HIGHEST_JVM="-xO4" |
|
606 C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr" |
|
607 C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr" |
|
608 C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr" |
|
609 C_O_FLAG_DEBUG="-xregs=no%frameptr" |
|
610 C_O_FLAG_DEBUG_JVM="" |
|
611 C_O_FLAG_NONE="-xregs=no%frameptr" |
|
612 CXX_O_FLAG_HIGHEST_JVM="-xO4" |
|
613 CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr" |
|
614 CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr" |
|
615 CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr" |
|
616 CXX_O_FLAG_DEBUG="-xregs=no%frameptr" |
|
617 CXX_O_FLAG_DEBUG_JVM="" |
|
618 CXX_O_FLAG_NONE="-xregs=no%frameptr" |
|
619 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then |
|
620 C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium" |
|
621 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium" |
|
622 fi |
|
623 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then |
|
624 C_O_FLAG_HIGHEST_JVM="-xO4" |
|
625 C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra" |
|
626 C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
|
627 C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
|
628 C_O_FLAG_DEBUG="" |
|
629 C_O_FLAG_DEBUG_JVM="" |
|
630 C_O_FLAG_NONE="" |
|
631 CXX_O_FLAG_HIGHEST_JVM="-xO4" |
|
632 CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra" |
|
633 CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
|
634 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
|
635 CXX_O_FLAG_DEBUG="" |
|
636 CXX_O_FLAG_DEBUG_JVM="" |
|
637 CXX_O_FLAG_NONE="" |
|
638 fi |
|
639 else |
|
640 # The remaining toolchains share opt flags between CC and CXX; |
|
641 # setup for C and duplicate afterwards. |
|
642 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
643 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
644 # On MacOSX we optimize for size, something |
|
645 # we should do for all platforms? |
|
646 C_O_FLAG_HIGHEST_JVM="-Os" |
|
647 C_O_FLAG_HIGHEST="-Os" |
|
648 C_O_FLAG_HI="-Os" |
|
649 C_O_FLAG_NORM="-Os" |
|
650 C_O_FLAG_SIZE="-Os" |
|
651 else |
|
652 C_O_FLAG_HIGHEST_JVM="-O3" |
|
653 C_O_FLAG_HIGHEST="-O3" |
|
654 C_O_FLAG_HI="-O3" |
|
655 C_O_FLAG_NORM="-O2" |
|
656 C_O_FLAG_SIZE="-Os" |
|
657 fi |
|
658 C_O_FLAG_DEBUG="-O0" |
|
659 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
660 C_O_FLAG_DEBUG_JVM="" |
|
661 elif test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
662 C_O_FLAG_DEBUG_JVM="-O0" |
|
663 fi |
|
664 C_O_FLAG_NONE="-O0" |
|
665 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
|
666 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
667 # On MacOSX we optimize for size, something |
|
668 # we should do for all platforms? |
|
669 C_O_FLAG_HIGHEST_JVM="-Os" |
|
670 C_O_FLAG_HIGHEST="-Os" |
|
671 C_O_FLAG_HI="-Os" |
|
672 C_O_FLAG_NORM="-Os" |
|
673 C_O_FLAG_SIZE="-Os" |
|
674 else |
|
675 C_O_FLAG_HIGHEST_JVM="-O3" |
|
676 C_O_FLAG_HIGHEST="-O3" |
|
677 C_O_FLAG_HI="-O3" |
|
678 C_O_FLAG_NORM="-O2" |
|
679 C_O_FLAG_SIZE="-Os" |
|
680 fi |
|
681 C_O_FLAG_DEBUG="-O0" |
|
682 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
|
683 C_O_FLAG_DEBUG_JVM="" |
|
684 elif test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
685 C_O_FLAG_DEBUG_JVM="-O0" |
|
686 fi |
|
687 C_O_FLAG_NONE="-O0" |
|
688 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
|
689 C_O_FLAG_HIGHEST_JVM="-O3 -qhot=level=1 -qinline -qinlglue" |
|
690 C_O_FLAG_HIGHEST="-O3 -qhot=level=1 -qinline -qinlglue" |
|
691 C_O_FLAG_HI="-O3 -qinline -qinlglue" |
|
692 C_O_FLAG_NORM="-O2" |
|
693 C_O_FLAG_DEBUG="-qnoopt" |
|
694 # FIXME: Value below not verified. |
|
695 C_O_FLAG_DEBUG_JVM="" |
|
696 C_O_FLAG_NONE="-qnoopt" |
|
697 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
698 C_O_FLAG_HIGHEST_JVM="-O2 -Oy-" |
|
699 C_O_FLAG_HIGHEST="-O2" |
|
700 C_O_FLAG_HI="-O1" |
|
701 C_O_FLAG_NORM="-O1" |
|
702 C_O_FLAG_DEBUG="-Od" |
|
703 C_O_FLAG_DEBUG_JVM="" |
|
704 C_O_FLAG_NONE="-Od" |
|
705 C_O_FLAG_SIZE="-Os" |
|
706 fi |
|
707 CXX_O_FLAG_HIGHEST_JVM="$C_O_FLAG_HIGHEST_JVM" |
|
708 CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST" |
|
709 CXX_O_FLAG_HI="$C_O_FLAG_HI" |
|
710 CXX_O_FLAG_NORM="$C_O_FLAG_NORM" |
|
711 CXX_O_FLAG_DEBUG="$C_O_FLAG_DEBUG" |
|
712 CXX_O_FLAG_DEBUG_JVM="$C_O_FLAG_DEBUG_JVM" |
|
713 CXX_O_FLAG_NONE="$C_O_FLAG_NONE" |
|
714 CXX_O_FLAG_SIZE="$C_O_FLAG_SIZE" |
|
715 fi |
|
716 |
|
717 # Adjust optimization flags according to debug level. |
|
718 case $DEBUG_LEVEL in |
|
719 release ) |
|
720 # no adjustment |
|
721 ;; |
|
722 fastdebug ) |
|
723 # Not quite so much optimization |
|
724 C_O_FLAG_HI="$C_O_FLAG_NORM" |
|
725 CXX_O_FLAG_HI="$CXX_O_FLAG_NORM" |
|
726 ;; |
|
727 slowdebug ) |
|
728 # Disable optimization |
|
729 C_O_FLAG_HIGHEST_JVM="$C_O_FLAG_DEBUG_JVM" |
|
730 C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG" |
|
731 C_O_FLAG_HI="$C_O_FLAG_DEBUG" |
|
732 C_O_FLAG_NORM="$C_O_FLAG_DEBUG" |
|
733 C_O_FLAG_SIZE="$C_O_FLAG_DEBUG" |
|
734 CXX_O_FLAG_HIGHEST_JVM="$CXX_O_FLAG_DEBUG_JVM" |
|
735 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG" |
|
736 CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG" |
|
737 CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG" |
|
738 CXX_O_FLAG_SIZE="$CXX_O_FLAG_DEBUG" |
|
739 ;; |
|
740 esac |
|
741 |
|
742 AC_SUBST(C_O_FLAG_HIGHEST_JVM) |
|
743 AC_SUBST(C_O_FLAG_HIGHEST) |
|
744 AC_SUBST(C_O_FLAG_HI) |
|
745 AC_SUBST(C_O_FLAG_NORM) |
|
746 AC_SUBST(C_O_FLAG_DEBUG) |
|
747 AC_SUBST(C_O_FLAG_NONE) |
|
748 AC_SUBST(C_O_FLAG_SIZE) |
|
749 AC_SUBST(CXX_O_FLAG_HIGHEST_JVM) |
|
750 AC_SUBST(CXX_O_FLAG_HIGHEST) |
|
751 AC_SUBST(CXX_O_FLAG_HI) |
|
752 AC_SUBST(CXX_O_FLAG_NORM) |
|
753 AC_SUBST(CXX_O_FLAG_DEBUG) |
|
754 AC_SUBST(CXX_O_FLAG_NONE) |
|
755 AC_SUBST(CXX_O_FLAG_SIZE) |
|
756 ]) |
315 ]) |
757 |
316 |
758 |
317 |
759 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], |
318 AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], |
760 [ |
319 [ |
1007 fi |
585 fi |
1008 fi |
586 fi |
1009 |
587 |
1010 |
588 |
1011 # Set some additional per-OS defines. |
589 # Set some additional per-OS defines. |
1012 if test "x$OPENJDK_$1_OS" = xlinux; then |
590 if test "x$FLAGS_OS" = xlinux; then |
1013 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DLINUX" |
591 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DLINUX" |
1014 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -pipe $PICFLAG -fno-rtti -fno-exceptions \ |
592 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -pipe $PICFLAG -fno-rtti -fno-exceptions \ |
1015 -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer" |
593 -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer" |
1016 elif test "x$OPENJDK_$1_OS" = xsolaris; then |
594 elif test "x$FLAGS_OS" = xsolaris; then |
1017 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSOLARIS" |
595 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSOLARIS" |
1018 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -template=no%extdef -features=no%split_init \ |
596 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -template=no%extdef -features=no%split_init \ |
1019 -D_Crun_inline_placement -library=stlport4 $PICFLAG -mt -features=no%except" |
597 -D_Crun_inline_placement -library=stlport4 $PICFLAG -mt -features=no%except" |
1020 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
598 elif test "x$FLAGS_OS" = xmacosx; then |
1021 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
599 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
1022 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_ALLBSD_SOURCE" |
600 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_ALLBSD_SOURCE" |
1023 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE" |
601 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE" |
1024 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \ |
602 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \ |
1025 -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \ |
603 -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \ |
1026 -fno-omit-frame-pointer" |
604 -fno-omit-frame-pointer" |
1027 elif test "x$OPENJDK_$1_OS" = xaix; then |
605 elif test "x$FLAGS_OS" = xaix; then |
1028 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX" |
606 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX" |
1029 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \ |
607 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \ |
1030 -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \ |
608 -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \ |
1031 -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno" |
609 -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno" |
1032 # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows. |
610 # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows. |
1033 # Hotspot now overflows its 64K TOC (currently only for debug), |
611 # Hotspot now overflows its 64K TOC (currently only for debug), |
1034 # so for debug we build with '-qpic=large -bbigtoc'. |
612 # so for debug we build with '-qpic=large -bbigtoc'. |
1035 if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then |
613 if test "x$DEBUG_LEVEL" = xslowdebug || test "x$DEBUG_LEVEL" = xfastdebug; then |
1036 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qpic=large" |
614 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qpic=large" |
1037 fi |
615 fi |
1038 elif test "x$OPENJDK_$1_OS" = xbsd; then |
616 elif test "x$FLAGS_OS" = xbsd; then |
1039 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE" |
617 $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE" |
1040 elif test "x$OPENJDK_$1_OS" = xwindows; then |
618 elif test "x$FLAGS_OS" = xwindows; then |
1041 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_" |
619 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_" |
1042 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -nologo -W3 -MD -MP" |
620 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -nologo -W3 -MD -MP" |
1043 fi |
621 fi |
1044 |
622 |
1045 # Set some additional per-CPU defines. |
623 # Set some additional per-CPU defines. |
1046 if test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xwindows-x86; then |
624 if test "x$FLAGS_OS-$FLAGS_CPU" = xwindows-x86; then |
1047 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -arch:IA32" |
625 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -arch:IA32" |
1048 elif test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xsolaris-sparcv9; then |
626 elif test "x$FLAGS_OS-$FLAGS_CPU" = xsolaris-sparcv9; then |
1049 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -xarch=sparc" |
627 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -xarch=sparc" |
1050 elif test "x$OPENJDK_$1_CPU" = xppc64; then |
628 elif test "x$FLAGS_CPU" = xppc64; then |
1051 if test "x$OPENJDK_$1_OS" = xlinux; then |
629 if test "x$FLAGS_OS" = xlinux; then |
1052 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string" |
630 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string" |
1053 # fixes `relocation truncated to fit' error for gcc 4.1. |
631 # fixes `relocation truncated to fit' error for gcc 4.1. |
1054 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mminimal-toc" |
632 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mminimal-toc" |
1055 # Use ppc64 instructions, but schedule for power5 |
633 # Use ppc64 instructions, but schedule for power5 |
1056 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=powerpc64 -mtune=power5" |
634 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=powerpc64 -mtune=power5" |
1057 elif test "x$OPENJDK_$1_OS" = xaix; then |
635 elif test "x$FLAGS_OS" = xaix; then |
1058 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qarch=ppc64" |
636 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qarch=ppc64" |
1059 fi |
637 fi |
1060 elif test "x$OPENJDK_$1_CPU" = xppc64le; then |
638 elif test "x$FLAGS_CPU" = xppc64le; then |
1061 if test "x$OPENJDK_$1_OS" = xlinux; then |
639 if test "x$FLAGS_OS" = xlinux; then |
1062 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string" |
640 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string" |
1063 # Little endian machine uses ELFv2 ABI. |
641 # Little endian machine uses ELFv2 ABI. |
1064 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DABI_ELFv2" |
642 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DABI_ELFv2" |
1065 # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI. |
643 # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI. |
1066 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=power8 -mtune=power8" |
644 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=power8 -mtune=power8" |
1067 fi |
645 fi |
1068 elif test "x$OPENJDK_$1_CPU" = xs390x; then |
646 elif test "x$FLAGS_CPU" = xs390x; then |
1069 if test "x$OPENJDK_$1_OS" = xlinux; then |
647 if test "x$FLAGS_OS" = xlinux; then |
1070 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mbackchain -march=z10" |
648 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mbackchain -march=z10" |
1071 fi |
649 fi |
1072 fi |
650 fi |
1073 |
651 |
1074 if test "x$OPENJDK_$1_CPU_ENDIAN" = xlittle; then |
652 if test "x$FLAGS_CPU_ENDIAN" = xlittle; then |
1075 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DVM_LITTLE_ENDIAN" |
653 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DVM_LITTLE_ENDIAN" |
1076 fi |
654 fi |
1077 |
655 |
1078 if test "x$OPENJDK_$1_CPU_BITS" = x64; then |
656 if test "x$FLAGS_CPU_BITS" = x64; then |
1079 if test "x$OPENJDK_$1_OS" != xsolaris && test "x$OPENJDK_$1_OS" != xaix; then |
657 if test "x$FLAGS_OS" != xsolaris && test "x$FLAGS_OS" != xaix; then |
1080 # Solaris does not have _LP64=1 in the old build. |
658 # Solaris does not have _LP64=1 in the old build. |
1081 # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it. |
659 # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it. |
1082 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_LP64=1" |
660 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_LP64=1" |
1083 fi |
661 fi |
1084 fi |
662 fi |
1085 |
663 |
1086 # Set $2JVM_CFLAGS warning handling |
664 # Set $2JVM_CFLAGS warning handling |
1087 if test "x$OPENJDK_$1_OS" = xlinux; then |
665 if test "x$FLAGS_OS" = xlinux; then |
1088 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \ |
666 $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \ |
1089 -Wunused-value -Woverloaded-virtual" |
667 -Wunused-value -Woverloaded-virtual" |
1090 |
668 |
1091 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
669 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
1092 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8], PREFIX: $2, |
670 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8], PREFIX: $2, |
1189 |
767 |
1190 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
768 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
1191 LDFLAGS_MICROSOFT="-nologo -opt:ref" |
769 LDFLAGS_MICROSOFT="-nologo -opt:ref" |
1192 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no" |
770 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no" |
1193 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000" |
771 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000" |
1194 if test "x$OPENJDK_$1_CPU_BITS" = "x32"; then |
772 if test "x$FLAGS_CPU_BITS" = "x32"; then |
1195 LDFLAGS_SAFESH="-safeseh" |
773 LDFLAGS_SAFESH="-safeseh" |
1196 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SAFESH" |
774 $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SAFESH" |
1197 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SAFESH" |
775 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SAFESH" |
1198 # NOTE: Old build added -machine. Probably not needed. |
776 # NOTE: Old build added -machine. Probably not needed. |
1199 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:I386" |
777 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:I386" |
1200 else |
778 else |
1201 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:AMD64" |
779 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:AMD64" |
1202 fi |
780 fi |
1203 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
781 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
1204 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC" |
782 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC" |
1205 if test "x$OPENJDK_$1_OS" = xmacosx; then |
783 if test "x$FLAGS_OS" = xmacosx; then |
1206 # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead. |
784 # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead. |
1207 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." |
785 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." |
1208 fi |
786 fi |
1209 elif test "x$TOOLCHAIN_TYPE" = xgcc; then |
787 elif test "x$TOOLCHAIN_TYPE" = xgcc; then |
1210 # If this is a --hash-style=gnu system, use --hash-style=both, why? |
788 # If this is a --hash-style=gnu system, use --hash-style=both, why? |
1212 if test -n "$HAS_GNU_HASH"; then |
790 if test -n "$HAS_GNU_HASH"; then |
1213 $2LDFLAGS_HASH_STYLE="-Wl,--hash-style=both" |
791 $2LDFLAGS_HASH_STYLE="-Wl,--hash-style=both" |
1214 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} [$]$2LDFLAGS_HASH_STYLE" |
792 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} [$]$2LDFLAGS_HASH_STYLE" |
1215 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS [$]$2LDFLAGS_HASH_STYLE" |
793 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS [$]$2LDFLAGS_HASH_STYLE" |
1216 fi |
794 fi |
1217 if test "x$OPENJDK_$1_OS" = xmacosx; then |
795 if test "x$FLAGS_OS" = xmacosx; then |
1218 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." |
796 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." |
1219 fi |
797 fi |
1220 if test "x$OPENJDK_$1_OS" = xlinux; then |
798 if test "x$FLAGS_OS" = xlinux; then |
1221 # And since we now know that the linker is gnu, then add -z defs, to forbid |
799 # And since we now know that the linker is gnu, then add -z defs, to forbid |
1222 # undefined symbols in object files. |
800 # undefined symbols in object files. |
1223 LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs" |
801 LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs" |
1224 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM" |
802 $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM" |
1225 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM" |
803 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM" |
1226 LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack" |
804 LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack" |
1227 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK" |
805 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK" |
1228 if test "x$OPENJDK_$1_CPU" = xx86; then |
806 if test "x$FLAGS_CPU" = xx86; then |
1229 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -march=i586" |
807 $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -march=i586" |
1230 fi |
808 fi |
1231 case $DEBUG_LEVEL in |
809 case $DEBUG_LEVEL in |
1232 release ) |
810 release ) |
1233 # tell linker to optimize libraries. |
811 # tell linker to optimize libraries. |
1345 $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc" |
923 $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc" |
1346 fi |
924 fi |
1347 |
925 |
1348 fi |
926 fi |
1349 |
927 |
1350 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2JAVA_BASE_LDFLAGS}" |
928 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2JAVA_BASE_LDFLAGS}" |
1351 |
929 |
1352 # Set $2JVM_LIBS (per os) |
930 # Set $2JVM_LIBS (per os) |
1353 if test "x$OPENJDK_$1_OS" = xlinux; then |
931 if test "x$FLAGS_OS" = xlinux; then |
1354 $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread" |
932 $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread" |
1355 elif test "x$OPENJDK_$1_OS" = xsolaris; then |
933 elif test "x$FLAGS_OS" = xsolaris; then |
1356 # FIXME: This hard-coded path is not really proper. |
934 # FIXME: This hard-coded path is not really proper. |
1357 if test "x$OPENJDK_$1_CPU" = xx86_64; then |
935 if test "x$FLAGS_CPU" = xx86_64; then |
1358 $2SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1" |
936 $2SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1" |
1359 elif test "x$OPENJDK_$1_CPU" = xsparcv9; then |
937 elif test "x$FLAGS_CPU" = xsparcv9; then |
1360 $2SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1" |
938 $2SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1" |
1361 fi |
939 fi |
1362 $2JVM_LIBS="[$]$2JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \ |
940 $2JVM_LIBS="[$]$2JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \ |
1363 -lthread -ldoor -lc -ldemangle -lnsl -lrt" |
941 -lthread -ldoor -lc -ldemangle -lnsl -lrt" |
1364 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
942 elif test "x$FLAGS_OS" = xmacosx; then |
1365 $2JVM_LIBS="[$]$2JVM_LIBS -lm" |
943 $2JVM_LIBS="[$]$2JVM_LIBS -lm" |
1366 elif test "x$OPENJDK_$1_OS" = xaix; then |
944 elif test "x$FLAGS_OS" = xaix; then |
1367 $2JVM_LIBS="[$]$2JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread" |
945 $2JVM_LIBS="[$]$2JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread" |
1368 elif test "x$OPENJDK_$1_OS" = xbsd; then |
946 elif test "x$FLAGS_OS" = xbsd; then |
1369 $2JVM_LIBS="[$]$2JVM_LIBS -lm" |
947 $2JVM_LIBS="[$]$2JVM_LIBS -lm" |
1370 elif test "x$OPENJDK_$1_OS" = xwindows; then |
948 elif test "x$FLAGS_OS" = xwindows; then |
1371 $2JVM_LIBS="[$]$2JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \ |
949 $2JVM_LIBS="[$]$2JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \ |
1372 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \ |
950 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \ |
1373 wsock32.lib winmm.lib version.lib psapi.lib" |
951 wsock32.lib winmm.lib version.lib psapi.lib" |
1374 fi |
952 fi |
1375 |
953 |
1376 # Set $2JVM_ASFLAGS |
954 # Set $2JVM_ASFLAGS |
1377 if test "x$OPENJDK_$1_OS" = xlinux; then |
955 if test "x$FLAGS_OS" = xlinux; then |
1378 if test "x$OPENJDK_$1_CPU" = xx86; then |
956 if test "x$FLAGS_CPU" = xx86; then |
1379 $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586" |
957 $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586" |
1380 fi |
958 fi |
1381 elif test "x$OPENJDK_$1_OS" = xmacosx; then |
959 elif test "x$FLAGS_OS" = xmacosx; then |
1382 $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16" |
960 $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16" |
1383 fi |
961 fi |
1384 |
962 |
1385 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2EXTRA_LDFLAGS_JDK}" |
963 $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2EXTRA_LDFLAGS_JDK}" |
1386 |
964 |