114 -d \"JDK_FVER=\$(JDK_MINOR_VERSION),\$(JDK_MICRO_VERSION),\$(if \$(JDK_UPDATE_VERSION),\$(JDK_UPDATE_VERSION),0),\$(COOKED_BUILD_NUMBER)\"" |
114 -d \"JDK_FVER=\$(JDK_MINOR_VERSION),\$(JDK_MICRO_VERSION),\$(if \$(JDK_UPDATE_VERSION),\$(JDK_UPDATE_VERSION),0),\$(COOKED_BUILD_NUMBER)\"" |
115 fi |
115 fi |
116 AC_SUBST(RC_FLAGS) |
116 AC_SUBST(RC_FLAGS) |
117 |
117 |
118 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
118 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
119 # FIXME: likely bug, should be CCXXFLAGS_JDK? or one for C or CXX. |
119 # silence copyright notice and other headers. |
120 CCXXFLAGS="$CCXXFLAGS -nologo" |
120 COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo" |
121 fi |
121 fi |
122 |
122 |
123 if test "x$SYSROOT" != "x"; then |
123 if test "x$SYSROOT" != "x"; then |
124 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
124 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
125 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
125 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
126 # Solaris Studio does not have a concept of sysroot. Instead we must |
126 # Solaris Studio does not have a concept of sysroot. Instead we must |
127 # make sure the default include and lib dirs are appended to each |
127 # make sure the default include and lib dirs are appended to each |
128 # compile and link command line. |
128 # compile and link command line. |
129 SYSROOT_CFLAGS="-I$SYSROOT/usr/include" |
129 SYSROOT_CFLAGS="-I$SYSROOT/usr/include" |
130 SYSROOT_LDFLAGS="-L$SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \ |
130 SYSROOT_LDFLAGS="-L$SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \ |
131 -L$SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR \ |
131 -L$SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR \ |
132 -L$SYSROOT/usr/ccs/lib$OPENJDK_TARGET_CPU_ISADIR" |
132 -L$SYSROOT/usr/ccs/lib$OPENJDK_TARGET_CPU_ISADIR" |
311 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
312 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
312 CFLAGS_DEBUG_SYMBOLS="-g" |
313 CFLAGS_DEBUG_SYMBOLS="-g" |
313 CXXFLAGS_DEBUG_SYMBOLS="-g" |
314 CXXFLAGS_DEBUG_SYMBOLS="-g" |
314 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
315 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
315 CFLAGS_DEBUG_SYMBOLS="-g -xs" |
316 CFLAGS_DEBUG_SYMBOLS="-g -xs" |
|
317 # FIXME: likely a bug, this disables debug symbols rather than enables them |
316 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" |
318 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" |
317 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
319 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
318 CFLAGS_DEBUG_SYMBOLS="-g" |
320 CFLAGS_DEBUG_SYMBOLS="-g" |
319 CXXFLAGS_DEBUG_SYMBOLS="-g" |
321 CXXFLAGS_DEBUG_SYMBOLS="-g" |
320 fi |
322 fi |
321 AC_SUBST(CFLAGS_DEBUG_SYMBOLS) |
323 AC_SUBST(CFLAGS_DEBUG_SYMBOLS) |
322 AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS) |
324 AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS) |
|
325 |
|
326 # bounds, memory and behavior checking options |
|
327 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
328 case $DEBUG_LEVEL in |
|
329 release ) |
|
330 # no adjustment |
|
331 ;; |
|
332 fastdebug ) |
|
333 # Add compile time bounds checks. |
|
334 CFLAGS_DEBUG_OPTIONS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" |
|
335 CXXFLAGS_DEBUG_OPTIONS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1" |
|
336 ;; |
|
337 slowdebug ) |
|
338 # Add runtime bounds checks and symbol info. |
|
339 CFLAGS_DEBUG_OPTIONS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all --param ssp-buffer-size=1" |
|
340 CXXFLAGS_DEBUG_OPTIONS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all --param ssp-buffer-size=1" |
|
341 if test "x$HAS_CFLAG_DETECT_UNDEFINED_BEHAVIOR" = "xtrue"; then |
|
342 CFLAGS_DEBUG_OPTIONS="$CFLAGS_DEBUG_OPTIONS $CFLAG_DETECT_UNDEFINED_BEHAVIOR_FLAG" |
|
343 CXXFLAGS_DEBUG_OPTIONS="$CXXFLAGS_DEBUG_OPTIONS $CFLAG_DETECT_UNDEFINED_BEHAVIOR_FLAG" |
|
344 fi |
|
345 ;; |
|
346 esac |
|
347 fi |
|
348 AC_SUBST(CFLAGS_DEBUG_OPTIONS) |
|
349 AC_SUBST(CXXFLAGS_DEBUG_OPTIONS) |
323 |
350 |
324 # Optimization levels |
351 # Optimization levels |
325 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
352 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
326 CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil" |
353 CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil" |
327 |
354 |
328 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then |
355 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then |
329 # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global? |
356 # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global? |
330 C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr" |
357 C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr" |
331 C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr" |
358 C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr" |
332 C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr" |
359 C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr" |
|
360 C_O_FLAG_DEBUG="-xregs=no%frameptr" |
333 C_O_FLAG_NONE="-xregs=no%frameptr" |
361 C_O_FLAG_NONE="-xregs=no%frameptr" |
334 CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr" |
362 CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr" |
335 CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr" |
363 CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr" |
336 CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr" |
364 CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr" |
|
365 CXX_O_FLAG_DEBUG="-xregs=no%frameptr" |
337 CXX_O_FLAG_NONE="-xregs=no%frameptr" |
366 CXX_O_FLAG_NONE="-xregs=no%frameptr" |
338 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then |
367 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then |
339 C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium" |
368 C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium" |
340 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium" |
369 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium" |
341 fi |
370 fi |
342 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then |
371 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then |
343 C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra" |
372 C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra" |
344 C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
373 C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
345 C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
374 C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0" |
|
375 C_O_FLAG_DEBUG="" |
346 C_O_FLAG_NONE="" |
376 C_O_FLAG_NONE="" |
347 CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra" |
377 CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra" |
348 CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
378 CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
349 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
379 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" |
|
380 C_O_FLAG_DEBUG="" |
350 CXX_O_FLAG_NONE="" |
381 CXX_O_FLAG_NONE="" |
351 fi |
382 fi |
352 else |
383 else |
353 # The remaining toolchains share opt flags between CC and CXX; |
384 # The remaining toolchains share opt flags between CC and CXX; |
354 # setup for C and duplicate afterwards. |
385 # setup for C and duplicate afterwards. |
357 # On MacOSX we optimize for size, something |
388 # On MacOSX we optimize for size, something |
358 # we should do for all platforms? |
389 # we should do for all platforms? |
359 C_O_FLAG_HIGHEST="-Os" |
390 C_O_FLAG_HIGHEST="-Os" |
360 C_O_FLAG_HI="-Os" |
391 C_O_FLAG_HI="-Os" |
361 C_O_FLAG_NORM="-Os" |
392 C_O_FLAG_NORM="-Os" |
362 C_O_FLAG_NONE="" |
|
363 else |
393 else |
364 C_O_FLAG_HIGHEST="-O3" |
394 C_O_FLAG_HIGHEST="-O3" |
365 C_O_FLAG_HI="-O3" |
395 C_O_FLAG_HI="-O3" |
366 C_O_FLAG_NORM="-O2" |
396 C_O_FLAG_NORM="-O2" |
367 C_O_FLAG_NONE="-O0" |
|
368 fi |
397 fi |
|
398 if test "x$HAS_CFLAG_OPTIMIZE_DEBUG" = "xtrue"; then |
|
399 C_O_FLAG_DEBUG="$CFLAG_OPTIMIZE_DEBUG_FLAG" |
|
400 else |
|
401 C_O_FLAG_DEBUG="-O0" |
|
402 fi |
|
403 C_O_FLAG_NONE="-O0" |
369 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
404 elif test "x$TOOLCHAIN_TYPE" = xclang; then |
370 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
405 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
371 # On MacOSX we optimize for size, something |
406 # On MacOSX we optimize for size, something |
372 # we should do for all platforms? |
407 # we should do for all platforms? |
373 C_O_FLAG_HIGHEST="-Os" |
408 C_O_FLAG_HIGHEST="-Os" |
374 C_O_FLAG_HI="-Os" |
409 C_O_FLAG_HI="-Os" |
375 C_O_FLAG_NORM="-Os" |
410 C_O_FLAG_NORM="-Os" |
376 C_O_FLAG_NONE="" |
|
377 else |
411 else |
378 C_O_FLAG_HIGHEST="-O3" |
412 C_O_FLAG_HIGHEST="-O3" |
379 C_O_FLAG_HI="-O3" |
413 C_O_FLAG_HI="-O3" |
380 C_O_FLAG_NORM="-O2" |
414 C_O_FLAG_NORM="-O2" |
381 C_O_FLAG_NONE="-O0" |
|
382 fi |
415 fi |
|
416 C_O_FLAG_DEBUG="-O0" |
|
417 C_O_FLAG_NONE="-O0" |
383 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
418 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
384 C_O_FLAG_HIGHEST="-O3" |
419 C_O_FLAG_HIGHEST="-O3" |
385 C_O_FLAG_HI="-O3 -qstrict" |
420 C_O_FLAG_HI="-O3 -qstrict" |
386 C_O_FLAG_NORM="-O2" |
421 C_O_FLAG_NORM="-O2" |
387 C_O_FLAG_NONE="" |
422 C_O_FLAG_DEBUG="-qnoopt" |
|
423 C_O_FLAG_NONE="-qnoop" |
388 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
424 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
389 C_O_FLAG_HIGHEST="-O2" |
425 C_O_FLAG_HIGHEST="-O2" |
390 C_O_FLAG_HI="-O1" |
426 C_O_FLAG_HI="-O1" |
391 C_O_FLAG_NORM="-O1" |
427 C_O_FLAG_NORM="-O1" |
|
428 C_O_FLAG_DEBUG="-Od" |
392 C_O_FLAG_NONE="-Od" |
429 C_O_FLAG_NONE="-Od" |
393 fi |
430 fi |
394 CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST" |
431 CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST" |
395 CXX_O_FLAG_HI="$C_O_FLAG_HI" |
432 CXX_O_FLAG_HI="$C_O_FLAG_HI" |
396 CXX_O_FLAG_NORM="$C_O_FLAG_NORM" |
433 CXX_O_FLAG_NORM="$C_O_FLAG_NORM" |
|
434 CXX_O_FLAG_DEBUG="$C_O_FLAG_DEBUG" |
397 CXX_O_FLAG_NONE="$C_O_FLAG_NONE" |
435 CXX_O_FLAG_NONE="$C_O_FLAG_NONE" |
398 fi |
436 fi |
|
437 |
|
438 # Adjust optimization flags according to debug level. |
|
439 case $DEBUG_LEVEL in |
|
440 release ) |
|
441 # no adjustment |
|
442 ;; |
|
443 fastdebug ) |
|
444 # Not quite so much optimization |
|
445 C_O_FLAG_HI="$C_O_FLAG_NORM" |
|
446 CXX_O_FLAG_HI="$CXX_O_FLAG_NORM" |
|
447 ;; |
|
448 slowdebug ) |
|
449 # Disable optimization |
|
450 C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG" |
|
451 C_O_FLAG_HI="$C_O_FLAG_DEBUG" |
|
452 C_O_FLAG_NORM="$C_O_FLAG_DEBUG" |
|
453 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG" |
|
454 CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG" |
|
455 CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG" |
|
456 ;; |
|
457 esac |
399 |
458 |
400 AC_SUBST(C_O_FLAG_HIGHEST) |
459 AC_SUBST(C_O_FLAG_HIGHEST) |
401 AC_SUBST(C_O_FLAG_HI) |
460 AC_SUBST(C_O_FLAG_HI) |
402 AC_SUBST(C_O_FLAG_NORM) |
461 AC_SUBST(C_O_FLAG_NORM) |
|
462 AC_SUBST(C_O_FLAG_DEBUG) |
403 AC_SUBST(C_O_FLAG_NONE) |
463 AC_SUBST(C_O_FLAG_NONE) |
404 AC_SUBST(CXX_O_FLAG_HIGHEST) |
464 AC_SUBST(CXX_O_FLAG_HIGHEST) |
405 AC_SUBST(CXX_O_FLAG_HI) |
465 AC_SUBST(CXX_O_FLAG_HI) |
406 AC_SUBST(CXX_O_FLAG_NORM) |
466 AC_SUBST(CXX_O_FLAG_NORM) |
|
467 AC_SUBST(CXX_O_FLAG_DEBUG) |
407 AC_SUBST(CXX_O_FLAG_NONE) |
468 AC_SUBST(CXX_O_FLAG_NONE) |
408 ]) |
469 ]) |
409 |
470 |
410 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], |
471 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], |
411 [ |
472 [ |
475 ppc ) |
537 ppc ) |
476 # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
538 # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing |
477 CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" |
539 CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" |
478 ;; |
540 ;; |
479 * ) |
541 * ) |
480 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer" |
542 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer" |
481 CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" |
543 CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" |
482 ;; |
544 ;; |
483 esac |
545 esac |
484 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
546 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
485 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
547 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" |
486 if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then |
548 if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then |
487 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" |
549 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" |
488 CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE" |
550 CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE" |
489 fi |
551 fi |
490 |
552 |
491 CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal" |
553 CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal" |
492 CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib" |
554 CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib" |
493 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
555 elif test "x$TOOLCHAIN_TYPE" = xxlc; then |
494 CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
556 CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
495 CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
557 CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" |
496 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
558 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
497 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ |
559 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ |
498 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ |
560 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ |
499 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
561 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ |
500 -DWIN32 -DIAL" |
562 -DWIN32 -DIAL" |
501 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then |
563 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then |
502 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
564 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64" |
503 else |
565 else |
504 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86" |
566 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86" |
505 fi |
567 fi |
506 fi |
568 fi |
507 |
569 |
508 ############################################################################### |
570 ############################################################################### |
509 |
571 |
510 # Adjust flags according to debug level. |
572 # Adjust flags according to debug level. |
511 case $DEBUG_LEVEL in |
573 case $DEBUG_LEVEL in |
512 fastdebug ) |
574 fastdebug | slowdebug ) |
513 CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS" |
575 CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS" |
514 CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS" |
576 CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS" |
515 C_O_FLAG_HI="$C_O_FLAG_NORM" |
|
516 C_O_FLAG_NORM="$C_O_FLAG_NORM" |
|
517 CXX_O_FLAG_HI="$CXX_O_FLAG_NORM" |
|
518 CXX_O_FLAG_NORM="$CXX_O_FLAG_NORM" |
|
519 JAVAC_FLAGS="$JAVAC_FLAGS -g" |
577 JAVAC_FLAGS="$JAVAC_FLAGS -g" |
520 ;; |
578 ;; |
521 slowdebug ) |
579 release ) |
522 CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS" |
580 ;; |
523 CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS" |
581 * ) |
524 C_O_FLAG_HI="$C_O_FLAG_NONE" |
582 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL]) |
525 C_O_FLAG_NORM="$C_O_FLAG_NONE" |
|
526 CXX_O_FLAG_HI="$CXX_O_FLAG_NONE" |
|
527 CXX_O_FLAG_NORM="$CXX_O_FLAG_NONE" |
|
528 JAVAC_FLAGS="$JAVAC_FLAGS -g" |
|
529 ;; |
583 ;; |
530 esac |
584 esac |
531 |
585 |
532 # Setup LP64 |
586 # Setup LP64 |
533 CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64" |
587 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $ADD_LP64" |
534 |
588 |
535 # Set some common defines. These works for all compilers, but assume |
589 # Set some common defines. These works for all compilers, but assume |
536 # -D is universally accepted. |
590 # -D is universally accepted. |
537 |
591 |
538 # Setup endianness |
592 # Setup endianness |
541 # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN |
595 # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN |
542 # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h). |
596 # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h). |
543 # Note: -Dmacro is the same as #define macro 1 |
597 # Note: -Dmacro is the same as #define macro 1 |
544 # -Dmacro= is the same as #define macro |
598 # -Dmacro= is the same as #define macro |
545 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
599 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
546 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
600 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN=" |
547 else |
601 else |
548 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
602 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN" |
549 fi |
603 fi |
550 else |
604 else |
551 # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they |
605 # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they |
552 # are defined in the system? |
606 # are defined in the system? |
553 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
607 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
554 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN=" |
608 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN=" |
555 else |
609 else |
556 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN" |
610 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN" |
557 fi |
611 fi |
558 fi |
612 fi |
559 |
613 |
560 # Setup target OS define. Use OS target name but in upper case. |
614 # Setup target OS define. Use OS target name but in upper case. |
561 OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
615 OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
562 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE" |
616 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE" |
563 |
617 |
564 # Setup target CPU |
618 # Setup target CPU |
565 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY" |
619 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY" |
566 |
620 |
567 # Setup debug/release defines |
621 # Setup debug/release defines |
568 if test "x$DEBUG_LEVEL" = xrelease; then |
622 if test "x$DEBUG_LEVEL" = xrelease; then |
569 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG" |
623 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG" |
570 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
624 if test "x$OPENJDK_TARGET_OS" = xsolaris; then |
571 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED" |
625 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED" |
572 fi |
626 fi |
573 else |
627 else |
574 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG" |
628 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG" |
575 fi |
629 fi |
576 |
630 |
577 # Setup release name |
631 # Setup release name |
578 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'" |
632 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'" |
579 |
633 |
580 |
634 |
581 # Set some additional per-OS defines. |
635 # Set some additional per-OS defines. |
582 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
636 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
583 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
637 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" |
584 elif test "x$OPENJDK_TARGET_OS" = xaix; then |
638 elif test "x$OPENJDK_TARGET_OS" = xaix; then |
585 # FIXME: PPC64 should not be here. |
639 # FIXME: PPC64 should not be here. |
586 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DPPC64" |
640 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DPPC64" |
587 elif test "x$OPENJDK_TARGET_OS" = xbsd; then |
641 elif test "x$OPENJDK_TARGET_OS" = xbsd; then |
588 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_ALLBSD_SOURCE" |
642 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE" |
589 fi |
643 fi |
590 |
644 |
591 # Additional macosx handling |
645 # Additional macosx handling |
592 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
646 if test "x$OPENJDK_TARGET_OS" = xmacosx; then |
593 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
647 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
594 # FIXME: This needs to be exported in spec.gmk due to closed legacy code. |
648 # FIXME: This needs to be exported in spec.gmk due to closed legacy code. |
595 # FIXME: clean this up, and/or move it elsewhere. |
649 # FIXME: clean this up, and/or move it elsewhere. |
596 |
650 |
597 # Setting these parameters makes it an error to link to macosx APIs that are |
651 # Setting these parameters makes it an error to link to macosx APIs that are |
598 # newer than the given OS version and makes the linked binaries compatible |
652 # newer than the given OS version and makes the linked binaries compatible |
599 # even if built on a newer version of the OS. |
653 # even if built on a newer version of the OS. |
600 # The expected format is X.Y.Z |
654 # The expected format is X.Y.Z |
601 MACOSX_VERSION_MIN=10.7.0 |
655 MACOSX_VERSION_MIN=10.7.0 |
602 AC_SUBST(MACOSX_VERSION_MIN) |
656 AC_SUBST(MACOSX_VERSION_MIN) |
603 |
657 |
604 # The macro takes the version with no dots, ex: 1070 |
658 # The macro takes the version with no dots, ex: 1070 |
605 # Let the flags variables get resolved in make for easier override on make |
659 # Let the flags variables get resolved in make for easier override on make |
606 # command line. |
660 # command line. |
607 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
661 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
608 LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
662 LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)" |
609 fi |
663 fi |
610 fi |
664 fi |
611 |
665 |
612 # Setup some hard coded includes |
666 # Setup some hard coded includes |
613 CCXXFLAGS_JDK="$CCXXFLAGS_JDK \ |
667 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \ |
614 -I${JDK_OUTPUTDIR}/include \ |
668 -I${JDK_OUTPUTDIR}/include \ |
615 -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \ |
669 -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \ |
616 -I${JDK_TOPDIR}/src/share/javavm/export \ |
670 -I${JDK_TOPDIR}/src/share/javavm/export \ |
617 -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_EXPORT_DIR/javavm/export \ |
671 -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_EXPORT_DIR/javavm/export \ |
618 -I${JDK_TOPDIR}/src/share/native/common \ |
672 -I${JDK_TOPDIR}/src/share/native/common \ |
619 -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common" |
673 -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common" |
620 |
674 |
621 # The shared libraries are compiled using the picflag. |
675 # The shared libraries are compiled using the picflag. |
622 CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
676 CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA" |
623 CXXFLAGS_JDKLIB="$CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA " |
677 CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA " |
624 |
678 |
625 # Executable flags |
679 # Executable flags |
626 CFLAGS_JDKEXE="$CCXXFLAGS_JDK $CFLAGS_JDK" |
680 CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK" |
627 CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK" |
681 CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK" |
628 |
682 |
629 AC_SUBST(CFLAGS_JDKLIB) |
683 AC_SUBST(CFLAGS_JDKLIB) |
630 AC_SUBST(CFLAGS_JDKEXE) |
684 AC_SUBST(CFLAGS_JDKEXE) |
631 AC_SUBST(CXXFLAGS_JDKLIB) |
685 AC_SUBST(CXXFLAGS_JDKLIB) |
632 AC_SUBST(CXXFLAGS_JDKEXE) |
686 AC_SUBST(CXXFLAGS_JDKEXE) |
633 |
687 |
634 # Setup LDFLAGS et al. |
688 # Setup LDFLAGS et al. |
635 # |
689 # |
|
690 |
636 # Now this is odd. The JDK native libraries have to link against libjvm.so |
691 # Now this is odd. The JDK native libraries have to link against libjvm.so |
637 # On 32-bit machines there is normally two distinct libjvm.so:s, client and server. |
692 # On 32-bit machines there is normally two distinct libjvm.so:s, client and server. |
638 # Which should we link to? Are we lucky enough that the binary api to the libjvm.so library |
693 # Which should we link to? Are we lucky enough that the binary api to the libjvm.so library |
639 # is identical for client and server? Yes. Which is picked at runtime (client or server)? |
694 # is identical for client and server? Yes. Which is picked at runtime (client or server)? |
640 # Neither, since the chosen libjvm.so has already been loaded by the launcher, all the following |
695 # Neither, since the chosen libjvm.so has already been loaded by the launcher, all the following |
646 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then |
701 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then |
647 LDFLAGS_JDK="$LDFLAGS_JDK -safeseh" |
702 LDFLAGS_JDK="$LDFLAGS_JDK -safeseh" |
648 fi |
703 fi |
649 # TODO: make -debug optional "--disable-full-debug-symbols" |
704 # TODO: make -debug optional "--disable-full-debug-symbols" |
650 LDFLAGS_JDK="$LDFLAGS_JDK -debug" |
705 LDFLAGS_JDK="$LDFLAGS_JDK -debug" |
651 LDFLAGS_JDKLIB="${LDFLAGS_JDK} -dll -libpath:${JDK_OUTPUTDIR}/lib" |
706 elif test "x$TOOLCHAIN_TYPE" = xgcc; then |
652 LDFLAGS_JDKLIB_SUFFIX="" |
707 # If this is a --hash-style=gnu system, use --hash-style=both, why? |
|
708 # We have previously set HAS_GNU_HASH if this is the case |
|
709 if test -n "$HAS_GNU_HASH"; then |
|
710 LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker --hash-style=both" |
|
711 fi |
|
712 if test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
713 # And since we now know that the linker is gnu, then add -z defs, to forbid |
|
714 # undefined symbols in object files. |
|
715 LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -z -Xlinker defs" |
|
716 case $DEBUG_LEVEL in |
|
717 release ) |
|
718 # tell linker to optimize libraries. |
|
719 # Should this be supplied to the OSS linker as well? |
|
720 LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -O1" |
|
721 ;; |
|
722 slowdebug ) |
|
723 if test "x$HAS_LINKER_NOW" = "xtrue"; then |
|
724 # do relocations at load |
|
725 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG" |
|
726 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG" |
|
727 fi |
|
728 if test "x$HAS_LINKER_RELRO" = "xtrue"; then |
|
729 # mark relocations read only |
|
730 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG" |
|
731 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG" |
|
732 fi |
|
733 ;; |
|
734 fastdebug ) |
|
735 if test "x$HAS_LINKER_RELRO" = "xtrue"; then |
|
736 # mark relocations read only |
|
737 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG" |
|
738 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG" |
|
739 fi |
|
740 ;; |
|
741 * ) |
|
742 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL]) |
|
743 ;; |
|
744 esac |
|
745 fi |
|
746 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
747 LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" |
|
748 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" |
|
749 fi |
|
750 |
|
751 if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then |
|
752 # If undefined behaviour detection is enabled then we need to tell linker. |
|
753 case $DEBUG_LEVEL in |
|
754 release | fastdebug ) |
|
755 ;; |
|
756 slowdebug ) |
|
757 AC_MSG_WARN([$HAS_CFLAG_DETECT_UNDEFINED_BEHAVIOR]) |
|
758 if test "x$HAS_CFLAG_DETECT_UNDEFINED_BEHAVIOR" = "xtrue"; then |
|
759 # enable undefined behaviour checking |
|
760 LDFLAGS_JDK="$LDFLAGS_JDK `$ECHO -n $CFLAG_DETECT_UNDEFINED_BEHAVIOR_FLAG | sed -e "s/[ ]*\([^ ]\+\)/ -Xlinker \1/g"`" |
|
761 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK `$ECHO -n $CFLAG_DETECT_UNDEFINED_BEHAVIOR_FLAG | sed -e "s/[ ]*\([^ ]\+\)/ -Xlinker \1/g"`" |
|
762 fi |
|
763 ;; |
|
764 * ) |
|
765 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL]) |
|
766 ;; |
|
767 esac |
|
768 fi |
|
769 |
|
770 # Customize LDFLAGS for executables |
|
771 |
|
772 LDFLAGS_JDKEXE="${LDFLAGS_JDK}" |
|
773 |
|
774 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
653 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then |
775 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then |
654 LDFLAGS_STACK_SIZE=1048576 |
776 LDFLAGS_STACK_SIZE=1048576 |
655 else |
777 else |
656 LDFLAGS_STACK_SIZE=327680 |
778 LDFLAGS_STACK_SIZE=327680 |
657 fi |
779 fi |
658 LDFLAGS_JDKEXE="${LDFLAGS_JDK} /STACK:$LDFLAGS_STACK_SIZE" |
780 LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE" |
|
781 elif test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
782 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Xlinker --allow-shlib-undefined" |
|
783 fi |
|
784 |
|
785 # Customize LDFLAGS for libs |
|
786 LDFLAGS_JDKLIB="${LDFLAGS_JDK}" |
|
787 |
|
788 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
|
789 LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -dll -libpath:${JDK_OUTPUTDIR}/lib" |
|
790 LDFLAGS_JDKLIB_SUFFIX="" |
659 else |
791 else |
660 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
792 LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS} \ |
661 # If this is a --hash-style=gnu system, use --hash-style=both, why? |
|
662 # We have previously set HAS_GNU_HASH if this is the case |
|
663 if test -n "$HAS_GNU_HASH"; then |
|
664 LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker --hash-style=both " |
|
665 fi |
|
666 if test "x$OPENJDK_TARGET_OS" = xlinux; then |
|
667 # And since we now know that the linker is gnu, then add -z defs, to forbid |
|
668 # undefined symbols in object files. |
|
669 LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -z -Xlinker defs" |
|
670 if test "x$DEBUG_LEVEL" = "xrelease"; then |
|
671 # When building release libraries, tell the linker optimize them. |
|
672 # Should this be supplied to the OSS linker as well? |
|
673 LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -O1" |
|
674 fi |
|
675 fi |
|
676 fi |
|
677 |
|
678 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then |
|
679 LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" |
|
680 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" |
|
681 fi |
|
682 |
|
683 LDFLAGS_JDKLIB="${LDFLAGS_JDK} $SHARED_LIBRARY_FLAGS \ |
|
684 -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}" |
793 -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}" |
685 |
794 |
686 # On some platforms (mac) the linker warns about non existing -L dirs. |
795 # On some platforms (mac) the linker warns about non existing -L dirs. |
687 # Add server first if available. Linking aginst client does not always produce the same results. |
796 # Add server first if available. Linking aginst client does not always produce the same results. |
688 # Only add client dir if client is being built. Add minimal (note not minimal1) if only building minimal1. |
797 # Only add client dir if client is being built. Add minimal (note not minimal1) if only building minimal1. |
725 supports=yes |
829 supports=yes |
726 |
830 |
727 saved_cflags="$CFLAGS" |
831 saved_cflags="$CFLAGS" |
728 CFLAGS="$CFLAGS $1" |
832 CFLAGS="$CFLAGS $1" |
729 AC_LANG_PUSH([C]) |
833 AC_LANG_PUSH([C]) |
730 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [], |
834 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [], |
731 [supports=no]) |
835 [supports=no]) |
732 AC_LANG_POP([C]) |
836 AC_LANG_POP([C]) |
733 CFLAGS="$saved_cflags" |
837 CFLAGS="$saved_cflags" |
734 |
838 |
735 saved_cxxflags="$CXXFLAGS" |
839 saved_cxxflags="$CXXFLAGS" |
736 CXXFLAGS="$CXXFLAG $1" |
840 CXXFLAGS="$CXXFLAG $1" |
737 AC_LANG_PUSH([C++]) |
841 AC_LANG_PUSH([C++]) |
738 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [], |
842 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [], |
739 [supports=no]) |
843 [supports=no]) |
740 AC_LANG_POP([C++]) |
844 AC_LANG_POP([C++]) |
741 CXXFLAGS="$saved_cxxflags" |
845 CXXFLAGS="$saved_cxxflags" |
|
846 |
|
847 AC_MSG_RESULT([$supports]) |
|
848 if test "x$supports" = "xyes" ; then |
|
849 m4_ifval([$2], [$2], [:]) |
|
850 else |
|
851 m4_ifval([$3], [$3], [:]) |
|
852 fi |
|
853 ]) |
|
854 |
|
855 # FLAGS_LINKER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE], |
|
856 # [RUN-IF-FALSE]) |
|
857 # ------------------------------------------------------------ |
|
858 # Check that the linker support an argument |
|
859 AC_DEFUN([FLAGS_LINKER_CHECK_ARGUMENTS], |
|
860 [ |
|
861 AC_MSG_CHECKING([if linker supports "$1"]) |
|
862 supports=yes |
|
863 |
|
864 saved_ldflags="$LDFLAGS" |
|
865 LDFLAGS="$LDFLAGS $1" |
|
866 AC_LANG_PUSH([C]) |
|
867 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])], |
|
868 [], [supports=no]) |
|
869 AC_LANG_POP([C]) |
|
870 LDFLAGS="$saved_ldflags" |
742 |
871 |
743 AC_MSG_RESULT([$supports]) |
872 AC_MSG_RESULT([$supports]) |
744 if test "x$supports" = "xyes" ; then |
873 if test "x$supports" = "xyes" ; then |
745 m4_ifval([$2], [$2], [:]) |
874 m4_ifval([$2], [$2], [:]) |
746 else |
875 else |