OSDN Git Service

2010-12-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / config / arm / t-arm-elf
1 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2 # 2008 Free Software Foundation, Inc.
3 #
4 # This file is part of GCC.
5 #
6 # GCC is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3, or (at your option)
9 # any later version.
10 #
11 # GCC is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with GCC; see the file COPYING3.  If not see
18 # <http://www.gnu.org/licenses/>.
19
20 # For most CPUs we have an assembly soft-float implementations.
21 # However this is not true for ARMv6M.  Here we want to use the soft-fp C
22 # implementation.  The soft-fp code is only build for ARMv6M.  This pulls
23 # in the asm implementation for other CPUs.
24 LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \
25         _call_via_rX _interwork_call_via_rX \
26         _lshrdi3 _ashrdi3 _ashldi3 \
27         _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
28         _arm_fixdfsi _arm_fixunsdfsi \
29         _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 \
30         _arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi \
31         _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \
32         _clzsi2 _clzdi2 
33
34 MULTILIB_OPTIONS     = marm/mthumb
35 MULTILIB_DIRNAMES    = arm thumb
36 MULTILIB_EXCEPTIONS  = 
37 MULTILIB_MATCHES     =
38
39 #MULTILIB_OPTIONS      += march=armv7
40 #MULTILIB_DIRNAMES     += thumb2
41 #MULTILIB_EXCEPTIONS   += march=armv7* marm/*march=armv7*
42 #MULTILIB_MATCHES      += march?armv7=march?armv7-a
43 #MULTILIB_MATCHES      += march?armv7=march?armv7-r
44 #MULTILIB_MATCHES      += march?armv7=march?armv7-m
45 #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
46 #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
47 #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
48
49 # Not quite true.  We can support hard-vfp calling in Thumb2, but how do we
50 # express that here?  Also, we really need architecture v5e or later
51 # (mcrr etc).
52 MULTILIB_OPTIONS       += mfloat-abi=hard
53 MULTILIB_DIRNAMES      += fpu
54 MULTILIB_EXCEPTIONS    += *mthumb/*mfloat-abi=hard*
55
56 # MULTILIB_OPTIONS    += mcpu=ep9312
57 # MULTILIB_DIRNAMES   += ep9312
58 # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312*
59 #       
60 # MULTILIB_OPTIONS     += mlittle-endian/mbig-endian
61 # MULTILIB_DIRNAMES    += le be
62 # MULTILIB_MATCHES     += mbig-endian=mbe mlittle-endian=mle
63
64 # MULTILIB_OPTIONS    += mhard-float/msoft-float
65 # MULTILIB_DIRNAMES   += fpu soft
66 # MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
67
68 # MULTILIB_OPTIONS    += mno-thumb-interwork/mthumb-interwork
69 # MULTILIB_DIRNAMES   += normal interwork
70
71 # MULTILIB_OPTIONS    += fno-leading-underscore/fleading-underscore
72 # MULTILIB_DIRNAMES   += elf under
73
74 # MULTILIB_OPTIONS    += mcpu=arm7
75 # MULTILIB_DIRNAMES   += nofmult
76 # MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=arm7*
77 # # Note: the multilib_exceptions matches both -mthumb and
78 # # -mthumb-interwork
79 # #
80 # # We have to match all the arm cpu variants which do not have the
81 # # multiply instruction and treat them as if the user had specified
82 # # -mcpu=arm7.  Note that in the following the ? is interpreted as
83 # # an = for the purposes of matching command line options.
84 # # FIXME: There ought to be a better way to do this.
85 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm7d
86 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm7di
87 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm70
88 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm700
89 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm700i
90 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm710
91 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm710c
92 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm7100
93 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm7500
94 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm7500fe
95 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm6
96 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm60
97 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm600
98 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm610
99 # MULTILIB_MATCHES    += mcpu?arm7=mcpu?arm620
100
101 EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
102
103 # If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here
104 # EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o
105
106 LIBGCC = stmp-multilib
107 INSTALL_LIBGCC = install-multilib
108
109 # Currently there is a bug somewhere in GCC's alias analysis
110 # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
111 # Disabling function inlining is a workaround for this problem.
112 TARGET_LIBGCC2_CFLAGS = -fno-inline
113
114 # Assemble startup files.
115 $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
116         $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
117         -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
118
119 $(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
120         $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
121         -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm
122