OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgcc/] [Makefile.in] - Blame information for rev 849

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 734 jeremybenn
# Makefile.in
2
 
3
# Copyright (C) 2005, 2006, 2009, 2010, 2011 Free Software Foundation
4
#
5
# This file is part of GCC.
6
#
7
# GCC is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU Library General Public License as published by the Free
9
# Software Foundation; either version 3 of the License, or (at your option)
10
# any later version.
11
#
12
# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15
# more details.
16
#
17
# You should have received a copy of the GNU General Public License along
18
# with GCC; see the file COPYING3.  If not see
19
# .
20
#
21
 
22
libgcc_topdir = @libgcc_topdir@
23
host_subdir = @host_subdir@
24
 
25
gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc
26
 
27
srcdir = @srcdir@
28
 
29
prefix = @prefix@
30
 
31
exec_prefix = @exec_prefix@
32
libdir = @libdir@
33
shlib_slibdir = @slibdir@
34
 
35
SHELL = @SHELL@
36
 
37
cpu_type = @cpu_type@
38
enable_shared = @enable_shared@
39
double_type_size = @double_type_size@
40
long_double_type_size = @long_double_type_size@
41
decimal_float = @decimal_float@
42
enable_decimal_float = @enable_decimal_float@
43
fixed_point = @fixed_point@
44
 
45
host_noncanonical = @host_noncanonical@
46
target_noncanonical = @target_noncanonical@
47
 
48
# List of extra object files that should be compiled for this target machine.
49
# The rules for compiling them should be in the t-* file for the machine.
50
EXTRA_PARTS = @extra_parts@
51
 
52
extra-parts = libgcc-extra-parts
53
 
54
# Multilib support variables.
55
MULTISRCTOP =
56
MULTIBUILDTOP =
57
MULTIDIRS =
58
MULTISUBDIR =
59
MULTIDO = true
60
MULTICLEAN = true
61
 
62
INSTALL = @INSTALL@
63
INSTALL_PROGRAM = @INSTALL_PROGRAM@
64
INSTALL_DATA = @INSTALL_DATA@
65
mkinstalldirs = $(SHELL) $(libgcc_topdir)/mkinstalldirs
66
INSTALL_PARTS = $(EXTRA_PARTS)
67
 
68
objext = .o
69
 
70
AR = @AR@
71
AR_FLAGS = rc
72
 
73
CC = @CC@
74
CFLAGS = @CFLAGS@
75
RANLIB = @RANLIB@
76
LN_S = @LN_S@
77
 
78
PWD_COMMAND = $${PWDCMD-pwd}
79
 
80
# Flags to pass to a recursive make.
81
FLAGS_TO_PASS = \
82
        "AR=$(AR)" \
83
        "AR_FLAGS=$(AR_FLAGS)" \
84
        "CC=$(CC)" \
85
        "CFLAGS=$(CFLAGS)" \
86
        "DESTDIR=$(DESTDIR)" \
87
        "EXTRA_OFILES=$(EXTRA_OFILES)" \
88
        "HDEFINES=$(HDEFINES)" \
89
        "INSTALL=$(INSTALL)" \
90
        "INSTALL_DATA=$(INSTALL_DATA)" \
91
        "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
92
        "LDFLAGS=$(LDFLAGS)" \
93
        "LOADLIBES=$(LOADLIBES)" \
94
        "RANLIB=$(RANLIB)" \
95
        "SHELL=$(SHELL)" \
96
        "prefix=$(prefix)" \
97
        "exec_prefix=$(exec_prefix)" \
98
        "libdir=$(libdir)" \
99
        "libsubdir=$(libsubdir)" \
100
        "tooldir=$(tooldir)"
101
 
102
# Dependencies for "all" are set later in the file.
103
all: all-multi
104
        # Now that we have built all the objects, we need to copy
105
        # them back to the GCC directory.  Too many things (other
106
        # in-tree libraries, and DejaGNU) know about the layout
107
        # of the build tree, for now.
108
        $(MAKE) install-leaf DESTDIR=$(gcc_objdir) \
109
          slibdir= libsubdir= MULTIOSDIR=$(MULTIDIR)
110
 
111
.PHONY: all-multi
112
all-multi:
113
        # If this is the top-level multilib, build all the other
114
        # multilibs.
115
        @: $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all
116
 
117
.PHONY: check installcheck
118
check:
119
installcheck:
120
 
121
.PHONY: all clean
122
 
123
clean:
124
        -rm -f config.h libgcc_tm.h stamp-h stmp-ldirs libgcc.map
125
        -rm -f *$(objext)
126
        -rm -f *.dep
127
        -rm -f *.a
128
        -rm -f libunwind$(SHLIB_EXT)
129
        -rm -f libgcc_s*
130
        @$(MULTICLEAN) multi-clean DO=clean
131
distclean: clean
132
        @$(MULTICLEAN) multi-clean DO=distclean
133
        -rm -f *~ Makefile config.cache config.status multilib.out
134
        -rm -f config.log
135
maintainer-clean realclean: distclean
136
 
137
Makefile: $(srcdir)/Makefile.in config.status
138
        CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status
139
 
140
# Depending on Makefile makes sure that config.status has been re-run
141
# if needed.  This prevents problems with parallel builds.
142
config.h: stamp-h ; @true
143
stamp-h: $(srcdir)/config.in config.status Makefile
144
        CONFIG_FILES= CONFIG_HEADERS=config.h:$(srcdir)/config.in $(SHELL) ./config.status
145
 
146
config.status: $(srcdir)/configure $(srcdir)/config.host
147
        $(SHELL) ./config.status --recheck
148
 
149
AUTOCONF = autoconf
150
configure_deps = \
151
        $(srcdir)/../config/enable.m4 \
152
        $(srcdir)/../config/tls.m4 \
153
        $(srcdir)/../config/acx.m4 \
154
        $(srcdir)/../config/no-executables.m4 \
155
        $(srcdir)/../config/override.m4 \
156
        $(srcdir)/../config/dfp.m4 \
157
 
158
$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(configure_deps)
159
        cd $(srcdir) && $(AUTOCONF)
160
 
161
include $(gcc_objdir)/libgcc.mvars
162
 
163
# Flags to pass to recursive makes.
164
 
165
AR_FOR_TARGET = $(AR)
166
AR_FLAGS_FOR_TARGET =
167
AR_CREATE_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) rc
168
AR_EXTRACT_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) x
169
AWK = @AWK@
170
GCC_FOR_TARGET = $(CC)
171
LIPO = @LIPO@
172
LIPO_FOR_TARGET = $(LIPO)
173
MACHMODE_H = machmode.h mode-classes.def insn-modes.h
174
NM = @NM@
175
NM_FOR_TARGET = $(NM)
176
RANLIB_FOR_TARGET = $(RANLIB)
177
STRIP = @STRIP@
178
STRIP_FOR_TARGET = $(STRIP)
179
 
180
# Directory in which the compiler finds libraries etc.
181
libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
182
# Used to install the shared libgcc.
183
slibdir = @slibdir@
184
# Maybe used for DLLs on Windows targets.
185
toolexecdir = @toolexecdir@
186
toolexeclibdir = @toolexeclibdir@
187
 
188
export AR_FOR_TARGET
189
export AR_CREATE_FOR_TARGET
190
export AR_FLAGS_FOR_TARGET
191
export AR_EXTRACT_FOR_TARGET
192
export AWK
193
export DESTDIR
194
export GCC_FOR_TARGET
195
export INCLUDES
196
export INSTALL_DATA
197
export LIB1ASMSRC
198
export LIBGCC2_CFLAGS
199
export LIPO_FOR_TARGET
200
export MACHMODE_H
201
export NM_FOR_TARGET
202
export STRIP_FOR_TARGET
203
export RANLIB_FOR_TARGET
204
export libsubdir
205
export slibdir
206
export toolexecdir
207
export toolexeclibdir
208
 
209
version := $(shell $(CC) -dumpversion)
210
 
211
ifeq ($(decimal_float),yes)
212
ifeq ($(enable_decimal_float),bid)
213
DECNUMINC = -I$(srcdir)/config/libbid -DENABLE_DECIMAL_BID_FORMAT
214
else
215
DECNUMINC = -I$(srcdir)/../libdecnumber/$(enable_decimal_float) \
216
            -I$(srcdir)/../libdecnumber
217
endif
218
else
219
DECNUMINC =
220
endif
221
 
222
# Options to use when compiling libgcc2.a.
223
#
224
LIBGCC2_DEBUG_CFLAGS = -g
225
LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
226
                 $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
227
                 -fbuilding-libgcc -fno-stack-protector \
228
                 $(INHIBIT_LIBC_CFLAGS)
229
 
230
# Additional options to use when compiling libgcc2.a.
231
# Some targets override this to -isystem include
232
LIBGCC2_INCLUDES =
233
 
234
# Additional target-dependent options for compiling libgcc2.a.
235
HOST_LIBGCC2_CFLAGS =
236
 
237
PICFLAG = @PICFLAG@
238
 
239
# Defined in libgcc2.c, included only in the static library.
240
LIB2FUNCS_ST = _eprintf __gcc_bcmp
241
 
242
# List of functions not to build from libgcc2.c.
243
LIB2FUNCS_EXCLUDE =
244
 
245
# These might cause a divide overflow trap and so are compiled with
246
# unwinder info.
247
LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
248
 
249
# List of extra C and assembler files to add to static and shared libgcc2.
250
# Assembler files should have names ending in `.S'.
251
LIB2ADD =
252
 
253
# List of extra C and assembler files to add to static libgcc2.
254
# Assembler files should have names ending in `.S'.
255
LIB2ADD_ST =
256
 
257
# Specify the directories to be searched for header files.
258
# Both . and srcdir are used, in that order,
259
# so that *config.h will be found in the compilation
260
# subdirectory rather than in the source directory.
261
# -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file
262
# currently being compiled, in both source trees, to be examined as well.
263
INCLUDES = -I. -I$(@D) -I$(gcc_objdir) \
264
           -I$(srcdir) -I$(srcdir)/$(@D) -I$(srcdir)/../gcc \
265
           -I$(srcdir)/../include $(DECNUMINC)
266
 
267
# Forcibly remove any profiling-related flags.  There is no point
268
# in supporting profiled bootstrap in this library.
269
override CFLAGS := $(filter-out -fprofile-generate -fprofile-use,$(CFLAGS))
270
 
271
# CFLAGS first is not perfect; normally setting CFLAGS should override any
272
# options in LIBGCC2_CFLAGS.  But LIBGCC2_CFLAGS may contain -g0, and CFLAGS
273
# will usually contain -g, so for the moment CFLAGS goes first.  We must
274
# include CFLAGS - that's where multilib options live.
275
INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
276
                  $(INCLUDES) @set_have_cc_tls@ @set_use_emutls@
277
 
278
# Options to use when compiling crtbegin/end.
279
CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
280
  -finhibit-size-directive -fno-inline -fno-exceptions \
281
  -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
282
  -fno-stack-protector \
283
  $(INHIBIT_LIBC_CFLAGS)
284
 
285
# Extra flags to use when compiling crt{begin,end}.o.
286
CRTSTUFF_T_CFLAGS =
287
 
288
MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
289
MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
290
 
291
MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
292
inst_libdir = $(libsubdir)$(MULTISUBDIR)
293
inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
294
 
295
gcc_compile_bare = $(CC) $(INTERNAL_CFLAGS)
296
compile_deps = -MT $@ -MD -MP -MF $(basename $@).dep
297
gcc_compile = $(gcc_compile_bare) -o $@ $(compile_deps)
298
gcc_s_compile = $(gcc_compile) -DSHARED
299
 
300
objects = $(filter %$(objext),$^)
301
 
302
# Collect any host-specific information from Makefile fragments.
303
 
304
LIBGCC_VER_GNU_PREFIX = __
305
LIBGCC_VER_FIXEDPOINT_GNU_PREFIX = __
306
LIBGCC_VER_SYMBOLS_PREFIX =
307
 
308
FPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \
309
    _fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
310
    _lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf \
311
    _sf_to_df _sf_to_tf _thenan_sf _sf_to_usi _usi_to_sf
312
 
313
DPBIT_FUNCS = _pack_df _unpack_df _addsub_df _mul_df _div_df \
314
    _fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df \
315
    _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \
316
    _df_to_sf _df_to_tf _thenan_df _df_to_usi _usi_to_df
317
 
318
TPBIT_FUNCS = _pack_tf _unpack_tf _addsub_tf _mul_tf _div_tf \
319
    _fpcmp_parts_tf _compare_tf _eq_tf _ne_tf _gt_tf _ge_tf \
320
    _lt_tf _le_tf _unord_tf _si_to_tf _tf_to_si _negate_tf _make_tf \
321
    _tf_to_df _tf_to_sf _thenan_tf _tf_to_usi _usi_to_tf
322
 
323
# Additional sources to handle exceptions; overridden by targets as needed.
324
LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
325
  $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
326
LIB2ADDEHSTATIC = $(LIB2ADDEH)
327
LIB2ADDEHSHARED = $(LIB2ADDEH)
328
 
329
# nm flags to list global symbols in libgcc object files.
330
SHLIB_NM_FLAGS = -pg
331
 
332
# Don't build libunwind by default.
333
LIBUNWIND =
334
SHLIBUNWIND_LINK =
335
SHLIBUNWIND_INSTALL =
336
 
337
tmake_file = @tmake_file@
338
include $(srcdir)/empty.mk $(tmake_file)
339
 
340
# Collect target defines and headers from config.host.
341
libgcc_tm_defines = @tm_defines@
342
libgcc_tm_file = @tm_file@
343
libgcc_tm.h: libgcc_tm.stamp; @true
344
libgcc_tm.stamp:
345
        DEFINES='$(libgcc_tm_defines)' HEADERS='$(libgcc_tm_file)' \
346
                $(srcdir)/mkheader.sh > tmp-libgcc_tm.h
347
        $(SHELL) $(srcdir)/../move-if-change tmp-libgcc_tm.h libgcc_tm.h
348
        echo timestamp > $@
349
 
350
# Only handle shared libraries if both:
351
#   - the user requested them
352
#   - we know how to build them
353
ifeq ($(SHLIB_LINK),)
354
  enable_shared := no
355
endif
356
 
357
ifeq ($(enable_shared),yes)
358
  iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/shared-object.mk,$(iter-items))
359
 
360
  install-shared = install-shared
361
 
362
  ifneq ($(LIBUNWIND),)
363
    install-libunwind = install-libunwind
364
  endif
365
 
366
# For -fvisibility=hidden.  We need both a -fvisibility=hidden on
367
# the command line, and a #define to prevent libgcc2.h etc from
368
# overriding that with #pragmas.
369
vis_hide = @vis_hide@
370
 
371
ifneq (,$(vis_hide))
372
 
373
# If we have -fvisibility=hidden, then we need to generate hide
374
# lists for object files implemented in assembly.
375
ASM_HIDDEN_OP = @asm_hidden_op@
376
 
377
define gen-hide-list
378
$(NM) -pg $< | \
379
  $(AWK) 'NF == 3 && $$2 !~ /^[UN]$$/ && $$3 !~ /.*_compat/ \
380
         && $$3 !~ /.*@.*/ \
381
         { print "\t$(ASM_HIDDEN_OP)", $$3 }' > $@T
382
mv -f $@T $@
383
endef
384
else
385
gen-hide-list = echo > $@
386
endif
387
 
388
else
389
# Not enable_shared.
390
iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/static-object.mk,$(iter-items))
391
vis_hide =
392
gen-hide-list = echo > \$@
393
endif
394
 
395
LIB2ADD += enable-execute-stack.c
396
 
397
# While emutls.c has nothing to do with EH, it is in LIB2ADDEH*
398
# instead of LIB2ADD because that's the way to be sure on some targets
399
# (e.g. *-*-darwin*) only one copy of it is linked.
400
LIB2ADDEH += $(srcdir)/emutls.c
401
LIB2ADDEHSTATIC += $(srcdir)/emutls.c
402
LIB2ADDEHSHARED += $(srcdir)/emutls.c
403
 
404
# Library members defined in libgcc2.c.
405
lib2funcs = _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 _cmpdi2 _ucmpdi2    \
406
            _clear_cache _trampoline __main _absvsi2 \
407
            _absvdi2 _addvsi3 _addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 \
408
            _negvsi2 _negvdi2 _ctors _ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2  \
409
            _ctzsi2 _ctzdi2 _popcount_tab _popcountsi2 _popcountdi2        \
410
            _paritysi2 _paritydi2 _powisf2 _powidf2 _powixf2 _powitf2      \
411
            _mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 _divxc3        \
412
            _divtc3 _bswapsi2 _bswapdi2 _clrsbsi2 _clrsbdi2
413
 
414
# The floating-point conversion routines that involve a single-word integer.
415
# XX stands for the integer mode.
416
swfloatfuncs = $(patsubst %,_fixuns%XX,sf df xf)
417
 
418
# Likewise double-word routines.
419
dwfloatfuncs = $(patsubst %,_fix%XX,sf df xf tf) \
420
               $(patsubst %,_fixuns%XX,sf df xf tf) \
421
               $(patsubst %,_floatXX%,sf df xf tf) \
422
               $(patsubst %,_floatunXX%,sf df xf tf)
423
 
424
ifeq ($(LIB2_SIDITI_CONV_FUNCS),)
425
  lib2funcs += $(subst XX,si,$(swfloatfuncs))
426
  lib2funcs += $(subst XX,di,$(dwfloatfuncs))
427
endif
428
 
429
# These might cause a divide overflow trap and so are compiled with
430
# unwinder info.
431
LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
432
 
433
# Remove any objects from lib2funcs and LIB2_DIVMOD_FUNCS that are
434
# defined as optimized assembly code in LIB1ASMFUNCS or as C code
435
# in LIB2FUNCS_EXCLUDE.
436
lib2funcs := $(filter-out $(LIB2FUNCS_EXCLUDE) $(LIB1ASMFUNCS),$(lib2funcs))
437
LIB2_DIVMOD_FUNCS := $(filter-out $(LIB2FUNCS_EXCLUDE) $(LIB1ASMFUNCS), \
438
                       $(LIB2_DIVMOD_FUNCS))
439
 
440
# Build "libgcc1" (assembly) components.
441
ifeq ($(enable_shared),yes)
442
 
443
lib1asmfuncs-o = $(patsubst %,%$(objext),$(LIB1ASMFUNCS))
444
$(lib1asmfuncs-o): %$(objext): $(srcdir)/config/$(LIB1ASMSRC) %.vis
445
        $(gcc_compile) -DL$* -xassembler-with-cpp -c $< -include $*.vis
446
$(patsubst %,%.vis,$(LIB1ASMFUNCS)): %.vis: %_s$(objext)
447
        $(gen-hide-list)
448
libgcc-objects += $(lib1asmfuncs-o)
449
 
450
lib1asmfuncs-s-o = $(patsubst %,%_s$(objext),$(LIB1ASMFUNCS))
451
$(lib1asmfuncs-s-o): %_s$(objext): $(srcdir)/config/$(LIB1ASMSRC)
452
        $(gcc_s_compile) -DL$* -xassembler-with-cpp -c $<
453
libgcc-s-objects += $(lib1asmfuncs-s-o)
454
 
455
else
456
 
457
lib1asmfuncs-o = $(patsubst %,%$(objext),$(LIB1ASMFUNCS))
458
$(lib1asmfuncs-o): %$(objext): $(srcdir)/config/$(LIB1ASMSRC)
459
        $(gcc_compile) -DL$* -xassembler-with-cpp -c $<
460
libgcc-objects += $(lib1asmfuncs-o)
461
 
462
endif
463
 
464
# Build lib2funcs.  For the static library also include LIB2FUNCS_ST.
465
lib2funcs-o = $(patsubst %,%$(objext),$(lib2funcs) $(LIB2FUNCS_ST))
466
$(lib2funcs-o): %$(objext): $(srcdir)/libgcc2.c
467
        $(gcc_compile) -DL$* -c $< $(vis_hide)
468
libgcc-objects += $(lib2funcs-o)
469
 
470
ifeq ($(enable_shared),yes)
471
lib2funcs-s-o = $(patsubst %,%_s$(objext),$(lib2funcs))
472
$(lib2funcs-s-o): %_s$(objext): $(srcdir)/libgcc2.c
473
        $(gcc_s_compile) -DL$* -c $<
474
libgcc-s-objects += $(lib2funcs-s-o)
475
endif
476
 
477
ifneq ($(LIB2_SIDITI_CONV_FUNCS),)
478
# Build libgcc2.c for each conversion function, with a specific
479
# L definition and LIBGCC2_UNITS_PER_WORD setting.  The DImode
480
# functions are built with a wordsize of 4; the TImode functions are
481
# built with the same labels, but a wordsize of 8.
482
 
483
sifuncs := $(filter-out $(LIB2FUNCS_EXCLUDE),$(subst XX,si,$(swfloatfuncs)))
484
difuncs := $(filter-out $(LIB2FUNCS_EXCLUDE),$(subst XX,di,$(dwfloatfuncs)))
485
tifuncs := $(filter-out $(LIB2FUNCS_EXCLUDE),$(subst XX,ti,$(dwfloatfuncs)))
486
 
487
iter-items := $(sifuncs) $(difuncs) $(tifuncs)
488
iter-labels := $(sifuncs) $(difuncs) $(difuncs)
489
iter-sizes := $(patsubst %,4,$(sifuncs) $(difuncs)) $(patsubst %,8,$(tifuncs))
490
 
491
include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/siditi-object.mk,$(iter-items))
492
 
493
libgcc-objects += $(patsubst %,%$(objext),$(sifuncs) $(difuncs) $(tifuncs))
494
ifeq ($(enable_shared),yes)
495
libgcc-s-objects += $(patsubst %,%_s$(objext),$(sifuncs) $(difuncs) $(tifuncs))
496
endif
497
endif
498
 
499
# Build LIB2_DIVMOD_FUNCS.
500
lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS))
501
$(lib2-divmod-o): %$(objext): $(srcdir)/libgcc2.c
502
        $(gcc_compile) -DL$* -c $< \
503
          -fexceptions -fnon-call-exceptions $(vis_hide)
504
libgcc-objects += $(lib2-divmod-o)
505
 
506
ifeq ($(enable_shared),yes)
507
lib2-divmod-s-o = $(patsubst %,%_s$(objext),$(LIB2_DIVMOD_FUNCS))
508
$(lib2-divmod-s-o): %_s$(objext): $(srcdir)/libgcc2.c
509
        $(gcc_s_compile) -DL$* -c $< \
510
          -fexceptions -fnon-call-exceptions
511
libgcc-s-objects += $(lib2-divmod-s-o)
512
endif
513
 
514
ifeq ($(TPBIT),)
515
# _sf_to_tf and _df_to_tf require tp-bit.c being compiled in.
516
FPBIT_FUNCS := $(filter-out _sf_to_tf,$(FPBIT_FUNCS))
517
DPBIT_FUNCS := $(filter-out _df_to_tf,$(DPBIT_FUNCS))
518
endif
519
 
520
fpbit-src := $(srcdir)/fp-bit.c
521
 
522
# Build FPBIT.
523
ifneq ($(FPBIT),)
524
fpbit-o = $(patsubst %,%$(objext),$(FPBIT_FUNCS))
525
$(fpbit-o): %$(objext): $(fpbit-src)
526
        $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DFLOAT $(FPBIT_CFLAGS) -c $< $(vis_hide)
527
libgcc-objects += $(fpbit-o)
528
 
529
ifeq ($(enable_shared),yes)
530
fpbit-s-o = $(patsubst %,%_s$(objext),$(FPBIT_FUNCS))
531
$(fpbit-s-o): %_s$(objext): $(fpbit-src)
532
        $(gcc_s_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DFLOAT $(FPBIT_CFLAGS)  -c $<
533
libgcc-s-objects += $(fpbit-s-o)
534
endif
535
endif
536
 
537
# Build DPBIT.
538
ifneq ($(DPBIT),)
539
dpbit-o = $(patsubst %,%$(objext),$(DPBIT_FUNCS))
540
$(dpbit-o): %$(objext): $(fpbit-src)
541
        $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* $(DPBIT_CFLAGS) -c $< $(vis_hide)
542
libgcc-objects += $(dpbit-o)
543
 
544
ifeq ($(enable_shared),yes)
545
dpbit-s-o = $(patsubst %,%_s$(objext),$(DPBIT_FUNCS))
546
$(dpbit-s-o): %_s$(objext): $(fpbit-src)
547
        $(gcc_s_compile) -DFINE_GRAINED_LIBRARIES -DL$* $(DPBIT_CFLAGS) -c $<
548
libgcc-s-objects += $(dpbit-s-o)
549
endif
550
endif
551
 
552
# Build TPBIT.
553
ifneq ($(TPBIT),)
554
tpbit-o = $(patsubst %,%$(objext),$(TPBIT_FUNCS))
555
$(tpbit-o): %$(objext): $(fpbit-src)
556
        $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DTFLOAT $(TPBIT_CFLAGS) -c $< $(vis_hide)
557
libgcc-objects += $(tpbit-o)
558
 
559
ifeq ($(enable_shared),yes)
560
tpbit-s-o = $(patsubst %,%_s$(objext),$(TPBIT_FUNCS))
561
$(tpbit-s-o): %_s$(objext): $(fpbit-src)
562
        $(gcc_s_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DTFLOAT $(TPBIT_CFLAGS) -c $<
563
libgcc-s-objects += $(tpbit-s-o)
564
endif
565
endif
566
 
567
# Build decimal floating point support.
568
ifeq ($(decimal_float),yes)
569
 
570
# If $DFP_ENABLE is set, then we want all data type sizes.
571
ifneq ($(DFP_ENABLE),)
572
D32PBIT = 1
573
D64PBIT = 1
574
D128PBIT = 1
575
endif
576
 
577
dfp-filenames =
578
ifneq ($(D32PBIT)$(D64PBIT)$(D128PBIT),)
579
ifeq ($(enable_decimal_float),bid)
580
dfp-filenames += bid_decimal_globals bid_decimal_data \
581
                 bid_binarydecimal bid_convert_data \
582
                 _isinfd32 _isinfd64 _isinfd128 bid64_noncomp \
583
                 bid128_noncomp bid128_fma bid_round bid_from_int \
584
                 bid64_add bid128_add bid64_div bid128_div \
585
                 bid64_mul bid128_mul bid64_compare bid128_compare \
586
                 bid128 bid32_to_bid64 bid32_to_bid128 bid64_to_bid128 \
587
                 bid64_to_int32 bid64_to_int64 \
588
                 bid64_to_uint32 bid64_to_uint64 \
589
                 bid128_to_int32 bid128_to_int64 \
590
                 bid128_to_uint32 bid128_to_uint64
591
else
592
dfp-filenames += decContext decNumber decExcept decRound decLibrary decDouble decPacked decQuad decSingle
593
endif
594
endif
595
 
596
dfp-objects = $(patsubst %,%$(objext),$(dfp-filenames))
597
ifeq ($(enable_decimal_float),bid)
598
$(dfp-objects): %$(objext): $(srcdir)/config/libbid/%.c
599
else
600
$(dfp-objects): %$(objext): $(srcdir)/../libdecnumber/%.c
601
endif
602
        $(gcc_compile) -c $<
603
libgcc-objects += $(dfp-objects)
604
 
605
decbits-filenames =
606
ifneq ($(enable_decimal_float),bid)
607
ifneq ($(D32PBIT),)
608
decbits-filenames += decimal32
609
endif
610
 
611
ifneq ($(D64PBIT),)
612
decbits-filenames += decimal64
613
endif
614
 
615
ifneq ($(D128PBIT),)
616
decbits-filenames += decimal128
617
endif
618
endif
619
 
620
decbits-objects = $(patsubst %,%$(objext),$(decbits-filenames))
621
ifeq ($(enable_decimal_float),bid)
622
$(decbits-objects): %$(objext): $(srcdir)/config/libbid/%.c
623
else
624
$(decbits-objects): %$(objext): $(srcdir)/../libdecnumber/$(enable_decimal_float)/%.c
625
endif
626
        $(gcc_compile) -c $<
627
libgcc-objects += $(decbits-objects)
628
 
629
# Next build individual support functions.
630
D32PBIT_FUNCS = _addsub_sd _div_sd _mul_sd _plus_sd _minus_sd \
631
        _eq_sd _ne_sd _lt_sd _gt_sd _le_sd _ge_sd \
632
        _sd_to_si _sd_to_di _sd_to_usi _sd_to_udi \
633
        _si_to_sd _di_to_sd _usi_to_sd _udi_to_sd \
634
        _sd_to_sf _sd_to_df _sd_to_xf _sd_to_tf \
635
        _sf_to_sd _df_to_sd _xf_to_sd _tf_to_sd \
636
        _sd_to_dd _sd_to_td _unord_sd _conv_sd
637
 
638
D64PBIT_FUNCS = _addsub_dd _div_dd _mul_dd _plus_dd _minus_dd \
639
        _eq_dd _ne_dd _lt_dd _gt_dd _le_dd _ge_dd \
640
        _dd_to_si _dd_to_di _dd_to_usi _dd_to_udi \
641
        _si_to_dd _di_to_dd _usi_to_dd _udi_to_dd \
642
        _dd_to_sf _dd_to_df _dd_to_xf _dd_to_tf \
643
        _sf_to_dd _df_to_dd _xf_to_dd _tf_to_dd \
644
        _dd_to_sd _dd_to_td _unord_dd _conv_dd
645
 
646
D128PBIT_FUNCS = _addsub_td _div_td _mul_td _plus_td _minus_td \
647
        _eq_td _ne_td _lt_td _gt_td _le_td _ge_td \
648
        _td_to_si _td_to_di _td_to_usi _td_to_udi \
649
        _si_to_td _di_to_td _usi_to_td _udi_to_td \
650
        _td_to_sf _td_to_df _td_to_xf _td_to_tf \
651
        _sf_to_td _df_to_td _xf_to_td _tf_to_td \
652
        _td_to_sd _td_to_dd _unord_td _conv_td
653
 
654
ifeq ($(enable_decimal_float),bid)
655
ifneq ($(D32PBIT),)
656
D32PBIT_FUNCS:=$(filter-out _plus_sd _minus_sd _conv_sd, $(D32PBIT_FUNCS))
657
endif
658
 
659
ifneq ($(D64PBIT),)
660
D64PBIT_FUNCS:=$(filter-out _plus_dd _minus_dd _conv_dd, $(D64PBIT_FUNCS))
661
endif
662
 
663
ifneq ($(D128PBIT),)
664
D128PBIT_FUNCS:=$(filter-out _plus_td _minus_td _conv_td, $(D128PBIT_FUNCS))
665
endif
666
endif
667
 
668
ifneq ($(D32PBIT),)
669
d32pbit-o = $(patsubst %,%$(objext),$(D32PBIT_FUNCS))
670
ifeq ($(enable_decimal_float),bid)
671
$(d32pbit-o): %$(objext): $(srcdir)/config/libbid/%.c
672
else
673
$(d32pbit-o): %$(objext): $(srcdir)/dfp-bit.c
674
endif
675
        $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=32 -c $<
676
libgcc-objects += $(d32pbit-o)
677
endif
678
 
679
ifneq ($(D64PBIT),)
680
d64pbit-o = $(patsubst %,%$(objext),$(D64PBIT_FUNCS))
681
ifeq ($(enable_decimal_float),bid)
682
$(d64pbit-o): %$(objext): $(srcdir)/config/libbid/%.c
683
else
684
$(d64pbit-o): %$(objext): $(srcdir)/dfp-bit.c
685
endif
686
        $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=64 -c $<
687
libgcc-objects += $(d64pbit-o)
688
endif
689
 
690
ifneq ($(D128PBIT),)
691
d128pbit-o = $(patsubst %,%$(objext),$(D128PBIT_FUNCS))
692
ifeq ($(enable_decimal_float),bid)
693
$(d128pbit-o): %$(objext): $(srcdir)/config/libbid/%.c
694
else
695
$(d128pbit-o): %$(objext): $(srcdir)/dfp-bit.c
696
endif
697
        $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -DWIDTH=128 -c $<
698
libgcc-objects += $(d128pbit-o)
699
endif
700
 
701
endif
702
 
703
ifeq ($(SYNC),yes)
704
libgcc-sync-size-funcs := $(foreach op, add sub or and xor nand, \
705
                            sync_fetch_and_$(op) \
706
                            sync_$(op)_and_fetch) \
707
                          sync_bool_compare_and_swap \
708
                          sync_val_compare_and_swap \
709
                          sync_lock_test_and_set
710
 
711
libgcc-sync-size-funcs := $(foreach prefix, $(libgcc-sync-size-funcs), \
712
                            $(foreach suffix, 1 2 4 8 16, \
713
                              $(prefix)_$(suffix)))
714
 
715
libgcc-sync-size-funcs-o = $(patsubst %,%$(objext),$(libgcc-sync-size-funcs))
716
$(libgcc-sync-size-funcs-o): %$(objext): $(srcdir)/sync.c
717
        $(gcc_compile) $(SYNC_CFLAGS) \
718
          -DFN=`echo "$*" | sed 's/_[^_]*$$//'` \
719
          -DSIZE=`echo "$*" | sed 's/.*_//'` \
720
          -c $< $(vis_hide)
721
libgcc-objects += $(libgcc-sync-size-funcs-o)
722
 
723
libgcc-sync-funcs := sync_synchronize
724
 
725
libgcc-sync-funcs-o = $(patsubst %,%$(objext),$(libgcc-sync-funcs))
726
$(libgcc-sync-funcs-o): %$(objext): $(srcdir)/sync.c
727
        $(gcc_compile) $(SYNC_CFLAGS) \
728
          -DL$* \
729
          -c $< $(vis_hide)
730
libgcc-objects += $(libgcc-sync-funcs-o)
731
 
732
ifeq ($(enable_shared),yes)
733
libgcc-sync-size-funcs-s-o = $(patsubst %,%_s$(objext), \
734
                               $(libgcc-sync-size-funcs))
735
$(libgcc-sync-size-funcs-s-o): %_s$(objext): $(srcdir)/sync.c
736
        $(gcc_s_compile) $(SYNC_CFLAGS) \
737
          -DFN=`echo "$*" | sed 's/_[^_]*$$//'` \
738
          -DSIZE=`echo "$*" | sed 's/.*_//'` \
739
          -c $<
740
libgcc-s-objects += $(libgcc-sync-size-funcs-s-o)
741
 
742
libgcc-sync-funcs-s-o = $(patsubst %,%_s$(objext),$(libgcc-sync-funcs))
743
$(libgcc-sync-funcs-s-o): %_s$(objext): $(srcdir)/sync.c
744
        $(gcc_s_compile) $(SYNC_CFLAGS) \
745
          -DL$* \
746
          -c $<
747
libgcc-s-objects += $(libgcc-sync-funcs-s-o)
748
endif
749
endif
750
 
751
# Build fixed-point support.
752
ifeq ($(fixed_point),yes)
753
 
754
# Generate permutations of function name and mode
755
fixed-labels := $(shell $(SHELL) $(srcdir)/gen-fixed.sh arith labels)
756
fixed-funcs := $(shell $(SHELL) $(srcdir)/gen-fixed.sh arith funcs)
757
fixed-modes := $(shell $(SHELL) $(srcdir)/gen-fixed.sh arith modes)
758
 
759
# Generate the rules for each arithmetic function
760
iter-items := $(fixed-funcs)
761
iter-labels := $(fixed-labels)
762
iter-from := $(fixed-modes)
763
iter-to := $(fixed-modes)
764
include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/fixed-obj.mk,$(iter-items))
765
 
766
# Add arithmetic functions to list of objects to be built
767
libgcc-objects += $(patsubst %,%$(objext),$(fixed-funcs))
768
ifeq ($(enable_shared),yes)
769
libgcc-s-objects += $(patsubst %,%_s$(objext),$(fixed-funcs))
770
endif
771
 
772
# Convert from or to fractional
773
fixed-conv-funcs := $(shell $(SHELL) $(srcdir)/gen-fixed.sh conv funcs)
774
fixed-conv-labels := $(shell $(SHELL) $(srcdir)/gen-fixed.sh conv labels)
775
fixed-conv-from := $(shell $(SHELL) $(srcdir)/gen-fixed.sh conv from)
776
fixed-conv-to :=  $(shell $(SHELL) $(srcdir)/gen-fixed.sh conv to)
777
 
778
# Generate the make rules for each conversion function
779
iter-items := $(fixed-conv-funcs)
780
iter-labels := $(fixed-conv-labels)
781
iter-from := $(fixed-conv-from)
782
iter-to := $(fixed-conv-to)
783
include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/fixed-obj.mk,$(iter-items))
784
 
785
# Add conversion functions to list of objects to be built
786
libgcc-objects += $(patsubst %,%$(objext),$(fixed-conv-funcs))
787
ifeq ($(enable_shared),yes)
788
libgcc-s-objects += $(patsubst %,%_s$(objext),$(fixed-conv-funcs))
789
endif
790
 
791
endif
792
 
793
# Build LIB2ADD and LIB2ADD_ST.
794
ifneq ($(filter-out %.c %.S %.asm,$(LIB2ADD) $(LIB2ADD_ST)),)
795
$(error Unsupported files in LIB2ADD or LIB2ADD_ST.)
796
endif
797
 
798
libgcc-objects += $(addsuffix $(objext),$(basename $(notdir $(LIB2ADD))))
799
libgcc-objects += $(addsuffix $(objext),$(basename $(notdir $(LIB2ADD_ST))))
800
 
801
c_flags :=
802
iter-items := $(LIB2ADD) $(LIB2ADD_ST)
803
include $(iterator)
804
 
805
ifeq ($(enable_shared),yes)
806
libgcc-s-objects += $(addsuffix _s$(objext),$(basename $(notdir $(LIB2ADD))))
807
endif
808
 
809
# Build LIB2ADDEH, LIB2ADDEHSTATIC, and LIB2ADDEHSHARED.  If we don't have
810
# libgcc_eh.a, only LIB2ADDEH matters.  If we do, only LIB2ADDEHSTATIC and
811
# LIB2ADDEHSHARED matter.  (Usually all three are identical.)
812
 
813
c_flags := -fexceptions
814
 
815
ifeq ($(enable_shared),yes)
816
 
817
libgcc-eh-objects += $(addsuffix $(objext),$(basename $(notdir $(LIB2ADDEHSTATIC))))
818
libgcc-s-objects += $(addsuffix _s$(objext),$(basename $(notdir $(LIB2ADDEHSHARED))))
819
 
820
iter-items := $(sort $(LIB2ADDEHSTATIC) $(LIB2ADDEHSHARED))
821
include $(iterator)
822
 
823
else
824
# Not shared.  LIB2ADDEH are added to libgcc.a.
825
 
826
libgcc-objects += $(addsuffix $(objext),$(basename $(notdir $(LIB2ADDEH))))
827
 
828
iter-items := $(LIB2ADDEH)
829
include $(iterator)
830
 
831
endif
832
 
833
# Build LIBUNWIND. Use -fno-exceptions so that the unwind library does
834
# not generate calls to __gcc_personality_v0.
835
 
836
c_flags := -fno-exceptions
837
 
838
libunwind-objects += $(addsuffix $(objext),$(basename $(notdir $(LIBUNWIND))))
839
 
840
ifeq ($(enable_shared),yes)
841
libunwind-s-objects += $(addsuffix _s$(objext),$(basename $(notdir $(LIBUNWIND))))
842
endif
843
 
844
iter-items := $(LIBUNWIND)
845
include $(iterator)
846
 
847
# Build libgcov components.
848
 
849
# Defined in libgcov.c, included only in gcov library
850
LIBGCOV = _gcov _gcov_merge_add _gcov_merge_single _gcov_merge_delta \
851
    _gcov_fork _gcov_execl _gcov_execlp _gcov_execle \
852
    _gcov_execv _gcov_execvp _gcov_execve \
853
    _gcov_interval_profiler _gcov_pow2_profiler _gcov_one_value_profiler \
854
    _gcov_indirect_call_profiler _gcov_average_profiler _gcov_ior_profiler \
855
    _gcov_merge_ior
856
 
857
libgcov-objects = $(patsubst %,%$(objext),$(LIBGCOV))
858
 
859
$(libgcov-objects): %$(objext): $(srcdir)/libgcov.c
860
        $(gcc_compile) -DL$* -c $(srcdir)/libgcov.c
861
 
862
 
863
# Static libraries.
864
libgcc.a: $(libgcc-objects)
865
libgcov.a: $(libgcov-objects)
866
libunwind.a: $(libunwind-objects)
867
libgcc_eh.a: $(libgcc-eh-objects)
868
 
869
libgcc.a libgcov.a libunwind.a libgcc_eh.a:
870
        -rm -f $@
871
 
872
        objects="$(objects)";                                   \
873
        if test -z "$$objects"; then                            \
874
          echo 'int __libgcc_eh_dummy;' > eh_dummy.c;           \
875
          $(gcc_compile_bare) $(vis_hide) -c eh_dummy.c         \
876
             -o eh_dummy$(objext);                              \
877
          objects=eh_dummy$(objext);                            \
878
        fi;                                                     \
879
        $(AR_CREATE_FOR_TARGET) $@ $$objects
880
 
881
        $(RANLIB) $@
882
 
883
all: libgcc.a libgcov.a
884
 
885
ifneq ($(LIBUNWIND),)
886
all: libunwind.a
887
libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
888
endif
889
 
890
ifeq ($(enable_shared),yes)
891
all: libgcc_eh.a libgcc_s$(SHLIB_EXT)
892
ifneq ($(LIBUNWIND),)
893
all: libunwind$(SHLIB_EXT)
894
endif
895
endif
896
 
897
ifeq ($(enable_shared),yes)
898
 
899
# Map-file generation.
900
ifneq ($(SHLIB_MKMAP),)
901
libgcc.map: $(SHLIB_MKMAP) $(SHLIB_MAPFILES) $(libgcc-s-objects)
902
        { $(NM) $(SHLIB_NM_FLAGS) $(libgcc-s-objects); echo %%; \
903
          cat $(SHLIB_MAPFILES) \
904
            | sed -e '/^[       ]*#/d' \
905
                  -e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' \
906
            | $(gcc_compile_bare) -E -xassembler-with-cpp -; \
907
        } | $(AWK) -f $(SHLIB_MKMAP) $(SHLIB_MKMAP_OPTS) > tmp-$@
908
        mv tmp-$@ $@
909
libgcc_s$(SHLIB_EXT): libgcc.map
910
mapfile = libgcc.map
911
endif
912
 
913
libgcc-std.ver: $(srcdir)/libgcc-std.ver.in
914
        sed -e 's/__PFX__/$(LIBGCC_VER_GNU_PREFIX)/g' \
915
            -e 's/__FIXPTPFX__/$(LIBGCC_VER_FIXEDPOINT_GNU_PREFIX)/g' < $< > $@
916
 
917
libgcc_s$(SHLIB_EXT): $(libgcc-s-objects) $(extra-parts)
918
        # @multilib_flags@ is still needed because this may use
919
        # $(GCC_FOR_TARGET) and $(LIBGCC2_CFLAGS) directly.
920
        # @multilib_dir@ is not really necessary, but sometimes it has
921
        # more uses than just a directory name.
922
        $(mkinstalldirs) $(MULTIDIR)
923
        $(subst @multilib_flags@,$(CFLAGS) -B./,$(subst \
924
                @multilib_dir@,$(MULTIDIR),$(subst \
925
                @shlib_objs@,$(objects),$(subst \
926
                @shlib_base_name@,libgcc_s,$(subst \
927
                @shlib_map_file@,$(mapfile),$(subst \
928
                @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
929
                @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
930
 
931
libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
932
        # @multilib_flags@ is still needed because this may use
933
        # $(GCC_FOR_TARGET) and $(LIBGCC2_CFLAGS) directly.
934
        # @multilib_dir@ is not really necessary, but sometimes it has
935
        # more uses than just a directory name.
936
        $(mkinstalldirs) $(MULTIDIR)
937
        $(subst @multilib_flags@,$(CFLAGS) -B./,$(subst \
938
                @multilib_dir@,$(MULTIDIR),$(subst \
939
                @shlib_objs@,$(objects),$(subst \
940
                @shlib_base_name@,libunwind,$(subst \
941
                @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIBUNWIND_LINK))))))
942
 
943
endif
944
 
945
# Build the standard GCC startfiles and endfiles.
946
ALL_CRT_CFLAGS = $(CFLAGS) $(CRTSTUFF_CFLAGS) $(INCLUDES)
947
crt_compile = $(CC) $(ALL_CRT_CFLAGS) -o $@ $(compile_deps)
948
 
949
ifeq ($(CUSTOM_CRTSTUFF),)
950
# Compile two additional files that are linked with every program
951
# linked using GCC on systems using COFF or ELF, for the sake of C++
952
# constructors.
953
crtbegin$(objext): $(srcdir)/crtstuff.c
954
        $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN
955
 
956
crtend$(objext): $(srcdir)/crtstuff.c
957
        $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_END
958
 
959
# These are versions of crtbegin and crtend for shared libraries.
960
crtbeginS$(objext): $(srcdir)/crtstuff.c
961
        $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) -c $< -DCRT_BEGIN -DCRTSTUFFS_O
962
 
963
crtendS$(objext): $(srcdir)/crtstuff.c
964
        $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) -c $< -DCRT_END -DCRTSTUFFS_O
965
 
966
# This is a version of crtbegin for -static links.
967
crtbeginT$(objext): $(srcdir)/crtstuff.c
968
        $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O
969
endif
970
 
971
ifeq ($(CUSTOM_CRTIN),)
972
# -x assembler-with-cpp is only needed on case-insensitive filesystem.
973
crti$(objext): $(srcdir)/config/$(cpu_type)/crti.S
974
        $(crt_compile) -c -x assembler-with-cpp $<
975
 
976
crtn$(objext): $(srcdir)/config/$(cpu_type)/crtn.S
977
        $(crt_compile) -c -x assembler-with-cpp $<
978
endif
979
 
980
# Build extra startfiles in the libgcc directory.
981
.PHONY: libgcc-extra-parts
982
libgcc-extra-parts: $(EXTRA_PARTS)
983
 
984
        # Early copyback; see "all" above for the rationale.  The
985
        # early copy is necessary so that the gcc -B options find
986
        # the right startup files when linking shared libgcc.
987
        $(mkinstalldirs) $(gcc_objdir)$(MULTISUBDIR)
988
        parts="$(EXTRA_PARTS)";                                 \
989
        for file in $$parts; do                                 \
990
          rm -f $(gcc_objdir)$(MULTISUBDIR)/$$file;             \
991
          $(INSTALL_DATA) $$file $(gcc_objdir)$(MULTISUBDIR)/;  \
992
          case $$file in                                        \
993
            *.a)                                                \
994
              $(RANLIB) $(gcc_objdir)$(MULTISUBDIR)/$$file ;;   \
995
          esac;                                                 \
996
        done
997
 
998
all: $(extra-parts)
999
 
1000
$(libgcc-objects) $(libgcc-s-objects) $(libgcc-eh-objects) \
1001
        $(libgcov-objects) \
1002
        $(libunwind-objects) $(libunwind-s-objects) \
1003
        $(EXTRA_PARTS): libgcc_tm.h
1004
 
1005
install-unwind_h:
1006
        dest=$(gcc_objdir)/include/tmp$$$$-unwind.h; \
1007
        cp unwind.h $$dest; \
1008
        chmod a+r $$dest; \
1009
        sh $(srcdir)/../move-if-change $$dest $(gcc_objdir)/include/unwind.h
1010
 
1011
all: install-unwind_h
1012
 
1013
# Documentation targets (empty).
1014
.PHONY: info html dvi pdf install-info install-html install-pdf
1015
 
1016
info:
1017
install-info:
1018
html:
1019
install-html:
1020
dvi:
1021
pdf:
1022
install-pdf:
1023
 
1024
# Install rules.  These do not depend on "all", so that they can be invoked
1025
# recursively from it.
1026
install-libunwind:
1027
        $(mkinstalldirs) $(DESTDIR)$(inst_slibdir)
1028
 
1029
        # NOTE: Maybe this should go into $(inst_libdir), but this
1030
        # is where the old mklibgcc.in put it.
1031
        $(INSTALL_DATA) libunwind.a $(DESTDIR)$(inst_slibdir)/
1032
        chmod 644 $(DESTDIR)$(inst_slibdir)/libunwind.a
1033
        $(RANLIB) $(DESTDIR)$(inst_slibdir)/libunwind.a
1034
 
1035
        $(subst @multilib_dir@,$(MULTIDIR),$(subst \
1036
                @shlib_base_name@,libunwind,$(subst \
1037
                @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIBUNWIND_INSTALL))))
1038
 
1039
install-shared:
1040
        $(mkinstalldirs) $(DESTDIR)$(inst_libdir)
1041
 
1042
        $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
1043
        chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
1044
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
1045
 
1046
        $(subst @multilib_dir@,$(MULTIDIR),$(subst \
1047
                @shlib_base_name@,libgcc_s,$(subst \
1048
                @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))
1049
 
1050
install-leaf: $(install-shared) $(install-libunwind)
1051
        $(mkinstalldirs) $(DESTDIR)$(inst_libdir)
1052
 
1053
        $(INSTALL_DATA) libgcc.a $(DESTDIR)$(inst_libdir)/
1054
        chmod 644 $(DESTDIR)$(inst_libdir)/libgcc.a
1055
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc.a
1056
        $(INSTALL_DATA) libgcov.a $(DESTDIR)$(inst_libdir)/
1057
        chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a
1058
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a
1059
 
1060
        parts="$(INSTALL_PARTS)";                               \
1061
        for file in $$parts; do                                 \
1062
          rm -f $(DESTDIR)$(inst_libdir)/$$file;                \
1063
          $(INSTALL_DATA) $$file $(DESTDIR)$(inst_libdir)/;     \
1064
          case $$file in                                        \
1065
            *.a)                                                \
1066
              $(RANLIB) $(gcc_objdir)$(MULTISUBDIR)/$$file ;;   \
1067
          esac;                                                 \
1068
        done
1069
 
1070
install: install-leaf
1071
        @: $(MAKE) ; $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install
1072
 
1073
install-strip: install
1074
 
1075
.PHONY: install install-shared install-libunwind install-strip
1076
 
1077
# Don't export variables to the environment, in order to not confuse
1078
# configure.
1079
.NOEXPORT:
1080
 
1081
include $(srcdir)/empty.mk $(wildcard *.dep)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.