1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
# -*- shell-script -*-
# Copyright (C) 2012-2015 Free Software Foundation, Inc.
# Contributed by Richard Henderson <rth@redhat.com>.
#
# This file is part of the GNU Atomic Library (libatomic).
#
# Libatomic is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Libatomic is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# Under Section 7 of GPL version 3, you are granted additional
# permissions described in the GCC Runtime Library Exception, version
# 3.1, as published by the Free Software Foundation.
#
# You should have received a copy of the GNU General Public License and
# a copy of the GCC Runtime Library Exception along with this program;
# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
# <http://www.gnu.org/licenses/>.
# Map the target cpu to an ARCH sub-directory. At the same time,
# work out any special compilation flags as necessary.
# Give operating systems the opportunity to discard XCFLAGS modifications based
# on ${target_cpu}. For example to allow proper use of multilibs.
configure_tgt_pre_target_cpu_XCFLAGS="${XCFLAGS}"
case "${target_cpu}" in
alpha*)
# fenv.c needs this option to generate inexact exceptions.
XCFLAGS="${XCFLAGS} -mfp-trap-mode=sui"
ARCH=alpha
;;
rs6000 | powerpc*) ARCH=powerpc ;;
sh*) ARCH=sh ;;
arm*)
ARCH=arm
case "${target}" in
arm*-*-freebsd*)
;;
*)
# ??? Detect when -march=armv7 is already enabled.
try_ifunc=yes
;;
esac
;;
sparc)
case " ${CC} ${CFLAGS} " in
*" -m64 "*)
;;
*)
if test -z "$with_cpu"; then
XCFLAGS="${XCFLAGS} -mcpu=v9"
fi
esac
ARCH=sparc
;;
sparc64|sparcv9)
case " ${CC} ${CFLAGS} " in
*" -m32 "*)
XCFLAGS="${XCFLAGS} -mcpu=v9"
;;
esac
ARCH=sparc
;;
i[3456]86)
case " ${CC} ${CFLAGS} " in
*" -m64 "*|*" -mx32 "*)
;;
*)
if test -z "$with_arch"; then
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
fi
esac
ARCH=x86
# ??? Detect when -march=i686 is already enabled.
try_ifunc=yes
;;
x86_64)
case " ${CC} ${CFLAGS} " in
*" -m32 "*)
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
;;
*)
;;
esac
ARCH=x86
# ??? Detect when -mcx16 is already enabled.
try_ifunc=yes
;;
*) ARCH="${target_cpu}" ;;
esac
# The cpu configury is always most relevant.
if test -d ${srcdir}/config/$ARCH ; then
config_path="$ARCH"
fi
# Other system configury
case "${target}" in
arm*-*-linux*)
# OS support for atomic primitives.
config_path="${config_path} linux/arm posix"
;;
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu \
| *-*-netbsd* | *-*-freebsd* | *-*-openbsd* \
| *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11* \
| *-*-darwin* | *-*-aix* | *-*-cygwin*)
# POSIX system. The OS is supported.
config_path="${config_path} posix"
;;
*-*-mingw*)
# OS support for atomic primitives.
case ${target_thread_file} in
win32)
config_path="${config_path} mingw"
;;
posix)
config_path="${config_path} posix"
;;
esac
;;
*-*-rtems*)
XCFLAGS="${configure_tgt_pre_target_cpu_XCFLAGS}"
config_path="rtems"
;;
*-*-elf*)
# ??? No target OS. We could be targeting bare-metal kernel-mode,
# or user-mode for some custom OS. If the target supports TAS,
# we can build our own spinlocks, given there are no signals.
# If the target supports disabling interrupts, we can work in
# kernel-mode, given the system is not multi-processor.
UNSUPPORTED=1
;;
*)
# Who are you?
UNSUPPORTED=1
;;
esac
|