mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			425 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			425 lines
		
	
	
		
			11 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_sublib_ltflags  Special Libtool flags to use when building sublibs
 | |
| #   libgcj_sublib_core_extra_deps  Extra dependencies to add to core sublib
 | |
| #   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.
 | |
| #   enable_libgcj_sublibs_default  Whether to build libgcj as a bunch of
 | |
| #                                  separate shared libraries or in one 
 | |
| #                                  monolithic one.
 | |
| #   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.
 | |
| #   fallback_backtrace_h  Header to use for fallback backtrace implementation
 | |
| #			  (only for targets that don't support DWARF2 unwind)
 | |
| #   descriptor_h	Header to use for looking past function descriptors
 | |
| #   use_libgcj_bc	Whether to build a "libgcj-bc" library for BC-ABI
 | |
| #			binaries to link against.
 | |
| 
 | |
| libgcj_flags=
 | |
| libgcj_cflags=
 | |
| libgcj_cxxflags=
 | |
| libgcj_javaflags=
 | |
| libgcj_sublib_ltflags=
 | |
| libgcj_sublib_core_extra_deps=
 | |
| libgcj_interpreter=
 | |
| enable_java_net_default=yes
 | |
| enable_hash_synchronization_default=no
 | |
| enable_libgcj_sublibs_default=no
 | |
| sysdeps_dir=generic
 | |
| slow_pthread_self=
 | |
| can_unwind_signal=no
 | |
| fallback_backtrace_h=sysdep/generic/backtrace.h
 | |
| 
 | |
| 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=
 | |
| BACKTRACESPEC=
 | |
| ATOMICSPEC=
 | |
| 
 | |
| # This case statement supports per-CPU defaults.
 | |
| case "${host}" in
 | |
|   aarch64*-linux*)
 | |
| 	libgcj_interpreter=yes
 | |
| 	sysdeps_dir=aarch64
 | |
| 	ATOMICSPEC=-fuse-atomic-builtins
 | |
| 	;;
 | |
|   arm*-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
 | |
| 	sysdeps_dir=arm
 | |
| 	;;
 | |
|   arm*-linux*)
 | |
| 	libgcj_interpreter=yes
 | |
| 	sysdeps_dir=arm
 | |
| 	fallback_backtrace_h=sysdep/arm/backtrace.h
 | |
| 	libgcj_cxxflags=-Wno-abi
 | |
| 	ATOMICSPEC=-fuse-atomic-builtins
 | |
| 	# Work around a strange libtool feature that causes libraries
 | |
| 	# to be linked with libgcc_s but not libgcc.  
 | |
| 	LDFLAGS="${LDFLAGS} -Wl,-lgcc"
 | |
| 	;;
 | |
|   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
 | |
| 	;;
 | |
|   mips*-*)
 | |
| 	libgcj_interpreter=yes
 | |
| 	;;
 | |
|   i686-*|i586-*|i486-*|i386-*)
 | |
| 	sysdeps_dir=i386
 | |
| 	# With -fomit-frame-pointer -maccumulate-outgoing-args (implied),
 | |
| 	# the .text section of libgcj.so is 30k larger, and the .eh_frame
 | |
| 	# section is 1.4M smaller.
 | |
| 	libgcj_flags="${libgcj_flags} -ffloat-store -fomit-frame-pointer"
 | |
| 	# On Solaris we have defined 'sun' which later conflicts with 
 | |
| 	# namespace usage. So to work this away we use the below undefine.
 | |
| 	libgcj_flags="${libgcj_flags} -Usun"
 | |
| 	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=i386
 | |
| 	# For 64-bit we always use SSE registers for arithmetic,
 | |
| 	# which doesn't have the extra precision problems of the fpu.
 | |
| 	# But be careful about 32-bit multilibs.
 | |
| 	case " $CC " in
 | |
| 	*" -m32 "*)
 | |
| 		libgcj_flags="${libgcj_flags} -ffloat-store" ;;
 | |
| 	esac
 | |
| 	libgcj_flags="${libgcj_flags} -fomit-frame-pointer"
 | |
| 	# On Solaris we have defined 'sun' which later conflicts with 
 | |
| 	# namespace usage. So to work this away we use the below undefine.
 | |
| 	libgcj_flags="${libgcj_flags} -Usun"
 | |
| 	libgcj_cxxflags=
 | |
| 	libgcj_cflags=
 | |
| 	DIVIDESPEC=-fno-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=no
 | |
| 	;;
 | |
|   m68k-*)
 | |
| 	sysdeps_dir=m68k
 | |
| 	libgcj_interpreter=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*-*)
 | |
| 	sysdeps_dir=sparc
 | |
| 	# On Solaris we have defined 'sun' which later conflicts with 
 | |
| 	# namespace usage. So to work this away we use the below undefine.
 | |
| 	libgcj_flags="${libgcj_flags} -Usun"
 | |
| 	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
 | |
| 	IEEESPEC=-mieee
 | |
| 	;;
 | |
| 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* | \
 | |
|   m68k*-linux* | \
 | |
|   sh-linux* | sh[34]*-linux*)
 | |
|   	can_unwind_signal=yes
 | |
| 	libgcj_ld_symbolic='-Wl,-Bsymbolic'
 | |
| 	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
 | |
| 	;;
 | |
|   i[34567]86*-kfreebsd*-gnu | x86_64*-kfreebsd*-gnu)
 | |
|         libgcj_ld_symbolic='-Wl,-Bsymbolic'
 | |
|         slow_pthread_self=
 | |
|         ;;
 | |
|   i[34567]86-*-solaris2.1[0-9]* )
 | |
| 	sysdeps_dir=i386
 | |
| 	DIVIDESPEC=-f%{m32:no-}%{!m32:%{!m64:no-}}%{m64:}use-divide-subroutine
 | |
| 	;;
 | |
|   x86_64-*-solaris2.1[0-9]* )
 | |
| 	sysdeps_dir=i386
 | |
| 	DIVIDESPEC=-f%{m32:no-}use-divide-subroutine
 | |
| 	;;
 | |
|   aarch64*-linux* )
 | |
| 	slow_pthread_self=no
 | |
| 	can_unwind_signal=no
 | |
| 	CHECKREFSPEC=-fcheck-references
 | |
| 	DIVIDESPEC=-fuse-divide-subroutine
 | |
| 	;;
 | |
|   arm*-linux* )
 | |
| 	slow_pthread_self=no
 | |
| 	can_unwind_signal=no
 | |
| 	CHECKREFSPEC=-fcheck-references
 | |
| 	DIVIDESPEC=-fuse-divide-subroutine
 | |
| 	;;
 | |
|   mips*-*-linux* )
 | |
|   	sysdeps_dir=mips
 | |
|   	can_unwind_signal=yes
 | |
| 	DIVIDESPEC=-fno-use-divide-subroutine
 | |
| 	enable_hash_synchronization_default=yes
 | |
| 	;;
 | |
|   powerpc*-*-darwin*)
 | |
| 	enable_hash_synchronization_default=yes
 | |
| 	slow_pthread_self=
 | |
| 	can_unwind_signal=yes
 | |
| 	;;
 | |
|   i?86-*-darwin*)
 | |
| 	enable_hash_synchronization_default=yes
 | |
| 	slow_pthread_self=
 | |
| 	can_unwind_signal=no
 | |
| 	;;
 | |
|   i?86-*-darwin[912]*)
 | |
| 	can_unwind_signal=yes
 | |
| 	DIVIDESPEC=-f%{m32:no-}%{!m32:%{!m64:no-}}%{m64:}use-divide-subroutine
 | |
|         ;;
 | |
|   x86_64-*-darwin[912]*)
 | |
| 	enable_hash_synchronization_default=yes
 | |
| 	slow_pthread_self=
 | |
| 	can_unwind_signal=yes
 | |
| 	DIVIDESPEC=-fuse-divide-subroutine
 | |
| 	CHECKREFSPEC=-fcheck-references
 | |
| 	;;
 | |
|   i?86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
 | |
| 	can_unwind_signal=yes
 | |
| 	;;
 | |
|   *-*-freebsd*)
 | |
| 	slow_pthread_self=
 | |
| 	;;
 | |
|   *-mingw*)
 | |
|         libgcj_flags="${libgcj_flags} -fno-omit-frame-pointer"
 | |
|   	# 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=
 | |
| 	;;
 | |
|   hppa*-hp-hpux11.*)
 | |
| 	slow_pthread_self=no
 | |
| 	can_unwind_signal=yes
 | |
| 	DIVIDESPEC=-fuse-divide-subroutine
 | |
| 	;;
 | |
|   sparc*-sun-solaris2.*)
 | |
| 	slow_pthread_self=
 | |
| 	can_unwind_signal=yes
 | |
| 	;;
 | |
| esac
 | |
| 
 | |
| case "${host}" in
 | |
|   x86_64-*-cygwin* | x86_64-*-mingw*)
 | |
| 	# Win32 DLLs are limited to 64k exported symbols each.
 | |
| 	enable_libgcj_sublibs_default=yes
 | |
| 	libgcj_sublib_ltflags='$(lt_host_flags) \
 | |
| 	    -Wl,-u,_ZN3org4ietf4jgss10GSSManagerC1Ev,-L..,-lgcj-noncore-dummy'
 | |
| 	libgcj_sublib_core_extra_deps=libgcj-noncore-dummy.dll.a
 | |
|   ;;
 | |
|   *-cygwin* | *-mingw*)
 | |
| 	fallback_backtrace_h=sysdep/i386/backtrace.h  
 | |
| 	# We need a frame pointer on Windows, so override BACKTRACESPEC
 | |
|   	BACKTRACESPEC=
 | |
| 	# Win32 DLLs are limited to 64k exported symbols each.
 | |
| 	enable_libgcj_sublibs_default=yes
 | |
| 	libgcj_sublib_ltflags='$(lt_host_flags) \
 | |
| 	    -Wl,-u,__ZN3org4ietf4jgss10GSSManagerC1Ev,-L..,-lgcj-noncore-dummy'
 | |
| 	libgcj_sublib_core_extra_deps=libgcj-noncore-dummy.dll.a
 | |
|   ;;
 | |
| esac
 | |
| 
 | |
| case "${host}" in
 | |
|   ia64-*)
 | |
| 	descriptor_h=sysdep/descriptor-y.h
 | |
| 	;;
 | |
| 
 | |
|   hppa*64*-*-hpux*)
 | |
| 	descriptor_h=sysdep/pa/descriptor-pa64-hpux.h
 | |
| 	;;
 | |
| 
 | |
|   hppa*-*-hpux*)
 | |
| 	descriptor_h=sysdep/pa/descriptor-pa32-hpux.h
 | |
| 	;;
 | |
| 
 | |
|   hppa*-*)
 | |
| 	descriptor_h=sysdep/pa/descriptor.h
 | |
| 	;;
 | |
| 
 | |
|   rs6000-* | powerpc*-*)
 | |
| 	descriptor_h=sysdep/powerpc/descriptor.h
 | |
| 	;;
 | |
| 
 | |
|   *)
 | |
| 	descriptor_h=sysdep/descriptor-n.h
 | |
| 	;;
 | |
| esac
 | |
| 
 | |
| case "${host}" in
 | |
|   *linux*|*-kfreebsd*-gnu|*-gnu*)
 | |
|     use_libgcj_bc=yes
 | |
|   ;;
 | |
|   *)
 | |
|     use_libgcj_bc=no
 | |
|   ;;
 | |
| esac    
 | |
| 
 | |
| libgcj_cflags="${libgcj_cflags} ${libgcj_flags}"
 | |
| libgcj_cxxflags="${libgcj_cxxflags} ${libgcj_flags}"
 | |
| libgcj_javaflags="${libgcj_javaflags} ${libgcj_flags}"
 |