common/autoconf/toolchain.m4

Print this page




 182   ORG_CFLAGS="$CFLAGS"
 183   ORG_CXXFLAGS="$CXXFLAGS"
 184   ORG_OBJCFLAGS="$OBJCFLAGS"
 185 
 186   # On Windows, we need to detect the visual studio installation first.
 187   # This will change the PATH, but we need to keep that new PATH even 
 188   # after toolchain detection is done, since the compiler (on x86) uses
 189   # it for DLL resolution in runtime.
 190   if test "x$OPENJDK_BUILD_OS" = "xwindows" && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
 191     TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
 192   fi
 193 
 194   # autoconf magic only relies on PATH, so update it if tools dir is specified
 195   OLD_PATH="$PATH"
 196 
 197   # For solaris we really need solaris tools, and not the GNU equivalent.
 198   # The build tools on Solaris reside in /usr/ccs (C Compilation System),
 199   # so add that to path before starting to probe.
 200   # FIXME: This was originally only done for AS,NM,GNM,STRIP,MCS,OBJCOPY,OBJDUMP.
 201   if test "x$OPENJDK_BUILD_OS" = xsolaris; then

 202     PATH="/usr/ccs/bin:$PATH"
 203   fi
 204 
 205   # Finally add TOOLS_DIR at the beginning, to allow --with-tools-dir to 
 206   # override all other locations.
 207   if test "x$TOOLS_DIR" != x; then
 208     PATH=$TOOLS_DIR:$PATH
 209   fi
 210 
 211   # If a devkit is found on the builddeps server, then prepend its path to the
 212   # PATH variable. If there are cross compilers available in the devkit, these
 213   # will be found by AC_PROG_CC et al.
 214   DEVKIT=
 215   BDEPS_CHECK_MODULE(DEVKIT, devkit, xxx,
 216       [
 217         # Found devkit
 218         PATH="$DEVKIT/bin:$PATH"
 219         SYS_ROOT="$DEVKIT/${rewritten_target}/sys-root"
 220         if test "x$x_includes" = "xNONE"; then
 221           x_includes="$SYS_ROOT/usr/include/X11"
 222         fi
 223         if test "x$x_libraries" = "xNONE"; then
 224           x_libraries="$SYS_ROOT/usr/lib"
 225         fi
 226       ],
 227       [])
 228 ])
 229 
 230 # Restore path, etc
 231 AC_DEFUN_ONCE([TOOLCHAIN_POST_DETECTION],
 232 [
 233   # Restore old path.
 234   PATH="$OLD_PATH"
 235 
 236   # Restore the flags to the user specified values.
 237   # This is necessary since AC_PROG_CC defaults CFLAGS to "-g -O2"
 238   CFLAGS="$ORG_CFLAGS"
 239   CXXFLAGS="$ORG_CXXFLAGS"
 240   OBJCFLAGS="$ORG_OBJCFLAGS"
 241 ])
 242 
 243 # Check if a compiler is of the toolchain type we expect, and save the version
 244 # information from it. If the compiler does not match the expected type,
 245 # this function will abort using AC_MSG_ERROR. If it matches, the version will
 246 # be stored in CC_VERSION_NUMBER/CXX_VERSION_NUMBER (as a dotted number), and
 247 # the full version string in CC_VERSION_STRING/CXX_VERSION_STRING.


 379       else
 380         AC_MSG_ERROR([User supplied compiler $1=[$]$1 could not be found])
 381       fi
 382     else
 383       # Otherwise it might already be a complete path
 384       if test ! -x "[$]$1"; then
 385         AC_MSG_ERROR([User supplied compiler $1=[$]$1 does not exist])
 386       fi
 387     fi
 388   else
 389     # No user supplied value. Locate compiler ourselves.
 390     
 391     # If we are cross compiling, assume cross compilation tools follows the
 392     # cross compilation standard where they are prefixed with the autoconf
 393     # standard name for the target. For example the binary 
 394     # i686-sun-solaris2.10-gcc will cross compile for i686-sun-solaris2.10.
 395     # If we are not cross compiling, then the default compiler name will be 
 396     # used.
 397 
 398     $1=
 399     # If TOOLS_DIR is set, check for all compiler names in there first
 400     # before checking the rest of the PATH.
 401     # FIXME: Now that we prefix the TOOLS_DIR to the PATH in the PRE_DETECTION
 402     # step, this should not be necessary.
 403     if test -n "$TOOLS_DIR"; then
 404       PATH_save="$PATH"
 405       PATH="$TOOLS_DIR"
 406       AC_PATH_PROGS(TOOLS_DIR_$1, $SEARCH_LIST)
 407       $1=$TOOLS_DIR_$1
 408       PATH="$PATH_save"
 409     fi
 410 
 411     # AC_PATH_PROGS can't be run multiple times with the same variable,
 412     # so create a new name for this run.
 413     if test "x[$]$1" = x; then
 414       AC_PATH_PROGS(POTENTIAL_$1, $SEARCH_LIST)
 415       $1=$POTENTIAL_$1
 416     fi
 417 
 418     if test "x[$]$1" = x; then
 419       HELP_MSG_MISSING_DEPENDENCY([devkit])
 420       AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
 421     fi
 422   fi
 423 
 424   # Now we have a compiler binary in $1. Make sure it's okay.
 425   BASIC_FIXUP_EXECUTABLE($1)
 426   TEST_COMPILER="[$]$1"
 427   # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links




 182   ORG_CFLAGS="$CFLAGS"
 183   ORG_CXXFLAGS="$CXXFLAGS"
 184   ORG_OBJCFLAGS="$OBJCFLAGS"
 185 
 186   # On Windows, we need to detect the visual studio installation first.
 187   # This will change the PATH, but we need to keep that new PATH even 
 188   # after toolchain detection is done, since the compiler (on x86) uses
 189   # it for DLL resolution in runtime.
 190   if test "x$OPENJDK_BUILD_OS" = "xwindows" && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
 191     TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
 192   fi
 193 
 194   # autoconf magic only relies on PATH, so update it if tools dir is specified
 195   OLD_PATH="$PATH"
 196 
 197   # For solaris we really need solaris tools, and not the GNU equivalent.
 198   # The build tools on Solaris reside in /usr/ccs (C Compilation System),
 199   # so add that to path before starting to probe.
 200   # FIXME: This was originally only done for AS,NM,GNM,STRIP,MCS,OBJCOPY,OBJDUMP.
 201   if test "x$OPENJDK_BUILD_OS" = xsolaris; then
 202     if test "x$TOOLCHAIN_PATH" = x; then
 203       PATH="/usr/ccs/bin:$PATH"
 204     fi





 205   fi
 206 
 207   # Finally add TOOLCHAIN_PATH at the beginning, to allow --with-tools-dir to 
 208   # override all other locations.
 209   if test "x$TOOLCHAIN_PATH" != x; then
 210     PATH=$TOOLCHAIN_PATH:$PATH










 211   fi


 212 ])
 213 
 214 # Restore path, etc
 215 AC_DEFUN_ONCE([TOOLCHAIN_POST_DETECTION],
 216 [
 217   # Restore old path.
 218   PATH="$OLD_PATH"
 219 
 220   # Restore the flags to the user specified values.
 221   # This is necessary since AC_PROG_CC defaults CFLAGS to "-g -O2"
 222   CFLAGS="$ORG_CFLAGS"
 223   CXXFLAGS="$ORG_CXXFLAGS"
 224   OBJCFLAGS="$ORG_OBJCFLAGS"
 225 ])
 226 
 227 # Check if a compiler is of the toolchain type we expect, and save the version
 228 # information from it. If the compiler does not match the expected type,
 229 # this function will abort using AC_MSG_ERROR. If it matches, the version will
 230 # be stored in CC_VERSION_NUMBER/CXX_VERSION_NUMBER (as a dotted number), and
 231 # the full version string in CC_VERSION_STRING/CXX_VERSION_STRING.


 363       else
 364         AC_MSG_ERROR([User supplied compiler $1=[$]$1 could not be found])
 365       fi
 366     else
 367       # Otherwise it might already be a complete path
 368       if test ! -x "[$]$1"; then
 369         AC_MSG_ERROR([User supplied compiler $1=[$]$1 does not exist])
 370       fi
 371     fi
 372   else
 373     # No user supplied value. Locate compiler ourselves.
 374     
 375     # If we are cross compiling, assume cross compilation tools follows the
 376     # cross compilation standard where they are prefixed with the autoconf
 377     # standard name for the target. For example the binary 
 378     # i686-sun-solaris2.10-gcc will cross compile for i686-sun-solaris2.10.
 379     # If we are not cross compiling, then the default compiler name will be 
 380     # used.
 381 
 382     $1=
 383     # If TOOLCHAIN_PATH is set, check for all compiler names in there first
 384     # before checking the rest of the PATH.
 385     if test -n "$TOOLCHAIN_PATH"; then


 386       PATH_save="$PATH"
 387       PATH="$TOOLCHAIN_PATH"
 388       AC_PATH_PROGS(TOOLCHAIN_PATH_$1, $SEARCH_LIST)
 389       $1=$TOOLCHAIN_PATH_$1
 390       PATH="$PATH_save"
 391     fi
 392 
 393     # AC_PATH_PROGS can't be run multiple times with the same variable,
 394     # so create a new name for this run.
 395     if test "x[$]$1" = x; then
 396       AC_PATH_PROGS(POTENTIAL_$1, $SEARCH_LIST)
 397       $1=$POTENTIAL_$1
 398     fi
 399 
 400     if test "x[$]$1" = x; then
 401       HELP_MSG_MISSING_DEPENDENCY([devkit])
 402       AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
 403     fi
 404   fi
 405 
 406   # Now we have a compiler binary in $1. Make sure it's okay.
 407   BASIC_FIXUP_EXECUTABLE($1)
 408   TEST_COMPILER="[$]$1"
 409   # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links