| # 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" |
| 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 |
| ;; |
| 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 |
| 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* | \ |
| 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" |
| case "${host}" in |
| mipsel*-linux* | mipsisa32el*-linux*) |
| enable_hash_synchronization_default=yes |
| disable_dladdr=yes |
| ;; |
| esac |
| ;; |
| *-*-darwin*) |
| enable_hash_synchronization_default=no |
| slow_pthread_self= |
| can_unwind_signal=no |
| ;; |
| *-*-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}" |