common/autoconf/toolchain.m4

changeset 971
584dc2e95e04
parent 970
e885c762cedd
child 972
f3697e0783e2
equal deleted inserted replaced
970:e885c762cedd 971:584dc2e95e04
42 AC_MSG_ERROR([Sun Studio compiler is required. Try setting --with-tools-dir.]) 42 AC_MSG_ERROR([Sun Studio compiler is required. Try setting --with-tools-dir.])
43 else 43 else
44 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"` 44 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"`
45 COMPILER_VENDOR="Sun Studio" 45 COMPILER_VENDOR="Sun Studio"
46 fi 46 fi
47 elif test "x$OPENJDK_TARGET_OS" = xaix; then
48 COMPILER_VERSION_TEST=`$COMPILER -qversion 2>&1 | $TAIL -n 1`
49 $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null
50 if test $? -ne 0; then
51 AC_MSG_ERROR([Failed to detect the compiler version of $COMPILER ....])
52 else
53 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \([0-9][0-9]\.[0-9][0-9]*\).*/\1/p'`
54 COMPILER_VENDOR='IBM'
55 fi
47 elif test "x$OPENJDK_TARGET_OS" = xwindows; then 56 elif test "x$OPENJDK_TARGET_OS" = xwindows; then
48 # First line typically looks something like: 57 # First line typically looks something like:
49 # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 58 # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
50 COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'` 59 COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
51 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \(@<:@1-9@:>@@<:@0-9.@:>@*\) .*/\1/p"` 60 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \(@<:@1-9@:>@@<:@0-9.@:>@*\) .*/\1/p"`
135 if test "x[$]$1" = x; then 144 if test "x[$]$1" = x; then
136 HELP_MSG_MISSING_DEPENDENCY([devkit]) 145 HELP_MSG_MISSING_DEPENDENCY([devkit])
137 AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG]) 146 AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
138 fi 147 fi
139 BASIC_FIXUP_EXECUTABLE($1) 148 BASIC_FIXUP_EXECUTABLE($1)
140 AC_MSG_CHECKING([resolved symbolic links for $1])
141 TEST_COMPILER="[$]$1" 149 TEST_COMPILER="[$]$1"
142 BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) 150 # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links
143 AC_MSG_RESULT([$TEST_COMPILER]) 151 # to 'xlc' but it is crucial that we invoke the compiler with the right name!
152 if test "x$OPENJDK_BUILD_OS" != xaix; then
153 AC_MSG_CHECKING([resolved symbolic links for $1])
154 BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER)
155 AC_MSG_RESULT([$TEST_COMPILER])
156 fi
144 AC_MSG_CHECKING([if $1 is disguised ccache]) 157 AC_MSG_CHECKING([if $1 is disguised ccache])
145 158
146 COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"` 159 COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
147 if test "x$COMPILER_BASENAME" = "xccache"; then 160 if test "x$COMPILER_BASENAME" = "xccache"; then
148 AC_MSG_RESULT([yes, trying to find proper $COMPILER_NAME compiler]) 161 AC_MSG_RESULT([yes, trying to find proper $COMPILER_NAME compiler])
248 COMPILER_CHECK_LIST="$CC" 261 COMPILER_CHECK_LIST="$CC"
249 elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then 262 elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then
250 COMPILER_CHECK_LIST="cl" 263 COMPILER_CHECK_LIST="cl"
251 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 264 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
252 COMPILER_CHECK_LIST="cc gcc" 265 COMPILER_CHECK_LIST="cc gcc"
266 elif test "x$OPENJDK_TARGET_OS" = "xaix"; then
267 # Do not probe for cc on AIX.
268 COMPILER_CHECK_LIST="xlc_r"
253 else 269 else
254 COMPILER_CHECK_LIST="gcc cc" 270 COMPILER_CHECK_LIST="gcc cc"
255 fi 271 fi
256 272
257 TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST]) 273 TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST])
258 # Now that we have resolved CC ourself, let autoconf have its go at it 274 # Now that we have resolved CC ourself, let autoconf have its go at it
259 AC_PROG_CC([$CC]) 275 AC_PROG_CC([$CC])
276
277 # Option used to tell the compiler whether to create 32- or 64-bit executables
278 # Notice that CC contains the full compiler path at this point.
279 case $CC in
280 *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";;
281 *) COMPILER_TARGET_BITS_FLAG="-m";;
282 esac
283 AC_SUBST(COMPILER_TARGET_BITS_FLAG)
260 284
261 ### Locate C++ compiler (CXX) 285 ### Locate C++ compiler (CXX)
262 286
263 if test "x$CXX" != x; then 287 if test "x$CXX" != x; then
264 COMPILER_CHECK_LIST="$CXX" 288 COMPILER_CHECK_LIST="$CXX"
265 elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then 289 elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then
266 COMPILER_CHECK_LIST="cl" 290 COMPILER_CHECK_LIST="cl"
267 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 291 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
268 COMPILER_CHECK_LIST="CC g++" 292 COMPILER_CHECK_LIST="CC g++"
293 elif test "x$OPENJDK_TARGET_OS" = "xaix"; then
294 # Do not probe for CC on AIX .
295 COMPILER_CHECK_LIST="xlC_r"
269 else 296 else
270 COMPILER_CHECK_LIST="g++ CC" 297 COMPILER_CHECK_LIST="g++ CC"
271 fi 298 fi
272 299
273 TOOLCHAIN_FIND_COMPILER([CXX],[C++],[$COMPILER_CHECK_LIST]) 300 TOOLCHAIN_FIND_COMPILER([CXX],[C++],[$COMPILER_CHECK_LIST])
305 AC_CHECK_TOOL(AR, ar) 332 AC_CHECK_TOOL(AR, ar)
306 BASIC_FIXUP_EXECUTABLE(AR) 333 BASIC_FIXUP_EXECUTABLE(AR)
307 fi 334 fi
308 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 335 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
309 ARFLAGS="-r" 336 ARFLAGS="-r"
337 elif test "x$OPENJDK_TARGET_OS" = xaix; then
338 ARFLAGS="-X64"
310 else 339 else
311 ARFLAGS="" 340 ARFLAGS=""
312 fi 341 fi
313 AC_SUBST(ARFLAGS) 342 AC_SUBST(ARFLAGS)
314 343
369 AS_IF([test "x$VARIANT" = xOPT], [ 398 AS_IF([test "x$VARIANT" = xOPT], [
370 RC_FLAGS="$RC_FLAGS -d NDEBUG" 399 RC_FLAGS="$RC_FLAGS -d NDEBUG"
371 ]) 400 ])
372 401
373 # The version variables used to create RC_FLAGS may be overridden 402 # The version variables used to create RC_FLAGS may be overridden
374 # in a custom configure script, or possibly the command line. 403 # in a custom configure script, or possibly the command line.
375 # Let those variables be expanded at make time in spec.gmk. 404 # Let those variables be expanded at make time in spec.gmk.
376 # The \$ are escaped to the shell, and the $(...) variables 405 # The \$ are escaped to the shell, and the $(...) variables
377 # are evaluated by make. 406 # are evaluated by make.
378 RC_FLAGS="$RC_FLAGS \ 407 RC_FLAGS="$RC_FLAGS \
379 -d \"JDK_BUILD_ID=\$(FULL_VERSION)\" \ 408 -d \"JDK_BUILD_ID=\$(FULL_VERSION)\" \
547 CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__" 576 CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
548 CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__" 577 CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
549 CFLAGS_JDKLIB_EXTRA='-xstrconst' 578 CFLAGS_JDKLIB_EXTRA='-xstrconst'
550 POST_STRIP_CMD="$STRIP -x" 579 POST_STRIP_CMD="$STRIP -x"
551 POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\"" 580 POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
581 fi
582 if test "x$OPENJDK_TARGET_OS" = xaix; then
583 COMPILER_NAME=xlc
584 PICFLAG="-qpic=large"
585 LIBRARY_PREFIX=lib
586 SHARED_LIBRARY='lib[$]1.so'
587 STATIC_LIBRARY='lib[$]1.a'
588 SHARED_LIBRARY_FLAGS="-qmkshrobj"
589 SHARED_LIBRARY_SUFFIX='.so'
590 STATIC_LIBRARY_SUFFIX='.a'
591 OBJ_SUFFIX='.o'
592 EXE_SUFFIX=''
593 SET_SHARED_LIBRARY_NAME=''
594 SET_SHARED_LIBRARY_MAPFILE=''
595 C_FLAG_REORDER=''
596 CXX_FLAG_REORDER=''
597 SET_SHARED_LIBRARY_ORIGIN=''
598 SET_EXECUTABLE_ORIGIN=""
599 CFLAGS_JDK=""
600 CXXFLAGS_JDK=""
601 CFLAGS_JDKLIB_EXTRA=''
602 POST_STRIP_CMD="$STRIP -X32_64"
603 POST_MCS_CMD=""
552 fi 604 fi
553 if test "x$OPENJDK_TARGET_OS" = xwindows; then 605 if test "x$OPENJDK_TARGET_OS" = xwindows; then
554 # If it is not gcc, then assume it is the MS Visual Studio compiler 606 # If it is not gcc, then assume it is the MS Visual Studio compiler
555 COMPILER_NAME=cl 607 COMPILER_NAME=cl
556 PICFLAG="" 608 PICFLAG=""
721 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0" 773 CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
722 CXX_O_FLAG_NONE="" 774 CXX_O_FLAG_NONE=""
723 ;; 775 ;;
724 esac 776 esac
725 777
726 CFLAGS_DEBUG_SYMBOLS="-g -xs" 778 CFLAGS_DEBUG_SYMBOLS="-g -xs"
727 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" 779 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
780 ;;
781 xlc )
782 C_FLAG_DEPS="-qmakedep=gcc -MF"
783 CXX_FLAG_DEPS="-qmakedep=gcc -MF"
784 C_O_FLAG_HIGHEST="-O3"
785 C_O_FLAG_HI="-O3 -qstrict"
786 C_O_FLAG_NORM="-O2"
787 C_O_FLAG_NONE=""
788 CXX_O_FLAG_HIGHEST="-O3"
789 CXX_O_FLAG_HI="-O3 -qstrict"
790 CXX_O_FLAG_NORM="-O2"
791 CXX_O_FLAG_NONE=""
792 CFLAGS_DEBUG_SYMBOLS="-g"
793 CXXFLAGS_DEBUG_SYMBOLS="-g"
794 LDFLAGS_JDK="${LDFLAGS_JDK} -q64 -brtl -bnolibpath -liconv -bexpall"
795 CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt"
796 CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt"
797 ;;
728 esac 798 esac
729 ;; 799 ;;
730 CL ) 800 CL )
731 C_O_FLAG_HIGHEST="-O2" 801 C_O_FLAG_HIGHEST="-O2"
732 C_O_FLAG_HI="-O1" 802 C_O_FLAG_HI="-O1"
833 CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib" 903 CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
834 904
835 LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" 905 LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
836 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" 906 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
837 ;; 907 ;;
908 xlc )
909 CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
910 CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
911
912 LDFLAGS_JDK="$LDFLAGS_JDK"
913 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK"
914 ;;
838 cl ) 915 cl )
839 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ 916 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
840 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ 917 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
841 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \ 918 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
842 -DWIN32 -DIAL" 919 -DWIN32 -DIAL"
902 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS" 979 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS"
903 fi 980 fi
904 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 981 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
905 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" 982 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS"
906 fi 983 fi
984 if test "x$OPENJDK_TARGET_OS" = xaix; then
985 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64"
986 fi
907 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 987 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
908 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" 988 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
909 # Setting these parameters makes it an error to link to macosx APIs that are 989 # Setting these parameters makes it an error to link to macosx APIs that are
910 # newer than the given OS version and makes the linked binaries compatible even 990 # newer than the given OS version and makes the linked binaries compatible even
911 # if built on a newer version of the OS. 991 # if built on a newer version of the OS.
1071 [ 1151 [
1072 # Some Zero and Shark settings. 1152 # Some Zero and Shark settings.
1073 # ZERO_ARCHFLAG tells the compiler which mode to build for 1153 # ZERO_ARCHFLAG tells the compiler which mode to build for
1074 case "${OPENJDK_TARGET_CPU}" in 1154 case "${OPENJDK_TARGET_CPU}" in
1075 s390) 1155 s390)
1076 ZERO_ARCHFLAG="-m31" 1156 ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31"
1077 ;; 1157 ;;
1078 *) 1158 *)
1079 ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}" 1159 ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
1080 esac 1160 esac
1081 TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""]) 1161 TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
1082 AC_SUBST(ZERO_ARCHFLAG) 1162 AC_SUBST(ZERO_ARCHFLAG)
1083 1163
1084 # Check that the compiler supports -mX flags 1164 # Check that the compiler supports -mX (or -qX on AIX) flags
1085 # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does 1165 # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
1086 TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([-m${OPENJDK_TARGET_CPU_BITS}], 1166 TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
1087 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true], 1167 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
1088 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) 1168 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
1089 AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG) 1169 AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
1090 1170
1091 1171

mercurial