mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			264 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			264 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
# configure.host
 | 
						|
 | 
						|
# This shell script handles all host based configuration for libgcj.
 | 
						|
# It sets various shell variables based on the the host and the
 | 
						|
# configuration options.  You can modify this shell script without
 | 
						|
# needing to rerun autoconf.
 | 
						|
 | 
						|
# This shell script should be invoked as
 | 
						|
#   . configure.host
 | 
						|
# If it encounters an error, it will exit with a message.
 | 
						|
 | 
						|
# It uses the following shell variables:
 | 
						|
#   host		The configuration host
 | 
						|
#   host_cpu		The configuration host CPU
 | 
						|
#   target_optspace	--enable-target-optspace ("yes", "no", "")
 | 
						|
 | 
						|
# It sets the following shell variables:
 | 
						|
#   libgcj_cflags	Special CFLAGS to use when building
 | 
						|
#   libgcj_cxxflags	Special CXXFLAGS to use when building
 | 
						|
#   libgcj_javaflags	Special JAVAFLAGS to use when building
 | 
						|
#   libgcj_interpreter  If the bytecode interpreter supports this platform.
 | 
						|
#   enable_java_net_default  If java.net native code should be enabled by
 | 
						|
#                            default.
 | 
						|
#   enable_hash_synchronization_default  If hash synchronization should be
 | 
						|
#                                        enabled by default.
 | 
						|
#   sysdeps_dir		Directory containing system-dependent headers
 | 
						|
#   slow_pthread_self   The synchronization code should try to avoid 
 | 
						|
#			pthread_self calls by caching thread IDs in a hashtable
 | 
						|
#   can_unwind_signal   Set to "yes" if the EH unwinder supports throwing
 | 
						|
#			from a signal handler.
 | 
						|
#   disable_dladdr      Set to "yes" if dladdr should not be used
 | 
						|
#                       (i.e it is broken).
 | 
						|
 | 
						|
libgcj_flags=
 | 
						|
libgcj_cflags=
 | 
						|
libgcj_cxxflags=
 | 
						|
libgcj_javaflags=
 | 
						|
libgcj_interpreter=
 | 
						|
enable_java_net_default=yes
 | 
						|
enable_hash_synchronization_default=no
 | 
						|
sysdeps_dir=generic
 | 
						|
slow_pthread_self=
 | 
						|
can_unwind_signal=no
 | 
						|
disable_dladdr=
 | 
						|
 | 
						|
case "${target_optspace}:${host}" in
 | 
						|
  yes:*)
 | 
						|
    libgcj_flags="${libgcj_flags} -Os"
 | 
						|
    ;;
 | 
						|
  :m32r-* | :d10v-* | :d30v-*)
 | 
						|
    libgcj_flags="${libgcj_flags} -Os"
 | 
						|
    ;;
 | 
						|
  no:* | :*)
 | 
						|
    # Nothing.
 | 
						|
    ;;
 | 
						|
esac
 | 
						|
 | 
						|
AM_RUNTESTFLAGS= 
 | 
						|
 | 
						|
# Set any host dependent compiler flags.
 | 
						|
# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
 | 
						|
 | 
						|
echo "$target"
 | 
						|
 | 
						|
DIVIDESPEC=-fuse-divide-subroutine
 | 
						|
EXCEPTIONSPEC=-fnon-call-exceptions
 | 
						|
CHECKREFSPEC=
 | 
						|
 | 
						|
# This case statement supports per-CPU defaults.
 | 
						|
case "${host}" in
 | 
						|
  arm*-elf | strongarm*-elf | xscale*-elf)
 | 
						|
	with_libffi_default=no
 | 
						|
	PROCESS=Ecos
 | 
						|
	FILE=Posix
 | 
						|
	CHECKREFSPEC=-fcheck-references
 | 
						|
	EXCEPTIONSPEC=
 | 
						|
	enable_java_net_default=no
 | 
						|
	enable_getenv_properties_default=no
 | 
						|
	enable_main_args_default=no
 | 
						|
	;;
 | 
						|
  mips-tx39-*|mipstx39-unknown-*)
 | 
						|
	libgcj_flags="${libgcj_flags} -G 0"
 | 
						|
	LDFLAGS="$LDFLAGS -Tjmr3904dram.ld"
 | 
						|
	AM_RUNTESTFLAGS="--target_board=jmr3904-sim"	
 | 
						|
	# Use "Ecos" processes since they are a no-op.
 | 
						|
	PROCESS=Ecos
 | 
						|
	FILE=Posix
 | 
						|
 	enable_java_net_default=no
 | 
						|
 	enable_getenv_properties_default=no
 | 
						|
	;;
 | 
						|
  i686-*|i586-*|i486-*|i386-*)
 | 
						|
	sysdeps_dir=i386
 | 
						|
	libgcj_flags="${libgcj_flags} -ffloat-store -fno-omit-frame-pointer"
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	libgcj_cxxflags=
 | 
						|
	libgcj_cflags=
 | 
						|
	DIVIDESPEC=-fno-use-divide-subroutine
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	slow_pthread_self=yes
 | 
						|
	;;
 | 
						|
  x86_64-*)
 | 
						|
	sysdeps_dir=x86-64
 | 
						|
	libgcj_flags="${libgcj_flags} -ffloat-store -fno-omit-frame-pointer"
 | 
						|
	libgcj_cxxflags=
 | 
						|
	libgcj_cflags=
 | 
						|
	DIVIDESPEC=-f%{m32:no-}use-divide-subroutine
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	slow_pthread_self=yes
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	;;
 | 
						|
  alpha*-*)
 | 
						|
	sysdeps_dir=alpha
 | 
						|
	libgcj_flags="${libgcj_flags} -mieee"
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	IEEESPEC=-mieee
 | 
						|
	;;
 | 
						|
  hppa-*)
 | 
						|
	sysdeps_dir=pa
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	;;
 | 
						|
  powerpc64*-*)
 | 
						|
	sysdeps_dir=powerpc
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	if [ x`$CC -print-multi-os-directory` = x../lib64 ]; then
 | 
						|
	    libgcj_flags="${libgcj_flags} -mminimal-toc"
 | 
						|
	fi
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	slow_pthread_self=yes
 | 
						|
	;;
 | 
						|
  powerpc*-*)
 | 
						|
	sysdeps_dir=powerpc
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	slow_pthread_self=yes
 | 
						|
	;;
 | 
						|
  s390*-*)
 | 
						|
	sysdeps_dir=s390
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	DIVIDESPEC=-fno-use-divide-subroutine
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	;;
 | 
						|
  sparc*-*)
 | 
						|
	libgcj_interpreter=yes
 | 
						|
        ;;
 | 
						|
  ia64-*)
 | 
						|
	sysdeps_dir=ia64
 | 
						|
        libgcj_flags="${libgcj_flags} -funwind-tables"
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	;;
 | 
						|
  sh-* | sh[34]*-*)
 | 
						|
	sysdeps_dir=sh
 | 
						|
	libgcj_flags="${libgcj_flags} -mieee"
 | 
						|
	libgcj_interpreter=yes
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
# This case statement supports generic port properties and may refine
 | 
						|
# the above per-CPU defaults.  Note: If your OS implements
 | 
						|
# MD_FALLBACK_FRAME_STATE_FOR, then you want to set can_unwind_signal
 | 
						|
# here.
 | 
						|
case "${host}" in
 | 
						|
  i[34567]86*-linux* | \
 | 
						|
  powerpc*-linux* | \
 | 
						|
  alpha*-linux* | \
 | 
						|
  s390*-linux* | \
 | 
						|
  sparc*-linux* | \
 | 
						|
  ia64-* | \
 | 
						|
  x86_64*-linux* | \
 | 
						|
  hppa*-linux* | \
 | 
						|
  sh-linux* | sh[34]*-linux*)
 | 
						|
  	can_unwind_signal=yes
 | 
						|
	if test x$slow_pthread_self = xyes \
 | 
						|
	   && test x$cross_compiling != xyes; then
 | 
						|
	  cat > conftest.c <<EOF
 | 
						|
#define _GNU_SOURCE 1
 | 
						|
#include <pthread.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <sys/resource.h>
 | 
						|
#include <limits.h>
 | 
						|
 | 
						|
void *
 | 
						|
tf (void *arg __attribute__ ((unused)))
 | 
						|
{
 | 
						|
  pthread_attr_t a;
 | 
						|
  size_t s;
 | 
						|
 | 
						|
  if (pthread_getattr_np (pthread_self (), &a)
 | 
						|
      || pthread_attr_getstacksize (&a, &s)
 | 
						|
      || s > 2 * PTHREAD_STACK_MIN)
 | 
						|
    exit (1);
 | 
						|
  exit (0);
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main (int argc, char **argv)
 | 
						|
{
 | 
						|
  pthread_t p;
 | 
						|
  void *ret;
 | 
						|
  struct rlimit r;
 | 
						|
 | 
						|
  if (argc == 2)
 | 
						|
    {
 | 
						|
      r.rlim_cur = 2 * PTHREAD_STACK_MIN;
 | 
						|
      r.rlim_max = 2 * PTHREAD_STACK_MIN;
 | 
						|
      if (setrlimit (RLIMIT_STACK, &r))
 | 
						|
	exit (1);
 | 
						|
      execl (argv[1], argv[0], NULL);
 | 
						|
      exit (1);
 | 
						|
    }
 | 
						|
 | 
						|
  if (pthread_create (&p, NULL, tf, NULL)
 | 
						|
      || pthread_join (p, &ret))
 | 
						|
    exit (1);
 | 
						|
  exit (1);
 | 
						|
}
 | 
						|
EOF
 | 
						|
	  $CC -o conftest conftest.c -lpthread > /dev/null 2>&1 && \
 | 
						|
	  ./conftest ./conftest && slow_pthread_self=
 | 
						|
	  rm -f conftest conftest.c
 | 
						|
	fi
 | 
						|
	;;
 | 
						|
  mips*-*-linux* )
 | 
						|
  	sysdeps_dir=mips
 | 
						|
  	can_unwind_signal=yes
 | 
						|
	libgcj_flags="${libgcj_flags} -mxgot"
 | 
						|
	DIVIDESPEC=-fno-use-divide-subroutine
 | 
						|
	case "${host}" in
 | 
						|
	    mipsel*-linux* | mipsisa32el*-linux*)
 | 
						|
		enable_hash_synchronization_default=yes
 | 
						|
		disable_dladdr=yes
 | 
						|
	    ;;
 | 
						|
	esac
 | 
						|
	;;
 | 
						|
  powerpc*-*-darwin*)
 | 
						|
	enable_hash_synchronization_default=yes
 | 
						|
	slow_pthread_self=
 | 
						|
	can_unwind_signal=yes
 | 
						|
	;;
 | 
						|
  *-*-freebsd*)
 | 
						|
	slow_pthread_self=
 | 
						|
	;;
 | 
						|
  *-mingw*)
 | 
						|
  	# FIXME: win32_exception_handler( ) in win32.cc does not do the
 | 
						|
	# right stuff yet w.r.t. SEH. Live with the following for now.
 | 
						|
	can_unwind_signal=no
 | 
						|
	CHECKREFSPEC=-fcheck-references
 | 
						|
	DIVIDESPEC=-fuse-divide-subroutine
 | 
						|
	;;
 | 
						|
  *-cygwin*)
 | 
						|
  	# The cygwin linker doesn't do 8-byte alignment by default, so
 | 
						|
	# disable hash synchronization for now.
 | 
						|
	enable_hash_synchronization_default=no
 | 
						|
	slow_pthread_self=
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
libgcj_cflags="${libgcj_cflags} ${libgcj_flags}"
 | 
						|
libgcj_cxxflags="${libgcj_cxxflags} ${libgcj_flags}"
 | 
						|
libgcj_javaflags="${libgcj_javaflags} ${libgcj_flags}"
 |