189 AR_OUT_OPTION=-out:
190 else
191 # The option used to specify the target .o,.a or .so file.
192 # When compiling, how to specify the to be created object file.
193 CC_OUT_OPTION='-o$(SPACE)'
194 # When linking, how to specify the to be created executable.
195 EXE_OUT_OPTION='-o$(SPACE)'
196 # When linking, how to specify the to be created dynamically linkable library.
197 LD_OUT_OPTION='-o$(SPACE)'
198 # When archiving, how to specify the to be create static archive for object files.
199 AR_OUT_OPTION='rcs$(SPACE)'
200 fi
201 AC_SUBST(CC_OUT_OPTION)
202 AC_SUBST(EXE_OUT_OPTION)
203 AC_SUBST(LD_OUT_OPTION)
204 AC_SUBST(AR_OUT_OPTION)
205
206 # On Windows, we need to set RC flags.
207 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
208 RC_FLAGS="-nologo -l0x409"
209 if test "x$VARIANT" = xOPT; then
210 RC_FLAGS="$RC_FLAGS -DNDEBUG"
211 fi
212
213 # The version variables used to create RC_FLAGS may be overridden
214 # in a custom configure script, or possibly the command line.
215 # Let those variables be expanded at make time in spec.gmk.
216 # The \$ are escaped to the shell, and the $(...) variables
217 # are evaluated by make.
218 RC_FLAGS="$RC_FLAGS \
219 -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
220 -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
221 -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
222 -D\"JDK_VER=\$(VERSION_NUMBER)\" \
223 -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
224 -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
225 -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
226 fi
227 AC_SUBST(RC_FLAGS)
228
229 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
237 ###############################################################################
238 #
239 # How to compile shared libraries.
240 #
241
242 if test "x$TOOLCHAIN_TYPE" = xgcc; then
243 PICFLAG="-fPIC"
244 C_FLAG_REORDER=''
245 CXX_FLAG_REORDER=''
246
247 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
248 # Linking is different on MacOSX
249 if test "x$STATIC_BUILD" = xtrue; then
250 SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
251 else
252 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
253 fi
254 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
255 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
256 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
257 SET_SHARED_LIBRARY_MAPFILE=''
258 else
259 # Default works for linux, might work on other platforms as well.
260 SHARED_LIBRARY_FLAGS='-shared'
261 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
262 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
263 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
264 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
265 fi
266 elif test "x$TOOLCHAIN_TYPE" = xclang; then
267 C_FLAG_REORDER=''
268 CXX_FLAG_REORDER=''
269
270 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
271 # Linking is different on MacOSX
272 PICFLAG=''
273 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
274 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
275 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
276 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
277 SET_SHARED_LIBRARY_MAPFILE=''
278 else
279 # Default works for linux, might work on other platforms as well.
280 PICFLAG='-fPIC'
281 SHARED_LIBRARY_FLAGS='-shared'
282 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
283 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
284 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
285 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
286 fi
287 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
288 PICFLAG="-KPIC"
289 C_FLAG_REORDER='-xF'
290 CXX_FLAG_REORDER='-xF'
291 SHARED_LIBRARY_FLAGS="-G"
292 SET_EXECUTABLE_ORIGIN='-R\$$$$ORIGIN[$]1'
293 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
294 SET_SHARED_LIBRARY_NAME='-h [$]1'
295 SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
296 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
297 PICFLAG="-qpic=large"
298 C_FLAG_REORDER=''
299 CXX_FLAG_REORDER=''
300 SHARED_LIBRARY_FLAGS="-qmkshrobj"
301 SET_EXECUTABLE_ORIGIN=""
302 SET_SHARED_LIBRARY_ORIGIN=''
303 SET_SHARED_LIBRARY_NAME=''
304 SET_SHARED_LIBRARY_MAPFILE=''
305 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
306 PICFLAG=""
307 C_FLAG_REORDER=''
308 CXX_FLAG_REORDER=''
309 SHARED_LIBRARY_FLAGS="-dll"
310 SET_EXECUTABLE_ORIGIN=''
311 SET_SHARED_LIBRARY_ORIGIN=''
312 SET_SHARED_LIBRARY_NAME=''
313 SET_SHARED_LIBRARY_MAPFILE=''
314 fi
315
316 AC_SUBST(C_FLAG_REORDER)
317 AC_SUBST(CXX_FLAG_REORDER)
318 AC_SUBST(SET_EXECUTABLE_ORIGIN)
319 AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
320 AC_SUBST(SET_SHARED_LIBRARY_NAME)
321 AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
322 AC_SUBST(SHARED_LIBRARY_FLAGS)
323
324 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
325 CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
326 CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
327 CFLAGS_JDKLIB_EXTRA='-xstrconst'
328 fi
329 # The (cross) compiler is now configured, we can now test capabilities
330 # of the target platform.
331 ])
332
333 # Documentation on common flags used for solstudio in HIGHEST.
406 CFLAGS_DEBUG_SYMBOLS="-g -xs"
407 # -g0 enables debug symbols without disabling inlining.
408 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
409 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
410 CFLAGS_DEBUG_SYMBOLS="-g"
411 CXXFLAGS_DEBUG_SYMBOLS="-g"
412 fi
413 AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
414 AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
415
416 # bounds, memory and behavior checking options
417 if test "x$TOOLCHAIN_TYPE" = xgcc; then
418 case $DEBUG_LEVEL in
419 release )
420 # no adjustment
421 ;;
422 fastdebug )
423 # no adjustment
424 ;;
425 slowdebug )
426 # Add runtime stack smashing and undefined behavior checks.
427 # Not all versions of gcc support -fstack-protector
428 STACK_PROTECTOR_CFLAG="-fstack-protector-all"
429 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
430
431 CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
432 CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
433 ;;
434 esac
435 fi
436
437 # Optimization levels
438 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
439 CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
440
441 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
442 # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
443 C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
444 C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
445 C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
446 C_O_FLAG_DEBUG="-xregs=no%frameptr"
447 C_O_FLAG_NONE="-xregs=no%frameptr"
448 CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
449 CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
450 CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
451 CXX_O_FLAG_DEBUG="-xregs=no%frameptr"
452 CXX_O_FLAG_NONE="-xregs=no%frameptr"
453 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
454 C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
455 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
456 fi
457 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
458 C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
459 C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
460 C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
461 C_O_FLAG_DEBUG=""
462 C_O_FLAG_NONE=""
463 CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
464 CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
465 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
466 C_O_FLAG_DEBUG=""
467 CXX_O_FLAG_NONE=""
468 fi
469 else
470 # The remaining toolchains share opt flags between CC and CXX;
471 # setup for C and duplicate afterwards.
472 if test "x$TOOLCHAIN_TYPE" = xgcc; then
473 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
474 # On MacOSX we optimize for size, something
475 # we should do for all platforms?
476 C_O_FLAG_HIGHEST="-Os"
477 C_O_FLAG_HI="-Os"
478 C_O_FLAG_NORM="-Os"
479 else
480 C_O_FLAG_HIGHEST="-O3"
481 C_O_FLAG_HI="-O3"
482 C_O_FLAG_NORM="-O2"
483 fi
484 C_O_FLAG_DEBUG="-O0"
485 C_O_FLAG_NONE="-O0"
486 elif test "x$TOOLCHAIN_TYPE" = xclang; then
629 CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
630 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
631 CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
632 CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
633 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
634 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK \
635 -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
636 -DWIN32_LEAN_AND_MEAN \
637 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
638 -D_WINSOCK_DEPRECATED_NO_WARNINGS \
639 -DWIN32 -DIAL"
640 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
641 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
642 else
643 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
644 fi
645 # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
646 # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
647 # studio.
648 if test "x$TOOLCHAIN_VERSION" = "x2010"; then
649 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
650 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
651 fi
652 fi
653
654 ###############################################################################
655
656 # Adjust flags according to debug level.
657 case $DEBUG_LEVEL in
658 fastdebug | slowdebug )
659 CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
660 CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
661 JAVAC_FLAGS="$JAVAC_FLAGS -g"
662 ;;
663 release )
664 ;;
665 * )
666 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
667 ;;
668 esac
669
670 # Setup LP64
698 # Setup target OS define. Use OS target name but in upper case.
699 OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
700 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
701
702 # Setup target CPU
703 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
704
705 # Setup debug/release defines
706 if test "x$DEBUG_LEVEL" = xrelease; then
707 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
708 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
709 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
710 fi
711 else
712 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
713 fi
714
715 # Set some additional per-OS defines.
716 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
717 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
718 elif test "x$OPENJDK_TARGET_OS" = xaix; then
719 # FIXME: PPC64 should not be here.
720 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DPPC64"
721 elif test "x$OPENJDK_TARGET_OS" = xbsd; then
722 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
723 fi
724
725 # Additional macosx handling
726 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
727 # Setting these parameters makes it an error to link to macosx APIs that are
728 # newer than the given OS version and makes the linked binaries compatible
729 # even if built on a newer version of the OS.
730 # The expected format is X.Y.Z
731 MACOSX_VERSION_MIN=10.7.0
732 AC_SUBST(MACOSX_VERSION_MIN)
733
734 # The macro takes the version with no dots, ex: 1070
735 # Let the flags variables get resolved in make for easier override on make
736 # command line.
737 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
738 LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
739 fi
740
758 AC_SUBST(CFLAGS_JDKEXE)
759 AC_SUBST(CXXFLAGS_JDKLIB)
760 AC_SUBST(CXXFLAGS_JDKEXE)
761
762 # Flags for compiling test libraries
763 CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
764 CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
765
766 # Flags for compiling test executables
767 CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
768 CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
769
770 AC_SUBST(CFLAGS_TESTLIB)
771 AC_SUBST(CFLAGS_TESTEXE)
772 AC_SUBST(CXXFLAGS_TESTLIB)
773 AC_SUBST(CXXFLAGS_TESTEXE)
774
775 # Setup LDFLAGS et al.
776 #
777
778 # Now this is odd. The JDK native libraries have to link against libjvm.so
779 # On 32-bit machines there is normally two distinct libjvm.so:s, client and server.
780 # Which should we link to? Are we lucky enough that the binary api to the libjvm.so library
781 # is identical for client and server? Yes. Which is picked at runtime (client or server)?
782 # Neither, since the chosen libjvm.so has already been loaded by the launcher, all the following
783 # libraries will link to whatever is in memory. Yuck.
784 #
785 # Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
786 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
787 LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
788 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
789 LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
790 fi
791 # TODO: make -debug optional "--disable-full-debug-symbols"
792 LDFLAGS_JDK="$LDFLAGS_JDK -debug"
793 elif test "x$TOOLCHAIN_TYPE" = xgcc; then
794 # If this is a --hash-style=gnu system, use --hash-style=both, why?
795 # We have previously set HAS_GNU_HASH if this is the case
796 if test -n "$HAS_GNU_HASH"; then
797 LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,--hash-style=both"
798 fi
799 if test "x$OPENJDK_TARGET_OS" = xlinux; then
800 # And since we now know that the linker is gnu, then add -z defs, to forbid
801 # undefined symbols in object files.
802 LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-z,defs"
803 case $DEBUG_LEVEL in
804 release )
805 # tell linker to optimize libraries.
806 # Should this be supplied to the OSS linker as well?
807 LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-O1"
808 ;;
809 slowdebug )
810 if test "x$HAS_LINKER_NOW" = "xtrue"; then
811 # do relocations at load
812 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
813 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
814 fi
815 if test "x$HAS_LINKER_RELRO" = "xtrue"; then
816 # mark relocations read only
817 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
818 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
819 fi
820 ;;
821 fastdebug )
822 if test "x$HAS_LINKER_RELRO" = "xtrue"; then
823 # mark relocations read only
824 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
825 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
826 fi
827 ;;
828 * )
829 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
830 ;;
831 esac
832 fi
833 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
834 LDFLAGS_JDK="$LDFLAGS_JDK -Wl,-z,defs -xildoff -ztext"
835 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
836 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
837 LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -bexpall -bernotok"
838 fi
839
840 # Customize LDFLAGS for executables
841
842 LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
843
844 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
845 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
846 LDFLAGS_STACK_SIZE=1048576
847 else
848 LDFLAGS_STACK_SIZE=327680
849 fi
850 LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
851 elif test "x$OPENJDK_TARGET_OS" = xlinux; then
852 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
853 fi
854
855 # Customize LDFLAGS for libs
856 LDFLAGS_JDKLIB="${LDFLAGS_JDK}"
857
1030 DISABLE_WARNING_PREFIX=
1031 fi
1032 CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1033 # Repeate the check for the BUILD_CC
1034 CC_OLD="$CC"
1035 CC="$BUILD_CC"
1036 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
1037 IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
1038 IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
1039 )
1040 if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1041 BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
1042 else
1043 BUILD_CC_DISABLE_WARNING_PREFIX=
1044 fi
1045 CC="$CC_OLD"
1046 ;;
1047 clang)
1048 DISABLE_WARNING_PREFIX="-Wno-"
1049 CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1050 ;;
1051 esac
1052 AC_SUBST(DISABLE_WARNING_PREFIX)
1053 AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
1054 ])
|
189 AR_OUT_OPTION=-out:
190 else
191 # The option used to specify the target .o,.a or .so file.
192 # When compiling, how to specify the to be created object file.
193 CC_OUT_OPTION='-o$(SPACE)'
194 # When linking, how to specify the to be created executable.
195 EXE_OUT_OPTION='-o$(SPACE)'
196 # When linking, how to specify the to be created dynamically linkable library.
197 LD_OUT_OPTION='-o$(SPACE)'
198 # When archiving, how to specify the to be create static archive for object files.
199 AR_OUT_OPTION='rcs$(SPACE)'
200 fi
201 AC_SUBST(CC_OUT_OPTION)
202 AC_SUBST(EXE_OUT_OPTION)
203 AC_SUBST(LD_OUT_OPTION)
204 AC_SUBST(AR_OUT_OPTION)
205
206 # On Windows, we need to set RC flags.
207 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
208 RC_FLAGS="-nologo -l0x409"
209 if test "x$DEBUG_LEVEL" = xrelease; then
210 RC_FLAGS="$RC_FLAGS -DNDEBUG"
211 fi
212
213 # The version variables used to create RC_FLAGS may be overridden
214 # in a custom configure script, or possibly the command line.
215 # Let those variables be expanded at make time in spec.gmk.
216 # The \$ are escaped to the shell, and the $(...) variables
217 # are evaluated by make.
218 RC_FLAGS="$RC_FLAGS \
219 -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
220 -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
221 -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
222 -D\"JDK_VER=\$(VERSION_NUMBER)\" \
223 -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
224 -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
225 -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
226 fi
227 AC_SUBST(RC_FLAGS)
228
229 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
237 ###############################################################################
238 #
239 # How to compile shared libraries.
240 #
241
242 if test "x$TOOLCHAIN_TYPE" = xgcc; then
243 PICFLAG="-fPIC"
244 C_FLAG_REORDER=''
245 CXX_FLAG_REORDER=''
246
247 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
248 # Linking is different on MacOSX
249 if test "x$STATIC_BUILD" = xtrue; then
250 SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
251 else
252 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
253 fi
254 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
255 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
256 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
257 SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
258 else
259 # Default works for linux, might work on other platforms as well.
260 SHARED_LIBRARY_FLAGS='-shared'
261 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
262 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
263 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
264 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
265 fi
266 elif test "x$TOOLCHAIN_TYPE" = xclang; then
267 C_FLAG_REORDER=''
268 CXX_FLAG_REORDER=''
269
270 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
271 # Linking is different on MacOSX
272 PICFLAG=''
273 SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
274 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
275 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
276 SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
277 SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
278 else
279 # Default works for linux, might work on other platforms as well.
280 PICFLAG='-fPIC'
281 SHARED_LIBRARY_FLAGS='-shared'
282 SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
283 SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
284 SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
285 SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
286 fi
287 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
288 PICFLAG="-KPIC"
289 C_FLAG_REORDER='-xF'
290 CXX_FLAG_REORDER='-xF'
291 SHARED_LIBRARY_FLAGS="-G"
292 SET_EXECUTABLE_ORIGIN='-R\$$$$ORIGIN[$]1'
293 SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
294 SET_SHARED_LIBRARY_NAME='-h [$]1'
295 SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
296 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
297 PICFLAG="-qpic=large"
298 C_FLAG_REORDER=''
299 CXX_FLAG_REORDER=''
300 SHARED_LIBRARY_FLAGS="-qmkshrobj"
301 SET_EXECUTABLE_ORIGIN=""
302 SET_SHARED_LIBRARY_ORIGIN=''
303 SET_SHARED_LIBRARY_NAME=''
304 SET_SHARED_LIBRARY_MAPFILE=''
305 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
306 PICFLAG=""
307 C_FLAG_REORDER=''
308 CXX_FLAG_REORDER=''
309 SHARED_LIBRARY_FLAGS="-dll"
310 SET_EXECUTABLE_ORIGIN=''
311 SET_SHARED_LIBRARY_ORIGIN=''
312 SET_SHARED_LIBRARY_NAME=''
313 SET_SHARED_LIBRARY_MAPFILE='-def:[$]1'
314 fi
315
316 AC_SUBST(C_FLAG_REORDER)
317 AC_SUBST(CXX_FLAG_REORDER)
318 AC_SUBST(SET_EXECUTABLE_ORIGIN)
319 AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
320 AC_SUBST(SET_SHARED_LIBRARY_NAME)
321 AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
322 AC_SUBST(SHARED_LIBRARY_FLAGS)
323
324 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
325 CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
326 CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
327 CFLAGS_JDKLIB_EXTRA='-xstrconst'
328 fi
329 # The (cross) compiler is now configured, we can now test capabilities
330 # of the target platform.
331 ])
332
333 # Documentation on common flags used for solstudio in HIGHEST.
406 CFLAGS_DEBUG_SYMBOLS="-g -xs"
407 # -g0 enables debug symbols without disabling inlining.
408 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
409 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
410 CFLAGS_DEBUG_SYMBOLS="-g"
411 CXXFLAGS_DEBUG_SYMBOLS="-g"
412 fi
413 AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
414 AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
415
416 # bounds, memory and behavior checking options
417 if test "x$TOOLCHAIN_TYPE" = xgcc; then
418 case $DEBUG_LEVEL in
419 release )
420 # no adjustment
421 ;;
422 fastdebug )
423 # no adjustment
424 ;;
425 slowdebug )
426 # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS it
427 # get's added contitionally on whether we produce debug symbols or not.
428 # This is most likely not really correct.
429
430 # Add runtime stack smashing and undefined behavior checks.
431 # Not all versions of gcc support -fstack-protector
432 STACK_PROTECTOR_CFLAG="-fstack-protector-all"
433 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
434
435 CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
436 CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
437 ;;
438 esac
439 fi
440
441 # Optimization levels
442 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
443 CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
444
445 if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
446 # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
447 C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
448 C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
449 C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
450 C_O_FLAG_DEBUG="-xregs=no%frameptr"
451 C_O_FLAG_NONE="-xregs=no%frameptr"
452 CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
453 CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
454 CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
455 CXX_O_FLAG_DEBUG="-xregs=no%frameptr"
456 CXX_O_FLAG_NONE="-xregs=no%frameptr"
457 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
458 C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
459 CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
460 fi
461 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
462 C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
463 C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
464 C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
465 C_O_FLAG_DEBUG=""
466 C_O_FLAG_NONE=""
467 CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
468 CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
469 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
470 CXX_O_FLAG_DEBUG=""
471 CXX_O_FLAG_NONE=""
472 fi
473 else
474 # The remaining toolchains share opt flags between CC and CXX;
475 # setup for C and duplicate afterwards.
476 if test "x$TOOLCHAIN_TYPE" = xgcc; then
477 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
478 # On MacOSX we optimize for size, something
479 # we should do for all platforms?
480 C_O_FLAG_HIGHEST="-Os"
481 C_O_FLAG_HI="-Os"
482 C_O_FLAG_NORM="-Os"
483 else
484 C_O_FLAG_HIGHEST="-O3"
485 C_O_FLAG_HI="-O3"
486 C_O_FLAG_NORM="-O2"
487 fi
488 C_O_FLAG_DEBUG="-O0"
489 C_O_FLAG_NONE="-O0"
490 elif test "x$TOOLCHAIN_TYPE" = xclang; then
633 CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
634 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
635 CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
636 CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
637 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
638 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK \
639 -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
640 -DWIN32_LEAN_AND_MEAN \
641 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
642 -D_WINSOCK_DEPRECATED_NO_WARNINGS \
643 -DWIN32 -DIAL"
644 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
645 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
646 else
647 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
648 fi
649 # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
650 # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
651 # studio.
652 if test "x$TOOLCHAIN_VERSION" = "x2010"; then
653 STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
654 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
655 fi
656 fi
657
658 ###############################################################################
659
660 # Adjust flags according to debug level.
661 case $DEBUG_LEVEL in
662 fastdebug | slowdebug )
663 CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
664 CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
665 JAVAC_FLAGS="$JAVAC_FLAGS -g"
666 ;;
667 release )
668 ;;
669 * )
670 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
671 ;;
672 esac
673
674 # Setup LP64
702 # Setup target OS define. Use OS target name but in upper case.
703 OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
704 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
705
706 # Setup target CPU
707 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
708
709 # Setup debug/release defines
710 if test "x$DEBUG_LEVEL" = xrelease; then
711 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
712 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
713 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
714 fi
715 else
716 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
717 fi
718
719 # Set some additional per-OS defines.
720 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
721 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
722 elif test "x$OPENJDK_TARGET_OS" = xbsd; then
723 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
724 fi
725
726 # Additional macosx handling
727 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
728 # Setting these parameters makes it an error to link to macosx APIs that are
729 # newer than the given OS version and makes the linked binaries compatible
730 # even if built on a newer version of the OS.
731 # The expected format is X.Y.Z
732 MACOSX_VERSION_MIN=10.7.0
733 AC_SUBST(MACOSX_VERSION_MIN)
734
735 # The macro takes the version with no dots, ex: 1070
736 # Let the flags variables get resolved in make for easier override on make
737 # command line.
738 COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
739 LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
740 fi
741
759 AC_SUBST(CFLAGS_JDKEXE)
760 AC_SUBST(CXXFLAGS_JDKLIB)
761 AC_SUBST(CXXFLAGS_JDKEXE)
762
763 # Flags for compiling test libraries
764 CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
765 CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
766
767 # Flags for compiling test executables
768 CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
769 CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
770
771 AC_SUBST(CFLAGS_TESTLIB)
772 AC_SUBST(CFLAGS_TESTEXE)
773 AC_SUBST(CXXFLAGS_TESTLIB)
774 AC_SUBST(CXXFLAGS_TESTEXE)
775
776 # Setup LDFLAGS et al.
777 #
778
779 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
780 LDFLAGS_MICROSOFT="-nologo -opt:ref"
781 LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
782 if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
783 LDFLAGS_SAFESH="-safeseh"
784 LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
785 fi
786 # TODO: make -debug optional "--disable-full-debug-symbols"
787 LDFLAGS_MICROSOFT_DEBUG="-debug"
788 LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT_DEBUG"
789 elif test "x$TOOLCHAIN_TYPE" = xgcc; then
790 # If this is a --hash-style=gnu system, use --hash-style=both, why?
791 # We have previously set HAS_GNU_HASH if this is the case
792 if test -n "$HAS_GNU_HASH"; then
793 LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
794 LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
795 fi
796 if test "x$OPENJDK_TARGET_OS" = xlinux; then
797 # And since we now know that the linker is gnu, then add -z defs, to forbid
798 # undefined symbols in object files.
799 LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
800 LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
801 case $DEBUG_LEVEL in
802 release )
803 # tell linker to optimize libraries.
804 # Should this be supplied to the OSS linker as well?
805 LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
806 LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
807 ;;
808 slowdebug )
809 if test "x$HAS_LINKER_NOW" = "xtrue"; then
810 # do relocations at load
811 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
812 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
813 fi
814 if test "x$HAS_LINKER_RELRO" = "xtrue"; then
815 # mark relocations read only
816 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
817 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
818 fi
819 ;;
820 fastdebug )
821 if test "x$HAS_LINKER_RELRO" = "xtrue"; then
822 # mark relocations read only
823 LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
824 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
825 fi
826 ;;
827 * )
828 AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
829 ;;
830 esac
831 fi
832 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
833 LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
834 LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
835 LDFLAGS_CXX_SOLSTUDIO="-norunpath"
836 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
837 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
838 LDFLAGS_XLC="-brtl -bnolibpath -bexpall -bernotok"
839 LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
840 fi
841
842 # Customize LDFLAGS for executables
843
844 LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
845
846 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
847 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
848 LDFLAGS_STACK_SIZE=1048576
849 else
850 LDFLAGS_STACK_SIZE=327680
851 fi
852 LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
853 elif test "x$OPENJDK_TARGET_OS" = xlinux; then
854 LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
855 fi
856
857 # Customize LDFLAGS for libs
858 LDFLAGS_JDKLIB="${LDFLAGS_JDK}"
859
1032 DISABLE_WARNING_PREFIX=
1033 fi
1034 CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1035 # Repeate the check for the BUILD_CC
1036 CC_OLD="$CC"
1037 CC="$BUILD_CC"
1038 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
1039 IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
1040 IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
1041 )
1042 if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1043 BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
1044 else
1045 BUILD_CC_DISABLE_WARNING_PREFIX=
1046 fi
1047 CC="$CC_OLD"
1048 ;;
1049 clang)
1050 DISABLE_WARNING_PREFIX="-Wno-"
1051 CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1052 ;;
1053 xlc)
1054 DISABLE_WARNING_PREFIX="-qsuppress="
1055 CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
1056 ;;
1057 esac
1058 AC_SUBST(DISABLE_WARNING_PREFIX)
1059 AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
1060 ])
|