OSDN Git Service

2008-08-08 Thomas Quinot <quinot@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / gcc-interface / Makefile.in
1 # Makefile for GNU Ada Compiler (GNAT).
2 #   Copyright (C) 1994-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 # The makefile built from this file lives in the language subdirectory.
21 # Its purpose is to provide support for:
22 #
23 # 1) recursion where necessary, and only then (building .o's), and
24 # 2) building and debugging cc1 from the language subdirectory, and
25 # 3) nothing else.
26 #
27 # The parent makefile handles all other chores, with help from the
28 # language makefile fragment, of course.
29 #
30 # The targets for external use are:
31 # all, TAGS, ???mostlyclean, ???clean.
32
33 # This makefile will only work with Gnu make.
34 # The rules are written assuming a minimum subset of tools are available:
35 #
36 # Required:
37 #      MAKE:    Only Gnu make will work.
38 #      MV:      Must accept (at least) one, maybe wildcard, source argument,
39 #               a file or directory destination, and support creation/
40 #               modification date preservation.  Gnu mv -f works.
41 #      RM:      Must accept an arbitrary number of space separated file
42 #               arguments, or one wildcard argument. Gnu rm works.
43 #      RMDIR:   Must delete a directory and all its contents. Gnu rm -rf works.
44 #      ECHO:    Must support command line redirection. Any Unix-like
45 #               shell will typically provide this, otherwise a custom version
46 #               is trivial to write.
47 #      AR:      Gnu ar works.
48 #      MKDIR:   Gnu mkdir works.
49 #      CHMOD:   Gnu chmod works.
50 #      true:    Does nothing and returns a normal successful return code.
51 #      pwd:     Prints the current directory on stdout.
52 #      cd:      Change directory.
53 #
54 # Optional:
55 #      BISON:   Gnu bison works.
56 #      FLEX:    Gnu flex works.
57 #      Other miscellaneous tools for obscure targets.
58
59 # Suppress smart makes who think they know how to automake Yacc files
60 .y.c:
61
62 # Variables that exist for you to override.
63 # See below for how to change them for certain systems.
64
65 # Various ways of specifying flags for compilations:
66 # CFLAGS is for the user to override to, e.g., do a bootstrap with -O2.
67 # BOOT_CFLAGS is the value of CFLAGS to pass
68 # to the stage2 and stage3 compilations
69 CFLAGS = -g
70 BOOT_CFLAGS = -O $(CFLAGS)
71 # These exists to be overridden by the t-* files, respectively.
72 T_CFLAGS =
73
74 CC = cc
75 BISON = bison
76 BISONFLAGS =
77 ECHO = echo
78 LEX = flex
79 LEXFLAGS =
80 CHMOD = chmod
81 LN = ln
82 LN_S = ln -s
83 CP = cp -p
84 MV = mv -f
85 RM = rm -f
86 RMDIR = rm -rf
87 MKDIR = mkdir -p
88 AR = ar
89 AR_FLAGS = rc
90 LS = ls
91 RANLIB = @RANLIB@
92 RANLIB_FLAGS = @ranlib_flags@
93
94 SHELL = @SHELL@
95 PWD_COMMAND = $${PWDCMD-pwd}
96 # How to copy preserving the date
97 INSTALL_DATA_DATE = cp -p
98 MAKEINFO = makeinfo
99 TEXI2DVI = texi2dvi
100 TEXI2PDF = texi2pdf
101 GNATBIND_FLAGS = -static -x
102 ADA_CFLAGS =
103 ADAFLAGS = -W -Wall -gnatpg -gnata
104 SOME_ADAFLAGS =-gnata
105 FORCE_DEBUG_ADAFLAGS = -g
106 GNATLIBFLAGS = -gnatpg -nostdinc
107 GNATLIBCFLAGS = -g -O2
108 GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \
109         -DIN_RTS
110 ALL_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS)
111 MOST_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(SOME_ADAFLAGS)
112 THREAD_KIND = native
113 THREADSLIB =
114 GMEM_LIB =
115 MISCLIB =
116 SYMDEPS = $(LIBINTL_DEP)
117 OUTPUT_OPTION = @OUTPUT_OPTION@
118
119 objext = .o
120 exeext =
121 arext  = .a
122 soext  = .so
123 shext  =
124 hyphen = -
125
126 # Define this as & to perform parallel make on a Sequent.
127 # Note that this has some bugs, and it seems currently necessary
128 # to compile all the gen* files first by hand to avoid erroneous results.
129 P =
130
131 # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
132 # It specifies -B./.
133 # It also specifies -B$(tooldir)/ to find as and ld for a cross compiler.
134 GCC_CFLAGS = $(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS)
135
136 # Tools to use when building a cross-compiler.
137 # These are used because `configure' appends `cross-make'
138 # to the makefile when making a cross-compiler.
139
140 # We don't use cross-make.  Instead we use the tools from the build tree,
141 # if they are available.
142 # program_transform_name and objdir are set by configure.in.
143 program_transform_name =
144 objdir = .
145
146 target_alias=@target_alias@
147 target=@target@
148 xmake_file = @xmake_file@
149 tmake_file = @tmake_file@
150 host_canonical=@host@
151 #version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < $(srcdir)/version.c`
152 #mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c`
153
154 # Directory where sources are, from where we are.
155 VPATH = $(srcdir)
156
157 fsrcdir := $(shell cd $(srcdir);${PWD_COMMAND})
158 fsrcpfx := $(shell cd $(srcdir);${PWD_COMMAND})/
159 fcurdir := $(shell ${PWD_COMMAND})
160 fcurpfx := $(shell ${PWD_COMMAND})/
161
162 # Top build directory, relative to here.
163 top_builddir = ../..
164
165 # Internationalization library.
166 LIBINTL = @LIBINTL@
167 LIBINTL_DEP = @LIBINTL_DEP@
168
169 # Any system libraries needed just for GNAT.
170 SYSLIBS = @GNAT_LIBEXC@
171
172 # List of extra object files linked in with various programs.
173 EXTRA_GNATTOOLS_OBJS = ../../prefix.o ../../version.o
174
175 # List of target dependent sources, overridden below as necessary
176 TARGET_ADA_SRCS =
177
178 # Type of tools build we are doing; default is not compiling tools.
179 TOOLSCASE =
180
181 # Multilib handling
182 MULTISUBDIR = 
183 RTSDIR = rts$(subst /,_,$(MULTISUBDIR))
184
185 # End of variables for you to override.
186
187 all: all.indirect
188
189 # This tells GNU Make version 3 not to put all variables in the environment.
190 .NOEXPORT:
191
192 # tmake_file and xmake_file expand to lists with entries of the form
193 # $(srcdir)/config/...  but here $(srcdir) is the ada subdirectory so we
194 # need to adjust the paths.  There can't be spaces in the subst arguments
195 # or we get spurious spaces in the actual list of files to include.
196
197 # target overrides
198 ifneq ($(tmake_file),)
199 include $(subst /config,/../config,$(tmake_file))
200 endif
201
202 # host overrides
203 ifneq ($(xmake_file),)
204 include $(subst /config,/../config,$(xmake_file))
205 endif
206 \f
207 # Now figure out from those variables how to compile and link.
208
209 all.indirect: Makefile ../gnat1$(exeext)
210
211 # IN_GCC distinguishes between code compiled into GCC itself and other
212 # programs built during a bootstrap.
213 # autoconf inserts -DCROSS_DIRECTORY_STRUCTURE if we are building a cross
214 # compiler which does not use the native libraries and headers.
215 INTERNAL_CFLAGS = @CROSS@ -DIN_GCC
216
217 # This is the variable actually used when we compile.
218 LOOSE_CFLAGS = `echo $(CFLAGS) $(WARN2_CFLAGS)|sed -e 's/-pedantic//g' -e 's/-Wtraditional//g'`
219 ALL_CFLAGS = $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_CFLAGS)
220
221 # Likewise.
222 ALL_CPPFLAGS = $(CPPFLAGS)
223
224 # This is where we get libiberty.a from.
225 LIBIBERTY = ../../libiberty/libiberty.a
226
227 # How to link with both our special library facilities
228 # and the system's installed libraries.
229 LIBS = $(LIBINTL) $(LIBIBERTY) $(SYSLIBS)
230 LIBDEPS = $(LIBINTL_DEP) $(LIBIBERTY)
231 # Default is no TGT_LIB; one might be passed down or something
232 TGT_LIB =
233 TOOLS_LIBS = $(EXTRA_GNATTOOLS_OBJS) targext.o link.o $(LIBGNAT) ../../../libiberty/libiberty.a $(SYSLIBS) $(TGT_LIB)
234
235 # Specify the directories to be searched for header files.
236 # Both . and srcdir are used, in that order,
237 # so that tm.h and config.h will be found in the compilation
238 # subdirectory rather than in the source directory.
239 INCLUDES = -I- -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config \
240         -I$(srcdir)/../../include
241
242 ADA_INCLUDES = -I- -I. -I$(srcdir)
243
244 INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir) -I$(fsrcdir)/../config \
245         -I$(fsrcdir)/../../include -I$(fsrcdir)/..
246 ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir) -I$(fsrcdir)/gcc
247
248 # Avoid a lot of time thinking about remaking Makefile.in and *.def.
249 .SUFFIXES: .in .def
250
251 # Say how to compile Ada programs.
252 .SUFFIXES: .ada .adb .ads .asm
253
254 # Always use -I$(srcdir)/config when compiling.
255 .asm.o:
256         $(CC) -c -x assembler $< $(OUTPUT_OPTION)
257
258 .c.o:
259         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< \
260           $(OUTPUT_OPTION)
261
262 .adb.o:
263         $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
264
265 .ads.o:
266         $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
267
268 # how to regenerate this file
269 Makefile: ../config.status $(srcdir)/gcc-interface/Makefile.in $(srcdir)/Makefile.in $(srcdir)/../version.c
270         cd ..; \
271         LANGUAGES="$(CONFIG_LANGUAGES)" \
272         CONFIG_HEADERS= \
273         CONFIG_FILES="ada/gcc-interface/Makefile ada/Makefile" $(SHELL) config.status
274
275 # This tells GNU make version 3 not to export all the variables
276 # defined in this file into the environment.
277 .NOEXPORT:
278 \f
279 # Lists of files for various purposes.
280
281 GNATLINK_OBJS = gnatlink.o \
282  a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
283  gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
284  osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
285  sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \
286  types.o validsw.o widechar.o
287
288 GNATMAKE_OBJS = a-except.o ali.o ali-util.o s-casuti.o \
289  alloc.o atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o\
290  erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
291  gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
292  make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \
293  mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o output.o \
294  prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o prj-err.o prj-ext.o prj-nmsc.o \
295  prj-pars.o prj-part.o prj-proc.o prj-strt.o prj-tree.o prj-util.o \
296  rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
297  scans.o scng.o sdefault.o sfn_scan.o s-purexc.o s-htable.o \
298  sinfo.o sinput.o sinput-c.o sinput-p.o \
299  snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o switch.o switch-m.o \
300  table.o targparm.o tempdir.o tree_io.o types.o \
301  uintp.o uname.o urealp.o usage.o widechar.o \
302  $(EXTRA_GNATMAKE_OBJS)
303
304 # Convert the target variable into a space separated list of architecture,
305 # manufacturer, and operating system and assign each of those to its own
306 # variable.
307
308 host:=$(subst -, ,$(host_canonical))
309 targ:=$(subst -, ,$(target))
310 arch:=$(word 1,$(targ))
311 ifeq ($(words $(targ)),2)
312   manu:=
313   osys:=$(word 2,$(targ))
314 else
315   manu:=$(word 2,$(targ))
316   osys:=$(word 3,$(targ))
317 endif
318
319 # LIBGNAT_TARGET_PAIRS is a list of pairs of filenames.
320 # The members of each pair must be separated by a '<' and no whitespace.
321 # Each pair must be separated by some amount of whitespace from the following
322 # pair.
323
324 # Non-tasking case:
325
326 LIBGNAT_TARGET_PAIRS = \
327 a-intnam.ads<a-intnam-dummy.ads \
328 s-inmaop.adb<s-inmaop-dummy.adb \
329 s-intman.adb<s-intman-dummy.adb \
330 s-osinte.ads<s-osinte-dummy.ads \
331 s-osprim.adb<s-osprim-posix.adb \
332 s-taprop.adb<s-taprop-dummy.adb \
333 s-taspri.ads<s-taspri-dummy.ads
334
335 # When using the GCC exception handling mechanism, we need to use an
336 # alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
337
338 EH_MECHANISM=
339
340 # Default shared object option. Note that we rely on the fact that the "soname"
341 # option will always be present and last in this flag, so that we can have
342 # $(SO_OPTS)libgnat-x.xx
343
344 SO_OPTS = -Wl,-soname,
345
346 # Default gnatlib-shared target.
347 # By default, equivalent to gnatlib.
348 # Set to gnatlib-shared-default, gnatlib-shared-dual, or a platform specific
349 # target when supported.
350 GNATLIB_SHARED = gnatlib
351
352 # default value for gnatmake's target dependent file
353 MLIB_TGT = mlib-tgt
354
355 # By default, do not distribute prefix.o (in libgccprefix), since it is only
356 # needed by external GNAT tools such as gnatdist and Glide.
357 # Override this variable on native platforms when needed.
358 PREFIX_OBJS =
359
360 # To avoid duplicate code, use this variable to set PREFIX_OBJS when needed:
361 PREFIX_REAL_OBJS = ../prefix.o \
362   ../../libiberty/concat.o     \
363   ../../libiberty/xmalloc.o    \
364   ../../libiberty/xstrdup.o    \
365   ../../libiberty/xexit.o
366
367 # By default, build socket support units. On platforms that do not support
368 # sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS 
369 # to LIBGNAT_TARGET_PAIRS.
370
371 GNATRTL_SOCKETS_OBJS = g-socket$(objext) g-socthi$(objext) \
372   g-soliop$(objext) g-sothco$(objext) g-sttsne$(objext)
373
374 DUMMY_SOCKETS_TARGET_PAIRS = \
375   g-socket.adb<g-socket-dummy.adb \
376   g-socket.ads<g-socket-dummy.ads \
377   g-socthi.adb<g-socthi-dummy.adb \
378   g-socthi.ads<g-socthi-dummy.ads \
379   g-sothco.adb<g-sothco-dummy.adb \
380   g-sothco.ads<g-sothco-dummy.ads \
381   g-sttsne.ads<g-sttsne-dummy.ads
382
383 LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
384
385 # $(filter-out PATTERN...,TEXT) removes all PATTERN words from TEXT.
386 # $(strip STRING) removes leading and trailing spaces from STRING.
387 # If what's left is null then it's a match.
388
389 ifeq ($(strip $(filter-out m68k% wrs vx%,$(targ))),)
390   LIBGNAT_TARGET_PAIRS = \
391   a-intnam.ads<a-intnam-vxworks.ads \
392   a-numaux.ads<a-numaux-vxworks.ads \
393   s-inmaop.adb<s-inmaop-posix.adb \
394   s-interr.adb<s-interr-vxworks.adb \
395   s-intman.ads<s-intman-vxworks.ads \
396   s-intman.adb<s-intman-vxworks.adb \
397   s-osinte.adb<s-osinte-vxworks.adb \
398   s-osinte.ads<s-osinte-vxworks.ads \
399   s-osprim.adb<s-osprim-vxworks.adb \
400   s-parame.ads<s-parame-vxworks.ads \
401   s-parame.adb<s-parame-vxworks.adb \
402   s-stchop.ads<s-stchop-limit.ads \
403   s-stchop.adb<s-stchop-vxworks.adb \
404   s-taprop.adb<s-taprop-vxworks.adb \
405   s-taspri.ads<s-taspri-vxworks.ads \
406   s-tpopsp.adb<s-tpopsp-vxworks.adb \
407   s-vxwork.ads<s-vxwork-m68k.ads \
408   g-socthi.ads<g-socthi-vxworks.ads \
409   g-socthi.adb<g-socthi-vxworks.adb \
410   g-stsifd.adb<g-stsifd-sockets.adb \
411   g-sttsne.adb<g-sttsne-vxworks.adb \
412   g-sttsne.ads<g-sttsne-locking.ads \
413   system.ads<system-vxworks-m68k.ads
414
415   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
416
417   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
418   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
419
420   EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
421   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
422
423   ifeq ($(strip $(filter-out yes,$(TRACE))),)
424     LIBGNAT_TARGET_PAIRS += \
425     s-traces.adb<s-traces-default.adb \
426     s-tratas.adb<s-tratas-default.adb \
427     s-trafor.adb<s-trafor-default.adb \
428     s-trafor.ads<s-trafor-default.ads \
429     s-tfsetr.adb<s-tfsetr-vxworks.adb
430   endif
431 endif
432
433 ifeq ($(strip $(filter-out powerpc% wrs vxworks,$(targ))),)
434   LIBGNAT_TARGET_PAIRS = \
435   a-intnam.ads<a-intnam-vxworks.ads \
436   a-numaux.ads<a-numaux-vxworks.ads \
437   s-inmaop.adb<s-inmaop-posix.adb \
438   s-intman.ads<s-intman-vxworks.ads \
439   s-intman.adb<s-intman-vxworks.adb \
440   s-osprim.adb<s-osprim-vxworks.adb \
441   s-parame.ads<s-parame-vxworks.ads \
442   s-parame.adb<s-parame-vxworks.adb \
443   s-stchop.ads<s-stchop-limit.ads \
444   s-stchop.adb<s-stchop-vxworks.adb \
445   s-taprop.adb<s-taprop-vxworks.adb \
446   s-taspri.ads<s-taspri-vxworks.ads \
447   s-vxwork.ads<s-vxwork-ppc.ads \
448   g-socthi.ads<g-socthi-vxworks.ads \
449   g-socthi.adb<g-socthi-vxworks.adb \
450   g-stsifd.adb<g-stsifd-sockets.adb \
451   g-sttsne.adb<g-sttsne-vxworks.adb \
452   g-sttsne.ads<g-sttsne-locking.ads
453
454   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
455
456   ifeq ($(strip $(filter-out yes,$(TRACE))),)
457     LIBGNAT_TARGET_PAIRS += \
458     s-traces.adb<s-traces-default.adb \
459     s-trafor.adb<s-trafor-default.adb \
460     s-trafor.ads<s-trafor-default.ads \
461     s-tratas.adb<s-tratas-default.adb \
462     s-tfsetr.adb<s-tfsetr-vxworks.adb
463   endif
464
465   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
466     LIBGNAT_TARGET_PAIRS += \
467     s-osinte.adb<s-osinte-vxworks-rtp.adb \
468     s-osinte.ads<s-osinte-vxworks6.ads \
469     s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
470     system.ads<system-vxworks-ppc-rtp.ads
471
472     EXTRA_GNATRTL_NONTASKING_OBJS=s-vxwexc.o
473   else
474     LIBGNAT_TARGET_PAIRS += \
475     s-interr.adb<s-interr-vxworks.adb \
476     s-tpopsp.adb<s-tpopsp-vxworks.adb \
477     system.ads<system-vxworks-ppc.ads
478
479     ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
480       LIBGNAT_TARGET_PAIRS += \
481       s-osinte.ads<s-osinte-vxworks6.ads \
482       s-osinte.adb<s-osinte-vxworks-kernel.adb
483     else
484       LIBGNAT_TARGET_PAIRS += \
485       s-osinte.ads<s-osinte-vxworks.ads \
486       s-osinte.adb<s-osinte-vxworks.adb
487     endif
488
489     EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-vxwexc.o
490   endif
491
492   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
493
494   EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
495   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
496 endif
497
498 # vxworksae / vxworks 653
499 ifeq ($(strip $(filter-out powerpc% wrs vxworksae,$(targ))),)
500   # target pairs for kernel + vthreads runtime
501   LIBGNAT_TARGET_PAIRS = \
502   a-elchha.adb<a-elchha-vxworks-ppc-full.adb \
503   a-intnam.ads<a-intnam-vxworks.ads \
504   a-numaux.ads<a-numaux-vxworks.ads \
505   g-io.adb<g-io-vxworks-ppc-cert.adb \
506   g-io.ads<g-io-vxworks-ppc-cert.ads \
507   s-inmaop.adb<s-inmaop-posix.adb \
508   s-interr.adb<s-interr-vxworks.adb \
509   s-intman.ads<s-intman-vxworks.ads \
510   s-intman.adb<s-intman-vxworks.adb \
511   s-osinte.adb<s-osinte-vxworks.adb \
512   s-osinte.ads<s-osinte-vxworks.ads \
513   s-osprim.adb<s-osprim-vxworks.adb \
514   s-parame.ads<s-parame-ae653.ads \
515   s-parame.adb<s-parame-vxworks.adb \
516   s-taprop.adb<s-taprop-vxworks.adb \
517   s-taspri.ads<s-taspri-vxworks.ads \
518   s-tpopsp.adb<s-tpopsp-vxworks.adb \
519   s-vxwork.ads<s-vxwork-ppc.ads \
520   g-socthi.ads<g-socthi-vxworks.ads \
521   g-socthi.adb<g-socthi-vxworks.adb \
522   g-stsifd.adb<g-stsifd-sockets.adb \
523   g-sttsne.adb<g-sttsne-vxworks.adb \
524   g-sttsne.ads<g-sttsne-locking.ads \
525   system.ads<system-vxworks-ppc-vthread.ads
526
527   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
528
529   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-vxwexc.o
530   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
531
532   # Extra pairs for the vthreads runtime
533   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
534     LIBGNAT_TARGET_PAIRS += \
535     s-thread.adb<s-thread-ae653.adb
536     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o
537   endif
538
539   ifeq ($(strip $(filter-out yes,$(TRACE))),)
540     LIBGNAT_TARGET_PAIRS += \
541     s-traces.adb<s-traces-default.adb \
542     s-trafor.adb<s-trafor-default.adb \
543     s-trafor.ads<s-trafor-default.ads \
544     s-tratas.adb<s-tratas-default.adb \
545     s-tfsetr.adb<s-tfsetr-vxworks.adb
546   endif
547 endif
548
549 ifeq ($(strip $(filter-out sparc% wrs vx%,$(targ))),)
550   LIBGNAT_TARGET_PAIRS = \
551   a-intnam.ads<a-intnam-vxworks.ads \
552   a-numaux.ads<a-numaux-vxworks.ads \
553   s-inmaop.adb<s-inmaop-posix.adb \
554   s-interr.adb<s-interr-vxworks.adb \
555   s-intman.ads<s-intman-vxworks.ads \
556   s-intman.adb<s-intman-vxworks.adb \
557   s-osinte.adb<s-osinte-vxworks.adb \
558   s-osinte.ads<s-osinte-vxworks.ads \
559   s-osprim.adb<s-osprim-vxworks.adb \
560   s-parame.ads<s-parame-vxworks.ads \
561   s-parame.adb<s-parame-vxworks.adb \
562   s-stchop.ads<s-stchop-limit.ads \
563   s-stchop.adb<s-stchop-vxworks.adb \
564   s-taprop.adb<s-taprop-vxworks.adb \
565   s-taspri.ads<s-taspri-vxworks.ads \
566   s-tpopsp.adb<s-tpopsp-vxworks.adb \
567   s-vxwork.ads<s-vxwork-sparcv9.ads \
568   g-socthi.ads<g-socthi-vxworks.ads \
569   g-socthi.adb<g-socthi-vxworks.adb \
570   g-stsifd.adb<g-stsifd-sockets.adb \
571   g-sttsne.adb<g-sttsne-vxworks.adb \
572   g-sttsne.ads<g-sttsne-locking.ads \
573   system.ads<system-vxworks-sparcv9.ads   \
574
575   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
576
577   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
578   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
579
580   EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
581   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
582 endif
583
584 ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
585   LIBGNAT_TARGET_PAIRS = \
586   a-intnam.ads<a-intnam-vxworks.ads \
587   i-vxwork.ads<i-vxwork-x86.ads \
588   s-inmaop.adb<s-inmaop-posix.adb \
589   s-intman.ads<s-intman-vxworks.ads \
590   s-intman.adb<s-intman-vxworks.adb \
591   a-numaux.adb<a-numaux-x86.adb \
592   a-numaux.ads<a-numaux-x86.ads \
593   s-osprim.adb<s-osprim-vxworks.adb \
594   s-parame.ads<s-parame-vxworks.ads \
595   s-parame.adb<s-parame-vxworks.adb \
596   s-stchop.ads<s-stchop-limit.ads \
597   s-stchop.adb<s-stchop-vxworks.adb \
598   s-taprop.adb<s-taprop-vxworks.adb \
599   s-taspri.ads<s-taspri-vxworks.ads \
600   s-vxwork.ads<s-vxwork-x86.ads \
601   g-bytswa.adb<g-bytswa-x86.adb \
602   g-socthi.ads<g-socthi-vxworks.ads \
603   g-socthi.adb<g-socthi-vxworks.adb \
604   g-stsifd.adb<g-stsifd-sockets.adb \
605   g-sttsne.adb<g-sttsne-vxworks.adb \
606   g-sttsne.ads<g-sttsne-locking.ads
607
608   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
609
610   ifeq ($(strip $(filter-out yes,$(TRACE))),)
611     LIBGNAT_TARGET_PAIRS += \
612     s-traces.adb<s-traces-default.adb \
613     s-trafor.adb<s-trafor-default.adb \
614     s-trafor.ads<s-trafor-default.ads \
615     s-tratas.adb<s-tratas-default.adb \
616     s-tfsetr.adb<s-tfsetr-vxworks.adb
617   endif
618
619   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
620     LIBGNAT_TARGET_PAIRS += \
621     s-osinte.adb<s-osinte-vxworks-rtp.adb \
622     s-osinte.ads<s-osinte-vxworks6.ads \
623     s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
624     system.ads<system-vxworks-x86-rtp.ads
625
626     EXTRA_GNATRTL_NONTASKING_OBJS=s-vxwexc.o
627   else
628     LIBGNAT_TARGET_PAIRS += \
629     s-interr.adb<s-interr-vxworks.adb \
630     s-tpopsp.adb<s-tpopsp-vxworks.adb \
631     system.ads<system-vxworks-x86.ads
632
633     ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
634       LIBGNAT_TARGET_PAIRS += \
635       s-osinte.ads<s-osinte-vxworks6.ads \
636       s-osinte.adb<s-osinte-vxworks-kernel.adb
637     else
638       LIBGNAT_TARGET_PAIRS += \
639       s-osinte.ads<s-osinte-vxworks.ads \
640       s-osinte.adb<s-osinte-vxworks.adb
641     endif
642
643     EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-vxwexc.o
644   endif
645
646   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
647
648   EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
649   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
650 endif
651
652 ifeq ($(strip $(filter-out arm% coff wrs vx%,$(targ))),)
653   LIBGNAT_TARGET_PAIRS = \
654   a-intnam.ads<a-intnam-vxworks.ads \
655   a-numaux.ads<a-numaux-vxworks.ads \
656   s-inmaop.adb<s-inmaop-posix.adb \
657   s-interr.adb<s-interr-vxworks.adb \
658   s-intman.ads<s-intman-vxworks.ads \
659   s-intman.adb<s-intman-vxworks.adb \
660   s-osinte.adb<s-osinte-vxworks.adb \
661   s-osinte.ads<s-osinte-vxworks.ads \
662   s-osprim.adb<s-osprim-vxworks.adb \
663   s-parame.ads<s-parame-vxworks.ads \
664   s-parame.adb<s-parame-vxworks.adb \
665   s-stchop.ads<s-stchop-limit.ads \
666   s-stchop.adb<s-stchop-vxworks.adb \
667   s-taprop.adb<s-taprop-vxworks.adb \
668   s-taspri.ads<s-taspri-vxworks.ads \
669   s-tpopsp.adb<s-tpopsp-vxworks.adb \
670   s-vxwork.ads<s-vxwork-arm.ads \
671   g-socthi.ads<g-socthi-vxworks.ads \
672   g-socthi.adb<g-socthi-vxworks.adb \
673   g-stsifd.adb<g-stsifd-sockets.adb \
674   g-sttsne.adb<g-sttsne-vxworks.adb \
675   g-sttsne.ads<g-sttsne-locking.ads \
676   system.ads<system-vxworks-arm.ads
677
678   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
679
680   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
681   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
682
683   EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
684   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
685 endif
686
687 ifeq ($(strip $(filter-out mips% wrs vx%,$(targ))),)
688   LIBGNAT_TARGET_PAIRS = \
689   a-intnam.ads<a-intnam-vxworks.ads \
690   a-numaux.ads<a-numaux-vxworks.ads \
691   s-inmaop.adb<s-inmaop-posix.adb \
692   s-interr.adb<s-interr-vxworks.adb \
693   s-intman.ads<s-intman-vxworks.ads \
694   s-intman.adb<s-intman-vxworks.adb \
695   s-osinte.adb<s-osinte-vxworks.adb \
696   s-osinte.ads<s-osinte-vxworks.ads \
697   s-osprim.adb<s-osprim-vxworks.adb \
698   s-parame.ads<s-parame-vxworks.ads \
699   s-parame.adb<s-parame-vxworks.adb \
700   s-stchop.ads<s-stchop-limit.ads \
701   s-stchop.adb<s-stchop-vxworks.adb \
702   s-taprop.adb<s-taprop-vxworks.adb \
703   s-taspri.ads<s-taspri-vxworks.ads \
704   s-tpopsp.adb<s-tpopsp-vxworks.adb \
705   s-vxwork.ads<s-vxwork-mips.ads \
706   g-socthi.ads<g-socthi-vxworks.ads \
707   g-socthi.adb<g-socthi-vxworks.adb \
708   g-stsifd.adb<g-stsifd-sockets.adb \
709   g-sttsne.adb<g-sttsne-vxworks.adb \
710   g-sttsne.ads<g-sttsne-locking.ads \
711   system.ads<system-vxworks-mips.ads
712
713   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
714
715   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
716   EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o
717
718   EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
719   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
720 endif
721
722 ifeq ($(strip $(filter-out sparc% sun solaris%,$(targ))),)
723   LIBGNAT_TARGET_PAIRS_32 = \
724   a-intnam.ads<a-intnam-solaris.ads \
725   s-inmaop.adb<s-inmaop-posix.adb \
726   s-intman.adb<s-intman-solaris.adb \
727   s-osinte.adb<s-osinte-solaris.adb \
728   s-osinte.ads<s-osinte-solaris.ads \
729   s-osprim.adb<s-osprim-solaris.adb \
730   s-taprop.adb<s-taprop-solaris.adb \
731   s-tasinf.adb<s-tasinf-solaris.adb \
732   s-tasinf.ads<s-tasinf-solaris.ads \
733   s-taspri.ads<s-taspri-solaris.ads \
734   s-tpopsp.adb<s-tpopsp-solaris.adb \
735   g-soliop.ads<g-soliop-solaris.ads \
736   system.ads<system-solaris-sparc.ads
737
738   LIBGNAT_TARGET_PAIRS_64 = \
739   a-intnam.ads<a-intnam-solaris.ads \
740   s-inmaop.adb<s-inmaop-posix.adb \
741   s-intman.adb<s-intman-solaris.adb \
742   s-osinte.adb<s-osinte-solaris.adb \
743   s-osinte.ads<s-osinte-solaris.ads \
744   s-osprim.adb<s-osprim-solaris.adb \
745   s-taprop.adb<s-taprop-solaris.adb \
746   s-tasinf.adb<s-tasinf-solaris.adb \
747   s-tasinf.ads<s-tasinf-solaris.ads \
748   s-taspri.ads<s-taspri-solaris.ads \
749   s-tpopsp.adb<s-tpopsp-solaris.adb \
750   g-soliop.ads<g-soliop-solaris.ads \
751   system.ads<system-solaris-sparcv9.ads
752
753   ifeq ($(strip $(filter-out sparc sun solaris%,$(targ))),)
754     LIBGNAT_TARGET_PAIRS = $(LIBGNAT_TARGET_PAIRS_32)
755   else
756     LIBGNAT_TARGET_PAIRS = $(LIBGNAT_TARGET_PAIRS_64)
757   endif
758
759   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
760
761   EH_MECHANISM=-gcc
762   THREADSLIB = -lposix4 -lthread
763   MISCLIB = -lposix4 -lnsl -lsocket
764   SO_OPTS = -Wl,-h,
765   GNATLIB_SHARED = gnatlib-shared-dual
766   GMEM_LIB = gmemlib
767   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
768   LIBRARY_VERSION := $(LIB_VERSION)
769
770   ifeq ($(strip $(filter-out pthread PTHREAD,$(THREAD_KIND))),)
771     LIBGNAT_TARGET_PAIRS = \
772     a-intnam.ads<a-intnam-solaris.ads \
773     s-inmaop.adb<s-inmaop-posix.adb \
774     s-intman.adb<s-intman-posix.adb \
775     s-osinte.adb<s-osinte-posix.adb \
776     s-osinte.ads<s-osinte-solaris-posix.ads \
777     s-osprim.adb<s-osprim-solaris.adb \
778     s-taprop.adb<s-taprop-posix.adb \
779     s-taspri.ads<s-taspri-posix.ads \
780     s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
781     g-soliop.ads<g-soliop-solaris.ads \
782     system.ads<system-solaris-sparc.ads
783
784     THREADSLIB = -lposix4 -lpthread
785   endif
786
787   ifeq ($(strip $(filter-out m64,$(THREAD_KIND))),)
788     LIBGNAT_TARGET_PAIRS = $(LIBGNAT_TARGET_PAIRS_64)
789   endif
790 endif
791
792 ifeq ($(strip $(filter-out %86 solaris2%,$(arch) $(osys))),)
793   LIBGNAT_TARGET_PAIRS = \
794   a-numaux.adb<a-numaux-x86.adb \
795   a-numaux.ads<a-numaux-x86.ads \
796   a-intnam.ads<a-intnam-solaris.ads \
797   s-inmaop.adb<s-inmaop-posix.adb \
798   s-intman.adb<s-intman-solaris.adb \
799   s-osinte.adb<s-osinte-solaris.adb \
800   s-osinte.ads<s-osinte-solaris.ads \
801   s-osprim.adb<s-osprim-solaris.adb \
802   s-taprop.adb<s-taprop-solaris.adb \
803   s-tasinf.adb<s-tasinf-solaris.adb \
804   s-tasinf.ads<s-tasinf-solaris.ads \
805   s-taspri.ads<s-taspri-solaris.ads \
806   s-tpopsp.adb<s-tpopsp-solaris.adb \
807   g-bytswa.adb<g-bytswa-x86.adb \
808   g-soliop.ads<g-soliop-solaris.ads \
809   system.ads<system-solaris-x86.ads
810
811   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
812
813   EH_MECHANISM=-gcc
814   THREADSLIB = -lposix4 -lthread
815   MISCLIB = -lposix4 -lnsl -lsocket
816   SO_OPTS = -Wl,-h,
817   GNATLIB_SHARED = gnatlib-shared-dual
818   GMEM_LIB = gmemlib
819   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
820   LIBRARY_VERSION := $(LIB_VERSION)
821 endif
822
823 ifeq ($(strip $(filter-out %86 linux%,$(arch) $(osys))),)
824   LIBGNAT_TARGET_PAIRS = \
825   a-intnam.ads<a-intnam-linux.ads \
826   a-numaux.adb<a-numaux-x86.adb \
827   a-numaux.ads<a-numaux-x86.ads \
828   g-bytswa.adb<g-bytswa-x86.adb \
829   s-inmaop.adb<s-inmaop-posix.adb \
830   s-intman.adb<s-intman-posix.adb \
831   s-osprim.adb<s-osprim-posix.adb \
832   s-taspri.ads<s-taspri-posix.ads \
833   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
834   g-sercom.adb<g-sercom-linux.adb \
835   system.ads<system-linux-x86.ads
836
837   ifeq ($(strip $(filter-out marte,$(THREAD_KIND))),)
838     LIBGNAT_TARGET_PAIRS += \
839     a-exetim.adb<a-exetim-linux-marte.adb \
840     a-exetim.ads<a-exetim-linux-marte.ads \
841     a-extiti.adb<a-extiti-linux-marte.adb \
842     a-extiti.ads<a-extiti-linux-marte.ads \
843     a-rttiev.adb<a-rttiev-linux-marte.adb \
844     a-rttiev.ads<a-rttiev-linux-marte.ads \
845     s-osinte.adb<s-osinte-linux-marte.adb \
846     s-osinte.ads<s-osinte-linux-marte.ads \
847     s-taprop.adb<s-taprop-linux-marte.adb
848
849     EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o a-extiti.o
850
851     EH_MECHANISM=
852     THREADSLIB = -lmarte
853   else
854     LIBGNAT_TARGET_PAIRS += \
855     s-linux.ads<s-linux.ads \
856     s-osinte.adb<s-osinte-posix.adb
857
858     ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
859       LIBGNAT_TARGET_PAIRS += \
860       s-osinte.ads<s-osinte-linux-xenomai.ads \
861       s-taprop.adb<s-taprop-linux-xenomai.adb
862
863       EH_MECHANISM=
864     else
865       LIBGNAT_TARGET_PAIRS += \
866       s-osinte.ads<s-osinte-linux.ads \
867       s-taprop.adb<s-taprop-linux.adb \
868       s-tasinf.ads<s-tasinf-linux.ads \
869       s-tasinf.adb<s-tasinf-linux.adb
870
871       EH_MECHANISM=-gcc
872     endif
873
874     THREADSLIB = -lpthread
875     EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
876   endif
877
878   TOOLS_TARGET_PAIRS =  \
879     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
880     indepsw.adb<indepsw-gnu.adb
881
882   GNATLIB_SHARED = gnatlib-shared-dual
883   GMEM_LIB = gmemlib
884   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
885   LIBRARY_VERSION := $(LIB_VERSION)
886 endif
887
888 ifeq ($(strip $(filter-out %86 kfreebsd%,$(arch) $(osys))),)
889   LIBGNAT_TARGET_PAIRS = \
890   a-intnam.ads<a-intnam-freebsd.ads \
891   a-numaux.adb<a-numaux-x86.adb \
892   a-numaux.ads<a-numaux-x86.ads \
893   s-inmaop.adb<s-inmaop-posix.adb \
894   s-intman.adb<s-intman-posix.adb \
895   s-osinte.adb<s-osinte-posix.adb \
896   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
897   s-osprim.adb<s-osprim-posix.adb \
898   s-taprop.adb<s-taprop-linux.adb \
899   s-tasinf.ads<s-tasinf-linux.ads \
900   s-tasinf.adb<s-tasinf-linux.adb \
901   s-taspri.ads<s-taspri-posix.ads \
902   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
903   system.ads<system-freebsd-x86.ads
904
905   TOOLS_TARGET_PAIRS =  \
906     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
907     indepsw.adb<indepsw-gnu.adb
908
909   EH_MECHANISM=-gcc
910   THREADSLIB = -lpthread
911   GNATLIB_SHARED = gnatlib-shared-dual
912   GMEM_LIB = gmemlib
913   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
914   LIBRARY_VERSION := $(LIB_VERSION)
915 endif
916
917 ifeq ($(strip $(filter-out %86 freebsd%,$(arch) $(osys))),)
918   LIBGNAT_TARGET_PAIRS = \
919   a-intnam.ads<a-intnam-freebsd.ads \
920   a-numaux.adb<a-numaux-x86.adb \
921   a-numaux.ads<a-numaux-x86.ads \
922   g-bytswa.adb<g-bytswa-x86.adb \
923   s-inmaop.adb<s-inmaop-posix.adb \
924   s-intman.adb<s-intman-posix.adb \
925   s-osinte.adb<s-osinte-freebsd.adb \
926   s-osinte.ads<s-osinte-freebsd.ads \
927   s-osprim.adb<s-osprim-posix.adb \
928   s-taprop.adb<s-taprop-posix.adb \
929   s-taspri.ads<s-taspri-posix.ads \
930   s-tpopsp.adb<s-tpopsp-posix.adb \
931   system.ads<system-freebsd-x86.ads
932
933   TOOLS_TARGET_PAIRS = \
934   mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
935   GNATLIB_SHARED = gnatlib-shared-dual
936
937   EH_MECHANISM=-gcc
938   THREADSLIB= -lpthread
939   GMEM_LIB = gmemlib
940   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
941   LIBRARY_VERSION := $(LIB_VERSION)
942 endif
943
944 ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),)
945   ifeq ($(strip $(filter-out s390x,$(arch))),)
946     LIBGNAT_TARGET_PAIRS = \
947     a-intnam.ads<a-intnam-linux.ads \
948     s-inmaop.adb<s-inmaop-posix.adb \
949     s-intman.adb<s-intman-posix.adb \
950     s-linux.ads<s-linux.ads \
951     s-osinte.adb<s-osinte-posix.adb \
952     s-osinte.ads<s-osinte-linux.ads \
953     s-osprim.adb<s-osprim-posix.adb \
954     s-taprop.adb<s-taprop-linux.adb \
955     s-tasinf.ads<s-tasinf-linux.ads \
956     s-tasinf.adb<s-tasinf-linux.adb \
957     s-taspri.ads<s-taspri-posix-noaltstack.ads \
958     s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
959     system.ads<system-linux-s390x.ads
960   else
961     LIBGNAT_TARGET_PAIRS = \
962     a-intnam.ads<a-intnam-linux.ads \
963     s-inmaop.adb<s-inmaop-posix.adb \
964     s-intman.adb<s-intman-posix.adb \
965     s-linux.ads<s-linux.ads \
966     s-osinte.adb<s-osinte-posix.adb \
967     s-osinte.ads<s-osinte-linux.ads \
968     s-osprim.adb<s-osprim-posix.adb \
969     s-taprop.adb<s-taprop-linux.adb \
970     s-tasinf.ads<s-tasinf-linux.ads \
971     s-tasinf.adb<s-tasinf-linux.adb \
972     s-taspri.ads<s-taspri-posix-noaltstack.ads \
973     s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
974     system.ads<system-linux-s390.ads
975   endif
976
977   TOOLS_TARGET_PAIRS =  \
978     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
979
980   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
981   EH_MECHANISM=-gcc
982   THREADSLIB = -lpthread
983   GNATLIB_SHARED = gnatlib-shared-dual
984   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
985   LIBRARY_VERSION := $(LIB_VERSION)
986 endif
987
988 ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
989   ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),)
990     LIBGNAT_TARGET_PAIRS = \
991     a-intnam.ads<a-intnam-irix.ads \
992     s-inmaop.adb<s-inmaop-posix.adb \
993     s-intman.adb<s-intman-irix.adb \
994     s-mastop.adb<s-mastop-irix.adb \
995     s-osinte.adb<s-osinte-irix.adb \
996     s-osinte.ads<s-osinte-irix.ads \
997     s-osprim.adb<s-osprim-posix.adb \
998     s-proinf.adb<s-proinf-irix-athread.adb \
999     s-proinf.ads<s-proinf-irix-athread.ads \
1000     s-taprop.adb<s-taprop-irix.adb \
1001     s-tasinf.ads<s-tasinf-irix.ads \
1002     s-taspri.ads<s-taspri-posix.ads \
1003     s-tpopsp.adb<s-tpopsp-posix.adb \
1004     s-traceb.adb<s-traceb-mastop.adb \
1005     system.ads<system-irix-n32.ads
1006
1007     THREADSLIB = -lpthread
1008     GNATLIB_SHARED = gnatlib-shared-default
1009
1010   else
1011     LIBGNAT_TARGET_PAIRS += \
1012     s-mastop.adb<s-mastop-irix.adb \
1013     s-osprim.adb<s-osprim-posix.adb \
1014     s-traceb.adb<s-traceb-mastop.adb \
1015     system.ads<system-irix-o32.ads
1016   endif
1017
1018   EH_MECHANISM=-gcc
1019   TOOLS_TARGET_PAIRS = mlib-tgt-specific.adb<mlib-tgt-specific-irix.adb
1020   TGT_LIB = -lexc
1021   MISCLIB = -lexc
1022   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1023   LIBRARY_VERSION := $(LIB_VERSION)
1024   GMEM_LIB = gmemlib
1025 endif
1026
1027 ifeq ($(strip $(filter-out hppa% hp hpux10%,$(targ))),)
1028   LIBGNAT_TARGET_PAIRS = \
1029   a-excpol.adb<a-excpol-abort.adb \
1030   a-intnam.ads<a-intnam-hpux.ads \
1031   s-inmaop.adb<s-inmaop-posix.adb \
1032   s-interr.adb<s-interr-sigaction.adb \
1033   s-intman.adb<s-intman-posix.adb \
1034   s-osinte.adb<s-osinte-hpux-dce.adb \
1035   s-osinte.ads<s-osinte-hpux-dce.ads \
1036   s-parame.ads<s-parame-hpux.ads \
1037   s-osprim.adb<s-osprim-posix.adb \
1038   s-taprop.adb<s-taprop-hpux-dce.adb \
1039   s-taspri.ads<s-taspri-hpux-dce.ads \
1040   s-tpopsp.adb<s-tpopsp-posix.adb \
1041   system.ads<system-hpux.ads
1042
1043   EH_MECHANISM=-gcc
1044   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1045 endif
1046
1047 ifeq ($(strip $(filter-out hppa% hp hpux11%,$(targ))),)
1048   LIBGNAT_TARGET_PAIRS = \
1049   a-intnam.ads<a-intnam-hpux.ads \
1050   s-inmaop.adb<s-inmaop-posix.adb \
1051   s-intman.adb<s-intman-posix.adb \
1052   s-osinte.adb<s-osinte-posix.adb \
1053   s-osinte.ads<s-osinte-hpux.ads \
1054   s-parame.ads<s-parame-hpux.ads \
1055   s-osprim.adb<s-osprim-posix.adb \
1056   s-traceb.adb<s-traceb-hpux.adb \
1057   s-taprop.adb<s-taprop-posix.adb \
1058   s-taspri.ads<s-taspri-posix.ads \
1059   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1060   system.ads<system-hpux.ads
1061
1062   TOOLS_TARGET_PAIRS = mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb
1063   EH_MECHANISM=-gcc
1064   TGT_LIB = /usr/lib/libcl.a
1065   THREADSLIB = -lpthread
1066   GMEM_LIB = gmemlib
1067   soext = .sl
1068   SO_OPTS = -Wl,+h,
1069   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1070   GNATLIB_SHARED = gnatlib-shared-dual
1071   LIBRARY_VERSION := $(LIB_VERSION)
1072 endif
1073
1074 ifeq ($(strip $(filter-out ibm aix%,$(manu) $(osys))),)
1075   LIBGNAT_TARGET_PAIRS = \
1076   a-intnam.ads<a-intnam-aix.ads \
1077   s-inmaop.adb<s-inmaop-posix.adb \
1078   s-intman.adb<s-intman-posix.adb \
1079   s-osinte.adb<s-osinte-aix.adb \
1080   s-osinte.ads<s-osinte-aix.ads \
1081   s-osprim.adb<s-osprim-posix.adb \
1082   s-taprop.adb<s-taprop-posix.adb \
1083   s-taspri.ads<s-taspri-posix.ads \
1084   s-tpopsp.adb<s-tpopsp-posix.adb \
1085   system.ads<system-aix.ads
1086
1087   THREADSLIB = -lpthreads
1088   PREFIX_OBJS=$(PREFIX_REAL_OBJS)
1089
1090   TOOLS_TARGET_PAIRS = \
1091   mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
1092   indepsw.adb<indepsw-aix.adb
1093
1094   GMEM_LIB = gmemlib
1095 endif
1096
1097 ifeq ($(strip $(filter-out lynxos,$(osys))),)
1098   TOOLS_TARGET_PAIRS = \
1099   mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
1100   indepsw.adb<indepsw-gnu.adb
1101
1102   ifeq ($(strip $(filter-out %86 lynxos,$(arch) $(osys))),)
1103     LIBGNAT_TARGET_PAIRS = \
1104     a-numaux.adb<a-numaux-x86.adb \
1105     a-numaux.ads<a-numaux-x86.ads \
1106     a-intnam.ads<a-intnam-lynxos.ads \
1107     g-bytswa.adb<g-bytswa-x86.adb \
1108     g-sttsne.adb<g-sttsne-locking.adb \
1109     g-sttsne.ads<g-sttsne-locking.ads \
1110     s-inmaop.adb<s-inmaop-posix.adb \
1111     s-intman.adb<s-intman-posix.adb \
1112     s-osinte.adb<s-osinte-lynxos.adb \
1113     s-osinte.ads<s-osinte-lynxos.ads \
1114     s-osprim.adb<s-osprim-posix.adb \
1115     s-taprop.adb<s-taprop-lynxos.adb \
1116     s-taspri.ads<s-taspri-lynxos.ads \
1117     s-tpopsp.adb<s-tpopsp-lynxos.adb \
1118     system.ads<system-lynxos-x86.ads
1119
1120     PREFIX_OBJS=$(PREFIX_REAL_OBJS)
1121
1122   else
1123     LIBGNAT_TARGET_PAIRS = \
1124     a-intnam.ads<a-intnam-lynxos.ads \
1125     g-sttsne.adb<g-sttsne-locking.adb \
1126     g-sttsne.ads<g-sttsne-locking.ads \
1127     s-inmaop.adb<s-inmaop-posix.adb \
1128     s-intman.adb<s-intman-posix.adb \
1129     s-osinte.adb<s-osinte-lynxos.adb \
1130     s-osinte.ads<s-osinte-lynxos.ads \
1131     s-osprim.adb<s-osprim-posix.adb \
1132     s-taprop.adb<s-taprop-lynxos.adb \
1133     s-taspri.ads<s-taspri-lynxos.ads \
1134     s-tpopsp.adb<s-tpopsp-lynxos.adb \
1135     system.ads<system-lynxos-ppc.ads
1136   endif
1137 endif
1138
1139 ifeq ($(strip $(filter-out rtems%,$(osys))),)
1140   LIBGNAT_TARGET_PAIRS = \
1141   system.ads<system-rtems.ads \
1142   a-intnam.ads<a-intnam-rtems.ads \
1143   s-inmaop.adb<s-inmaop-posix.adb \
1144   s-intman.adb<s-intman-posix.adb \
1145   s-osinte.adb<s-osinte-rtems.adb \
1146   s-osinte.ads<s-osinte-rtems.ads \
1147   s-osprim.adb<s-osprim-posix.adb \
1148   s-parame.adb<s-parame-rtems.adb \
1149   s-taprop.adb<s-taprop-posix.adb \
1150   s-taspri.ads<s-taspri-posix.ads \
1151   s-tpopsp.adb<s-tpopsp-rtems.adb \
1152   s-stchop.adb<s-stchop-rtems.adb
1153 endif
1154
1155 ifeq ($(strip $(filter-out alpha% dec osf%,$(targ))),)
1156   LIBGNAT_TARGET_PAIRS = \
1157   a-intnam.ads<a-intnam-tru64.ads \
1158   s-inmaop.adb<s-inmaop-posix.adb \
1159   s-intman.adb<s-intman-posix.adb \
1160   s-mastop.adb<s-mastop-tru64.adb \
1161   s-osinte.adb<s-osinte-tru64.adb \
1162   s-osinte.ads<s-osinte-tru64.ads \
1163   s-osprim.adb<s-osprim-unix.adb \
1164   s-taprop.adb<s-taprop-tru64.adb \
1165   s-tasinf.ads<s-tasinf-tru64.ads \
1166   s-taspri.ads<s-taspri-tru64.ads \
1167   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1168   s-traceb.adb<s-traceb-mastop.adb \
1169   system.ads<system-tru64.ads
1170
1171   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-tru64.adb
1172
1173   EH_MECHANISM=-gcc
1174   GMEM_LIB=gmemlib
1175   THREADSLIB = -lpthread -lmach -lexc -lrt
1176   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1177   GNATLIB_SHARED = gnatlib-shared-default
1178   LIBRARY_VERSION := $(LIB_VERSION)
1179 endif
1180
1181 ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(host))),)
1182
1183 soext  = .exe
1184 hyphen = _
1185 LN = cp -p
1186 LN_S = cp -p
1187
1188 .SUFFIXES: .sym
1189
1190 .o.sym:
1191         @ gnu:[bin]vmssymvec $<
1192 endif
1193
1194 ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(targ))),)
1195 ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
1196   LIBGNAT_TARGET_PAIRS_AUX1 = \
1197   g-enblsp.adb<g-enblsp-vms-ia64.adb \
1198   g-trasym.adb<g-trasym-vms-ia64.adb \
1199   s-asthan.adb<s-asthan-vms-ia64.adb \
1200   s-osinte.adb<s-osinte-vms-ia64.adb \
1201   s-osinte.ads<s-osinte-vms-ia64.ads \
1202   s-vaflop.adb<s-vaflop-vms-ia64.adb \
1203   system.ads<system-vms-ia64.ads
1204
1205   LIBGNAT_TARGET_PAIRS_AUX2 = \
1206   s-parame.ads<s-parame-vms-ia64.ads
1207 else
1208 ifeq ($(strip $(filter-out alpha64 dec vms% openvms% alphavms%,$(targ))),)
1209   LIBGNAT_TARGET_PAIRS_AUX1 = \
1210   g-enblsp.adb<g-enblsp-vms-alpha.adb \
1211   g-trasym.adb<g-trasym-vms-alpha.adb \
1212   s-traent.adb<s-traent-vms.adb \
1213   s-traent.ads<s-traent-vms.ads \
1214   s-asthan.adb<s-asthan-vms-alpha.adb \
1215   s-osinte.adb<s-osinte-vms.adb \
1216   s-osinte.ads<s-osinte-vms.ads \
1217   s-vaflop.adb<s-vaflop-vms-alpha.adb \
1218   system.ads<system-vms_64.ads
1219
1220 ifeq ($(strip $(filter-out express EXPRESS,$(THREAD_KIND))),)
1221   LIBGNAT_TARGET_PAIRS_AUX2 = \
1222   s-parame.ads<s-parame-vms-restrict.ads
1223 else
1224   LIBGNAT_TARGET_PAIRS_AUX2 = \
1225   s-parame.ads<s-parame-vms-alpha.ads
1226 endif
1227 endif
1228 endif
1229
1230   LIBGNAT_TARGET_PAIRS = \
1231   a-caldel.adb<a-caldel-vms.adb \
1232   a-calend.adb<a-calend-vms.adb \
1233   a-calend.ads<a-calend-vms.ads \
1234   a-dirval.adb<a-dirval-vms.adb \
1235   a-excpol.adb<a-excpol-abort.adb \
1236   a-intnam.ads<a-intnam-vms.ads \
1237   a-numaux.ads<a-numaux-vms.ads \
1238   g-expect.adb<g-expect-vms.adb \
1239   g-socthi.ads<g-socthi-vms.ads \
1240   g-socthi.adb<g-socthi-vms.adb \
1241   g-stsifd.adb<g-stsifd-sockets.adb \
1242   g-sttsne.adb<g-sttsne-locking.adb \
1243   g-sttsne.ads<g-sttsne-locking.ads \
1244   i-c.ads<i-c-vms_64.ads \
1245   i-cstrin.ads<i-cstrin-vms_64.ads \
1246   i-cstrin.adb<i-cstrin-vms_64.adb \
1247   i-cpoint.ads<i-cpoint-vms_64.ads \
1248   i-cpoint.adb<i-cpoint-vms_64.adb \
1249   i-cstrea.adb<i-cstrea-vms.adb \
1250   memtrack.adb<memtrack-vms_64.adb \
1251   s-auxdec.ads<s-auxdec-vms_64.ads \
1252   s-crtl.ads<s-crtl-vms_64.ads \
1253   s-inmaop.adb<s-inmaop-vms.adb \
1254   s-interr.adb<s-interr-vms.adb \
1255   s-intman.adb<s-intman-vms.adb \
1256   s-intman.ads<s-intman-vms.ads \
1257   s-memory.adb<s-memory-vms_64.adb \
1258   s-memory.ads<s-memory-vms_64.ads \
1259   s-osprim.adb<s-osprim-vms.adb \
1260   s-osprim.ads<s-osprim-vms.ads \
1261   s-taprop.adb<s-taprop-vms.adb \
1262   s-taspri.ads<s-taspri-vms.ads \
1263   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1264   s-tpopde.adb<s-tpopde-vms.adb \
1265   s-tpopde.ads<s-tpopde-vms.ads \
1266   $(LIBGNAT_TARGET_PAIRS_AUX1) \
1267   $(LIBGNAT_TARGET_PAIRS_AUX2)
1268
1269 ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
1270   TOOLS_TARGET_PAIRS= \
1271   mlib-tgt-specific.adb<mlib-tgt-specific-vms-ia64.adb \
1272   symbols.adb<symbols-vms.adb \
1273   symbols-processing.adb<symbols-processing-vms-ia64.adb
1274 else
1275   TOOLS_TARGET_PAIRS= \
1276   mlib-tgt-specific.adb<mlib-tgt-specific-vms-alpha.adb \
1277   symbols.adb<symbols-vms.adb \
1278   symbols-processing.adb<symbols-processing-vms-alpha.adb
1279 endif
1280
1281 adamsg.o: adamsg.msg
1282         -$(DECC) --cc=message adamsg.msg -o adamsg.o
1283
1284   EXTRA_GNATMAKE_OBJS = mlib-tgt-vms_common.o
1285
1286   GMEM_LIB = gmemlib
1287   EH_MECHANISM=-gcc
1288   GNATLIB_SHARED=gnatlib-shared-vms
1289 ifeq ($(strip $(filter-out alpha64 dec vms% openvms% alphavms%,$(targ))),)
1290   EXTRA_LIBGNAT_SRCS=vmshandler.asm
1291   EXTRA_LIBGNAT_OBJS=vmshandler.o
1292 endif
1293   EXTRA_LIBGNAT_SRCS+=adamsg.msg
1294   EXTRA_LIBGNAT_OBJS+=adamsg.o
1295   EXTRA_GNATRTL_TASKING_OBJS=s-tpopde.o
1296   EXTRA_GNATTOOLS = \
1297      ../../gnatlbr$(exeext)  \
1298      ../../gnatsym$(exeext)  \
1299      ../../vms_help$(exeext) \
1300      ../../gnat.hlp
1301   # This command transforms (YYYYMMDD) into YY,MMDD
1302   GSMATCH_VERSION := $(shell grep "^ *Gnat_Static_Version_String" $(fsrcpfx)gnatvsn.ads | sed -e 's/.*(\(.*\)).*/\1/' -e 's/\(..\)\(..\)\(....\).*/\2,\3/')
1303   TOOLS_LIBS_LO := --for-linker=sys\\$$\$$library:trace.exe
1304   LIBRARY_VERSION := $(subst .,_,$(LIB_VERSION))
1305 endif
1306
1307 ifeq ($(strip $(filter-out cygwin32% mingw32% pe,$(osys))),)
1308   LIBGNAT_TARGET_PAIRS = \
1309   a-dirval.adb<a-dirval-mingw.adb \
1310   a-excpol.adb<a-excpol-abort.adb \
1311   a-numaux.adb<a-numaux-x86.adb \
1312   a-numaux.ads<a-numaux-x86.ads \
1313   s-gloloc.adb<s-gloloc-mingw.adb \
1314   s-inmaop.adb<s-inmaop-dummy.adb \
1315   s-memory.adb<s-memory-mingw.adb \
1316   s-taspri.ads<s-taspri-mingw.ads \
1317   s-tasinf.adb<s-tasinf-mingw.adb \
1318   s-tasinf.ads<s-tasinf-mingw.ads \
1319   g-bytswa.adb<g-bytswa-x86.adb \
1320   g-socthi.ads<g-socthi-mingw.ads \
1321   g-socthi.adb<g-socthi-mingw.adb \
1322   g-stsifd.adb<g-stsifd-sockets.adb \
1323   g-soliop.ads<g-soliop-mingw.ads
1324
1325   ifeq ($(strip $(filter-out rtx_w32 rtx_rtss,$(THREAD_KIND))),)
1326     LIBGNAT_TARGET_PAIRS += \
1327     s-intman.adb<s-intman-dummy.adb \
1328     s-osinte.ads<s-osinte-rtx.ads \
1329     s-osprim.adb<s-osprim-rtx.adb \
1330     s-taprop.adb<s-taprop-rtx.adb
1331
1332     EXTRA_GNATRTL_NONTASKING_OBJS = s-win32.o
1333
1334     ifeq ($(strip $(filter-out rtx_w32,$(THREAD_KIND))),)
1335        LIBGNAT_TARGET_PAIRS += system.ads<system-rtx.ads
1336
1337        EH_MECHANISM=-gcc
1338     else
1339        LIBGNAT_TARGET_PAIRS += \
1340        system.ads<system-rtx-rtss.ads \
1341        s-parame.adb<s-parame-vxworks.adb
1342
1343        EH_MECHANISM=
1344     endif
1345
1346   else
1347     LIBGNAT_TARGET_PAIRS += \
1348     a-exetim.adb<a-exetim-mingw.adb \
1349     a-exetim.ads<a-exetim-mingw.ads \
1350     a-intnam.ads<a-intnam-mingw.ads \
1351     g-sercom.adb<g-sercom-mingw.adb \
1352     s-interr.adb<s-interr-sigaction.adb \
1353     s-intman.adb<s-intman-mingw.adb \
1354     s-osinte.ads<s-osinte-mingw.ads \
1355     s-osprim.adb<s-osprim-mingw.adb \
1356     s-taprop.adb<s-taprop-mingw.adb
1357
1358     ifeq ($(strip $(filter-out x86_64%,$(arch))),)
1359       LIBGNAT_TARGET_PAIRS += \
1360         system.ads<system-mingw-x86_64.ads
1361     else
1362       LIBGNAT_TARGET_PAIRS += \
1363         system.ads<system-mingw.ads
1364     endif
1365
1366     EXTRA_GNATRTL_NONTASKING_OBJS = s-win32.o s-win32.o g-regist.o
1367     EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
1368
1369     MISCLIB = -lwsock32
1370
1371     # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT
1372     # auto-import support for array/record will be done.
1373     GNATLIB_SHARED = gnatlib-shared-win32
1374
1375     EH_MECHANISM=-gcc
1376   endif
1377
1378   TOOLS_TARGET_PAIRS= \
1379   mlib-tgt-specific.adb<mlib-tgt-specific-mingw.adb \
1380   indepsw.adb<indepsw-mingw.adb
1381
1382   GMEM_LIB = gmemlib
1383   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1384   EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
1385   EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
1386   soext = .dll
1387   LIBRARY_VERSION := $(LIB_VERSION)
1388 endif
1389
1390 ifeq ($(strip $(filter-out mips linux%,$(arch) $(osys))),)
1391   LIBGNAT_TARGET_PAIRS = \
1392   a-intnam.ads<a-intnam-linux.ads \
1393   s-inmaop.adb<s-inmaop-posix.adb \
1394   s-intman.adb<s-intman-posix.adb \
1395   s-linux.ads<s-linux.ads \
1396   s-osinte.adb<s-osinte-posix.adb \
1397   s-osinte.ads<s-osinte-linux.ads \
1398   s-osprim.adb<s-osprim-posix.adb \
1399   s-taprop.adb<s-taprop-linux.adb \
1400   s-tasinf.ads<s-tasinf-linux.ads \
1401   s-tasinf.adb<s-tasinf-linux.adb \
1402   s-taspri.ads<s-taspri-posix.ads \
1403   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1404   system.ads<system-linux-mips.ads
1405
1406   EH_MECHANISM=-gcc
1407   THREADSLIB = -lpthread
1408   GNATLIB_SHARED = gnatlib-shared-dual
1409   GMEM_LIB = gmemlib
1410   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1411   LIBRARY_VERSION := $(LIB_VERSION)
1412 endif
1413
1414 ifeq ($(strip $(filter-out mipsel linux%,$(arch) $(osys))),)
1415   LIBGNAT_TARGET_PAIRS = \
1416   a-intnam.ads<a-intnam-linux.ads \
1417   s-inmaop.adb<s-inmaop-posix.adb \
1418   s-intman.adb<s-intman-posix.adb \
1419   s-linux.ads<s-linux.ads \
1420   s-osinte.adb<s-osinte-posix.adb \
1421   s-osinte.ads<s-osinte-linux.ads \
1422   s-osprim.adb<s-osprim-posix.adb \
1423   s-taprop.adb<s-taprop-linux.adb \
1424   s-tasinf.ads<s-tasinf-linux.ads \
1425   s-tasinf.adb<s-tasinf-linux.adb \
1426   s-taspri.ads<s-taspri-posix.ads \
1427   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1428   system.ads<system-linux-mipsel.ads
1429
1430   EH_MECHANISM=-gcc
1431   THREADSLIB = -lpthread
1432   GNATLIB_SHARED = gnatlib-shared-dual
1433   GMEM_LIB = gmemlib
1434   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1435   LIBRARY_VERSION := $(LIB_VERSION)
1436 endif
1437
1438 ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
1439   LIBGNAT_TARGET_PAIRS = \
1440   a-intnam.ads<a-intnam-linux.ads \
1441   s-inmaop.adb<s-inmaop-posix.adb \
1442   s-intman.adb<s-intman-posix.adb \
1443   s-linux.ads<s-linux.ads \
1444   s-osinte.adb<s-osinte-posix.adb \
1445   s-osinte.ads<s-osinte-linux.ads \
1446   s-osprim.adb<s-osprim-posix.adb \
1447   s-taprop.adb<s-taprop-linux.adb \
1448   s-tasinf.ads<s-tasinf-linux.ads \
1449   s-tasinf.adb<s-tasinf-linux.adb \
1450   s-taspri.ads<s-taspri-posix-noaltstack.ads \
1451   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1452   g-sercom.adb<g-sercom-linux.adb \
1453   system.ads<system-linux-ppc.ads
1454
1455   TOOLS_TARGET_PAIRS =  \
1456     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1457     indepsw.adb<indepsw-gnu.adb
1458
1459   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1460   EH_MECHANISM=-gcc
1461   THREADSLIB = -lpthread
1462   GNATLIB_SHARED = gnatlib-shared-dual
1463   GMEM_LIB = gmemlib
1464   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1465   LIBRARY_VERSION := $(LIB_VERSION)
1466 endif
1467
1468 ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),)
1469   LIBGNAT_TARGET_PAIRS = \
1470   a-intnam.ads<a-intnam-linux.ads \
1471   s-inmaop.adb<s-inmaop-posix.adb \
1472   s-intman.adb<s-intman-posix.adb \
1473   s-linux.ads<s-linux.ads \
1474   s-osinte.adb<s-osinte-posix.adb \
1475   s-osinte.ads<s-osinte-linux.ads \
1476   s-osprim.adb<s-osprim-posix.adb \
1477   s-taprop.adb<s-taprop-linux.adb \
1478   s-tasinf.ads<s-tasinf-linux.ads \
1479   s-tasinf.adb<s-tasinf-linux.adb \
1480   s-taspri.ads<s-taspri-posix-noaltstack.ads \
1481   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1482   system.ads<system-linux-sparc.ads
1483
1484   TOOLS_TARGET_PAIRS =  \
1485     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1486     indepsw.adb<indepsw-gnu.adb
1487
1488   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1489   EH_MECHANISM=-gcc
1490   THREADSLIB = -lpthread
1491   GNATLIB_SHARED = gnatlib-shared-dual
1492   GMEM_LIB = gmemlib
1493   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1494   LIBRARY_VERSION := $(LIB_VERSION)
1495 endif
1496
1497 ifeq ($(strip $(filter-out hppa% linux%,$(arch) $(osys))),)
1498   LIBGNAT_TARGET_PAIRS = \
1499   a-intnam.ads<a-intnam-linux.ads \
1500   s-inmaop.adb<s-inmaop-posix.adb \
1501   s-intman.adb<s-intman-posix.adb \
1502   s-linux.ads<s-linux-hppa.ads \
1503   s-osinte.adb<s-osinte-posix.adb \
1504   s-osinte.ads<s-osinte-linux.ads \
1505   s-osprim.adb<s-osprim-posix.adb \
1506   s-taprop.adb<s-taprop-linux.adb \
1507   s-tasinf.ads<s-tasinf-linux.ads \
1508   s-tasinf.adb<s-tasinf-linux.adb \
1509   s-taspri.ads<s-taspri-posix-noaltstack.ads \
1510   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1511   system.ads<system-linux-hppa.ads
1512
1513   TOOLS_TARGET_PAIRS =  \
1514     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1515     indepsw.adb<indepsw-gnu.adb
1516
1517   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1518   EH_MECHANISM=-gcc
1519   THREADSLIB = -lpthread
1520   GNATLIB_SHARED = gnatlib-shared-dual
1521   GMEM_LIB = gmemlib
1522   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1523   LIBRARY_VERSION := $(LIB_VERSION)
1524 endif
1525
1526 ifeq ($(strip $(filter-out sh4% linux%,$(arch) $(osys))),)
1527   LIBGNAT_TARGET_PAIRS = \
1528   a-intnam.ads<a-intnam-linux.ads \
1529   s-inmaop.adb<s-inmaop-posix.adb \
1530   s-intman.adb<s-intman-posix.adb \
1531   s-linux.ads<s-linux.ads \
1532   s-osinte.adb<s-osinte-posix.adb \
1533   s-osinte.ads<s-osinte-linux.ads \
1534   s-osprim.adb<s-osprim-posix.adb \
1535   s-taprop.adb<s-taprop-linux.adb \
1536   s-tasinf.ads<s-tasinf-linux.ads \
1537   s-tasinf.adb<s-tasinf-linux.adb \
1538   s-taspri.ads<s-taspri-posix-noaltstack.ads \
1539   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1540   system.ads<system-linux-sh4.ads
1541
1542   TOOLS_TARGET_PAIRS =  \
1543     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1544     indepsw.adb<indepsw-linux.adb
1545
1546   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1547   EH_MECHANISM=-gcc
1548   MISCLIB=
1549   THREADSLIB = -lpthread
1550   GNATLIB_SHARED = gnatlib-shared-dual
1551   GMEM_LIB = gmemlib
1552   PREFIX_OBJS = $(PREFIX_REAL_OBJS)
1553   LIBRARY_VERSION := $(LIB_VERSION)
1554 endif
1555
1556 ifeq ($(strip $(filter-out %ia64 linux%,$(arch) $(osys))),)
1557   LIBGNAT_TARGET_PAIRS = \
1558   a-intnam.ads<a-intnam-linux.ads \
1559   a-numaux.ads<a-numaux-libc-x86.ads \
1560   s-inmaop.adb<s-inmaop-posix.adb \
1561   s-intman.adb<s-intman-posix.adb \
1562   s-linux.ads<s-linux.ads \
1563   s-osinte.ads<s-osinte-linux.ads \
1564   s-osinte.adb<s-osinte-posix.adb \
1565   s-osprim.adb<s-osprim-posix.adb \
1566   s-taprop.adb<s-taprop-linux.adb \
1567   s-tasinf.ads<s-tasinf-linux.ads \
1568   s-tasinf.adb<s-tasinf-linux.adb \
1569   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1570   s-taspri.ads<s-taspri-posix-noaltstack.ads \
1571   g-sercom.adb<g-sercom-linux.adb \
1572   system.ads<system-linux-ia64.ads
1573
1574   TOOLS_TARGET_PAIRS =  \
1575     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1576     indepsw.adb<indepsw-gnu.adb
1577
1578   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1579   EH_MECHANISM=-gcc
1580   MISCLIB=
1581   THREADSLIB=-lpthread
1582   GNATLIB_SHARED=gnatlib-shared-dual
1583   GMEM_LIB = gmemlib
1584   PREFIX_OBJS=$(PREFIX_REAL_OBJS)
1585   LIBRARY_VERSION := $(LIB_VERSION)
1586 endif
1587
1588 ifeq ($(strip $(filter-out alpha% linux%,$(arch) $(osys))),)
1589   LIBGNAT_TARGET_PAIRS = \
1590   a-intnam.ads<a-intnam-linux.ads \
1591   s-inmaop.adb<s-inmaop-posix.adb \
1592   s-intman.adb<s-intman-posix.adb \
1593   s-linux.ads<s-linux-alpha.ads \
1594   s-osinte.ads<s-osinte-linux.ads \
1595   s-osinte.adb<s-osinte-posix.adb \
1596   s-osprim.adb<s-osprim-posix.adb \
1597   s-taprop.adb<s-taprop-linux.adb \
1598   s-tasinf.ads<s-tasinf-linux.ads \
1599   s-tasinf.adb<s-tasinf-linux.adb \
1600   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1601   s-taspri.ads<s-taspri-posix-noaltstack.ads \
1602   system.ads<system-linux-alpha.ads
1603
1604   TOOLS_TARGET_PAIRS =  \
1605     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1606     indepsw.adb<indepsw-gnu.adb
1607
1608   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1609   EH_MECHANISM=-gcc
1610   MISCLIB=
1611   THREADSLIB=-lpthread
1612   GNATLIB_SHARED=gnatlib-shared-dual
1613   PREFIX_OBJS=$(PREFIX_REAL_OBJS)
1614   LIBRARY_VERSION := $(LIB_VERSION)
1615 endif
1616
1617 ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
1618   LIBGNAT_TARGET_PAIRS = \
1619   a-intnam.ads<a-intnam-linux.ads \
1620   a-numaux.adb<a-numaux-x86.adb \
1621   a-numaux.ads<a-numaux-x86.ads \
1622   s-inmaop.adb<s-inmaop-posix.adb \
1623   s-intman.adb<s-intman-posix.adb \
1624   s-linux.ads<s-linux.ads \
1625   s-osinte.ads<s-osinte-linux.ads \
1626   s-osinte.adb<s-osinte-posix.adb \
1627   s-osprim.adb<s-osprim-posix.adb \
1628   s-taprop.adb<s-taprop-linux.adb \
1629   s-tasinf.ads<s-tasinf-linux.ads \
1630   s-tasinf.adb<s-tasinf-linux.adb \
1631   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1632   s-taspri.ads<s-taspri-posix.ads \
1633   g-sercom.adb<g-sercom-linux.adb \
1634   system.ads<system-linux-x86_64.ads
1635
1636   TOOLS_TARGET_PAIRS =  \
1637     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
1638     indepsw.adb<indepsw-gnu.adb
1639
1640   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1641   EH_MECHANISM=-gcc
1642   THREADSLIB=-lpthread
1643   GNATLIB_SHARED=gnatlib-shared-dual
1644   GMEM_LIB = gmemlib
1645   PREFIX_OBJS=$(PREFIX_REAL_OBJS)
1646   LIBRARY_VERSION := $(LIB_VERSION)
1647 endif
1648
1649 ifeq ($(strip $(filter-out darwin%,$(osys))),)
1650   ifeq ($(strip $(filter-out %86,$(arch))),)
1651     LIBGNAT_TARGET_PAIRS = \
1652     a-intnam.ads<a-intnam-darwin.ads \
1653     s-inmaop.adb<s-inmaop-posix.adb \
1654     s-intman.adb<s-intman-posix.adb \
1655     s-osinte.adb<s-osinte-darwin.adb \
1656     s-osinte.ads<s-osinte-darwin.ads \
1657     s-osprim.adb<s-osprim-posix.adb \
1658     s-taprop.adb<s-taprop-posix.adb \
1659     s-taspri.ads<s-taspri-posix.ads \
1660     s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1661     a-numaux.ads<a-numaux-x86.ads \
1662     a-numaux.adb<a-numaux-x86.adb \
1663     system.ads<system-darwin-x86.ads
1664   else
1665     LIBGNAT_TARGET_PAIRS = \
1666     a-intnam.ads<a-intnam-darwin.ads \
1667     s-inmaop.adb<s-inmaop-posix.adb \
1668     s-intman.adb<s-intman-posix.adb \
1669     s-osinte.adb<s-osinte-darwin.adb \
1670     s-osinte.ads<s-osinte-darwin.ads \
1671     s-osprim.adb<s-osprim-posix.adb \
1672     s-taprop.adb<s-taprop-posix.adb \
1673     s-taspri.ads<s-taspri-posix.ads \
1674     s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
1675     a-numaux.ads<a-numaux-darwin.ads \
1676     a-numaux.adb<a-numaux-darwin.adb \
1677     system.ads<system-darwin-ppc.ads
1678   endif
1679
1680   TOOLS_TARGET_PAIRS =  \
1681     mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb
1682
1683   EH_MECHANISM=-gcc
1684   GNATLIB_SHARED = gnatlib-shared-darwin
1685   SO_OPTS = -Wl,-flat_namespace -shared-libgcc
1686   RANLIB = ranlib -c
1687   GMEM_LIB = gmemlib
1688   PREFIX_OBJS=$(PREFIX_REAL_OBJS)
1689   LIBRARY_VERSION := $(LIB_VERSION)
1690   soext = .dylib
1691 endif
1692
1693 ifneq ($(EH_MECHANISM),)
1694   LIBGNAT_TARGET_PAIRS += a-exexpr.adb<a-exexpr$(EH_MECHANISM).adb
1695   EXTRA_LIBGNAT_SRCS+=raise$(EH_MECHANISM).c
1696   EXTRA_LIBGNAT_OBJS+=raise$(EH_MECHANISM).o
1697 endif
1698
1699 # Use the Ada 2005 version of Ada.Exceptions by default, unless specified
1700 # explicitly already. The base files (a-except.ad?) are used only for building
1701 # the compiler and other basic tools.
1702 # These base versions lack Ada 2005 additions which would cause bootstrap
1703 # problems if included in the compiler and other basic tools.
1704
1705 ifeq ($(filter-out a-except%,$(LIBGNAT_TARGET_PAIRS)),$(LIBGNAT_TARGET_PAIRS))
1706   LIBGNAT_TARGET_PAIRS += \
1707     a-except.ads<a-except-2005.ads \
1708     a-except.adb<a-except-2005.adb
1709 endif
1710
1711 # The runtime library for gnat comprises two directories.  One contains the
1712 # Ada source files that the compiler (gnat1) needs -- these files are listed
1713 # by ADA_INCLUDE_SRCS -- and the other contains the object files and their
1714 # corresponding .ali files for the parts written in Ada, libgnat.a for
1715 # the parts of the runtime written in C, and libgthreads.a for the pthreads
1716 # emulation library.  LIBGNAT_OBJS lists the objects that go into libgnat.a,
1717 # while GNATRTL_OBJS lists the object files compiled from Ada sources that
1718 # go into the directory.  The pthreads emulation is built in the threads
1719 # subdirectory and copied.
1720 LIBGNAT_SRCS = adaint.c adaint.h argv.c cio.c cstreams.c \
1721   errno.c exit.c cal.c ctrl_c.c env.c env.h arit64.c \
1722   raise.h raise.c sysdep.c aux-io.c init.c initialize.c seh_init.c \
1723   final.c tracebak.c tb-alvms.c tb-alvxw.c tb-gcc.c expect.c mkdir.c \
1724   socket.c gsocket.h targext.c $(EXTRA_LIBGNAT_SRCS)
1725
1726 LIBGNAT_OBJS = adaint.o argv.o cio.o cstreams.o ctrl_c.o errno.o exit.o env.o \
1727   raise.o sysdep.o aux-io.o init.o initialize.o seh_init.o cal.o arit64.o \
1728   final.o tracebak.o expect.o mkdir.o socket.o targext.o $(EXTRA_LIBGNAT_OBJS)
1729
1730 # NOTE ??? - when the -I option for compiling Ada code is made to work,
1731 #  the library installation will change and there will be a
1732 #  GNAT_RTL_SRCS.  Right now we count on being able to build GNATRTL_OBJS
1733 #  from ADA_INCLUDE_SRCS.
1734
1735 # GNATRTL_NONTASKING_OBJS and GNATRTL_TASKING_OBJS can be found in
1736 # the following include file:
1737
1738 include $(fsrcdir)/Makefile.rtl
1739
1740 GNATRTL_LINEARALGEBRA_OBJS = a-nlcoar.o a-nllcar.o a-nllrar.o a-nlrear.o \
1741   a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o
1742
1743 GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
1744   $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o
1745
1746 # Default run time files
1747
1748 ADA_INCLUDE_SRCS =\
1749  ada.ads calendar.ads directio.ads gnat.ads interfac.ads ioexcept.ads \
1750  machcode.ads text_io.ads unchconv.ads unchdeal.ads \
1751  sequenio.ads system.ads memtrack.adb \
1752  a-[a-o]*.adb a-[p-z]*.adb a-[a-o]*.ads a-[p-z]*.ads g-*.ad? i-*.ad? \
1753  s-[a-o]*.adb s-[p-z]*.adb s-[a-o]*.ads s-[p-z]*.ads
1754
1755 LIBGNAT=../$(RTSDIR)/libgnat.a
1756
1757 GCC_LINK=$(CC) -static-libgcc $(ADA_INCLUDES)
1758
1759 # when compiling the tools, the runtime has to be first on the path so that
1760 # it hides the runtime files lying with the rest of the sources
1761 ifeq ($(TOOLSCASE),native)
1762   vpath %.ads ../$(RTSDIR) ../
1763   vpath %.adb ../$(RTSDIR) ../
1764   vpath %.c   ../$(RTSDIR) ../
1765   vpath %.h   ../$(RTSDIR) ../
1766 endif
1767
1768 # in the cross tools case, everything is compiled with the native
1769 # gnatmake/link. Therefore only -I needs to be modified in ADA_INCLUDES
1770 ifeq ($(TOOLSCASE),cross)
1771   vpath %.ads ../
1772   vpath %.adb ../
1773   vpath %.c   ../
1774   vpath %.h   ../
1775 endif
1776
1777 common-tools:
1778         $(GNATMAKE) -c -b $(ADA_INCLUDES) \
1779           --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \
1780           gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
1781           gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
1782         $(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
1783                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1784         $(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
1785                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1786         $(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
1787                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1788         $(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
1789                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1790         $(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
1791                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1792         $(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
1793                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1794         $(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
1795                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1796         $(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
1797                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1798         $(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
1799                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1800
1801 ../../gnatsym$(exeext): 
1802         $(GNATMAKE) -c $(ADA_INCLUDES) gnatsym --GCC="$(CC) $(ALL_ADAFLAGS)"
1803         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatsym
1804         $(GNATLINK) -v gnatsym -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1805
1806 ../../gnatdll$(exeext): 
1807         $(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
1808         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll
1809         $(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1810
1811 ../../vxaddr2line$(exeext): targext.o
1812         $(GNATMAKE) -c  $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)"
1813         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line
1814         $(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" targext.o $(CLIB)
1815
1816 gnatmake-re:  link.o targext.o
1817         $(GNATMAKE) $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
1818         $(GNATMAKE) -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
1819         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
1820         $(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
1821                 --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1822
1823 # Note the use of the "mv" command in order to allow gnatlink to be linked with
1824 # with the former version of gnatlink itself which cannot override itself.
1825 gnatlink-re:  link.o targext.o
1826         $(GNATMAKE) -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
1827         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
1828         $(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
1829                     --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
1830         $(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)
1831
1832 # Needs to be built with CC=gcc
1833 # Since the RTL should be built with the latest compiler, remove the
1834 #  stamp target in the parent directory whenever gnat1 is rebuilt
1835
1836 # Likewise for the tools
1837 ../../gnatmake$(exeext): $(P) b_gnatm.o link.o targext.o $(GNATMAKE_OBJS)
1838         $(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) \
1839                     $(TOOLS_LIBS)
1840
1841 ../../gnatlink$(exeext): $(P) b_gnatl.o link.o targext.o $(GNATLINK_OBJS)
1842         $(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) \
1843                     $(TOOLS_LIBS)
1844
1845 ../stamp-gnatlib-$(RTSDIR):
1846         @if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
1847         then \
1848           $(ECHO) You must first build the GNAT library: make gnatlib; \
1849           false; \
1850         else \
1851           true; \
1852         fi
1853
1854 install-gnatlib: ../stamp-gnatlib-$(RTSDIR)
1855 #       Create the directory before deleting it, in case the directory is
1856 #       a list of directories (as it may be on VMS). This ensures we are
1857 #       deleting the right one.
1858         -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
1859         -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
1860         $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
1861         $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
1862         -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
1863         -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
1864         for file in $(RTSDIR)/*.ali; do \
1865             $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
1866         done
1867         -$(INSTALL_DATA) $(RTSDIR)/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
1868         -cd $(RTSDIR); for file in *$(arext);do \
1869             $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
1870             $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \
1871         done
1872         -$(foreach file, $(EXTRA_ADALIB_FILES), \
1873             $(INSTALL_DATA_DATE) $(RTSDIR)/$(file) $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \
1874         ) true
1875 #     Install the shared libraries, if any, using $(INSTALL) instead
1876 #     of $(INSTALL_DATA). The latter may force a mode inappropriate
1877 #     for shared libraries on some targets, e.g. on HP-UX where the x
1878 #     permission is required.
1879         for file in gnat gnarl; do \
1880            if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \
1881               $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
1882                          $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
1883            fi; \
1884            if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \
1885               $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
1886               $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \
1887            fi; \
1888         done
1889 # This copy must be done preserving the date on the original file.
1890         for file in $(RTSDIR)/*.ad?; do \
1891             $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR); \
1892         done
1893         cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
1894         cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
1895
1896 ../stamp-gnatlib2-$(RTSDIR):
1897         $(RM) $(RTSDIR)/s-*.ali
1898         $(RM) $(RTSDIR)/s-*$(objext)
1899         $(RM) $(RTSDIR)/a-*.ali
1900         $(RM) $(RTSDIR)/a-*$(objext)
1901         $(RM) $(RTSDIR)/*.ali
1902         $(RM) $(RTSDIR)/*$(objext)
1903         $(RM) $(RTSDIR)/*$(arext)
1904         $(RM) $(RTSDIR)/*$(soext)
1905         touch ../stamp-gnatlib2-$(RTSDIR)
1906         $(RM) ../stamp-gnatlib-$(RTSDIR)
1907
1908 # NOTE: The $(foreach ...) commands assume ";" is the valid separator between
1909 #       successive target commands. Although the Gnu make documentation
1910 #       implies this is true on all systems, I suspect it may not be, So care
1911 #       has been taken to allow a sed script to look for ";)" and substitue
1912 #       for ";" the appropriate character in the range of lines below
1913 #       beginning with "GNULLI Begin" and ending with "GNULLI End"
1914
1915 # GNULLI Begin ###########################################################
1916
1917 ../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR)
1918         $(RMDIR) $(RTSDIR)
1919         $(MKDIR) $(RTSDIR)
1920         $(CHMOD) u+w $(RTSDIR)
1921 # Copy target independent sources
1922         $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
1923           $(LN_S) $(fsrcpfx)$(f) $(RTSDIR) ;) true
1924 # Remove files to be replaced by target dependent sources
1925         $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
1926                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
1927         $(RM) $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb
1928 # Copy new target dependent sources
1929         $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
1930                   $(LN_S) $(fsrcpfx)$(word 2,$(subst <, ,$(PAIR))) \
1931                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
1932 # Copy generated target dependent sources
1933         $(RM) $(RTSDIR)/s-oscons.ads
1934         (cd $(RTSDIR); $(LN_S) ../s-oscons.ads s-oscons.ads)
1935         $(RM) ../stamp-gnatlib-$(RTSDIR)
1936         touch ../stamp-gnatlib1-$(RTSDIR)
1937
1938 # GNULLI End #############################################################
1939
1940 # Don't use semicolon separated shell commands that involve list expansions.
1941 # The semicolon triggers a call to DCL on VMS and DCL can't handle command
1942 # line lengths in excess of 256 characters.
1943 # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS)
1944 # is guaranteed to overflow the buffer.
1945
1946 gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR)
1947         $(MAKE) -C $(RTSDIR) \
1948                 CC="`echo \"$(GCC_FOR_TARGET)\" \
1949                 | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
1950                 INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
1951                 CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
1952                 FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
1953                 srcdir=$(fsrcdir) \
1954                 -f ../Makefile $(LIBGNAT_OBJS)
1955         $(MAKE) -C $(RTSDIR) \
1956                 CC="`echo \"$(GCC_FOR_TARGET)\" \
1957                 | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
1958                 ADA_INCLUDES="" \
1959                 CFLAGS="$(GNATLIBCFLAGS)" \
1960                 ADAFLAGS="$(GNATLIBFLAGS)" \
1961                 FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
1962                 srcdir=$(fsrcdir) \
1963                 -f ../Makefile \
1964                 $(GNATRTL_OBJS)
1965         $(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext)
1966         $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \
1967            $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS))
1968         ifneq ($(PREFIX_OBJS),)
1969                 $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgccprefix$(arext) \
1970                   $(PREFIX_OBJS);
1971                 $(RANLIB_FOR_TARGET) $(RTSDIR)/libgccprefix$(arext)
1972         endif
1973         $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext)
1974         $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \
1975            $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS))
1976         $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl$(arext)
1977         $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnala$(arext) \
1978            $(addprefix $(RTSDIR)/,$(GNATRTL_LINEARALGEBRA_OBJS))
1979         $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnala$(arext)
1980         ifeq ($(GMEM_LIB),gmemlib)
1981                 $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgmem$(arext) \
1982                   $(RTSDIR)/memtrack.o
1983                 $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext)
1984         endif
1985         $(CHMOD) a-wx $(RTSDIR)/*.ali
1986         touch ../stamp-gnatlib-$(RTSDIR)
1987
1988 # Warning: this target assumes that LIBRARY_VERSION has been set correctly.
1989 gnatlib-shared-default:
1990         $(MAKE) $(FLAGS_TO_PASS) \
1991              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
1992              GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
1993              MULTISUBDIR="$(MULTISUBDIR)" \
1994              THREAD_KIND="$(THREAD_KIND)" \
1995              gnatlib
1996         $(RM) $(RTSDIR)/libgna*$(soext)
1997         cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
1998                 $(TARGET_LIBGCC2_CFLAGS) \
1999                 -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2000                 $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
2001                 $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2002                 $(MISCLIB) -lm
2003         cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
2004                 $(TARGET_LIBGCC2_CFLAGS) \
2005                 -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2006                 $(GNATRTL_TASKING_OBJS) \
2007                 $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2008                 $(THREADSLIB)
2009         cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2010                 libgnat$(soext)
2011         cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2012                 libgnarl$(soext)
2013
2014 gnatlib-shared-dual:
2015         $(MAKE) $(FLAGS_TO_PASS) \
2016              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2017              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2018              MULTISUBDIR="$(MULTISUBDIR)" \
2019              THREAD_KIND="$(THREAD_KIND)" \
2020              gnatlib-shared-default
2021         $(MV) $(RTSDIR)/libgna*$(soext) .
2022         $(RM) ../stamp-gnatlib2-$(RTSDIR)
2023         $(MAKE) $(FLAGS_TO_PASS) \
2024              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2025              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2026              MULTISUBDIR="$(MULTISUBDIR)" \
2027              THREAD_KIND="$(THREAD_KIND)" \
2028              gnatlib
2029         $(MV) libgna*$(soext) $(RTSDIR)
2030
2031 gnatlib-shared-dual-win32:
2032         $(MAKE) $(FLAGS_TO_PASS) \
2033              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2034              GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
2035              MULTISUBDIR="$(MULTISUBDIR)" \
2036              THREAD_KIND="$(THREAD_KIND)" \
2037              gnatlib-shared-win32
2038         $(MV) $(RTSDIR)/libgna*$(soext) .
2039         $(RM) ../stamp-gnatlib2-$(RTSDIR)
2040         $(MAKE) $(FLAGS_TO_PASS) \
2041              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2042              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2043              MULTISUBDIR="$(MULTISUBDIR)" \
2044              THREAD_KIND="$(THREAD_KIND)" \
2045              gnatlib
2046         $(MV) libgna*$(soext) $(RTSDIR)
2047
2048 # ??? we need to add the option to support auto-import of arrays/records to
2049 # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will
2050 # use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on
2051 # Windows.
2052 gnatlib-shared-win32:
2053         $(MAKE) $(FLAGS_TO_PASS) \
2054              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2055              GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
2056              MULTISUBDIR="$(MULTISUBDIR)" \
2057              THREAD_KIND="$(THREAD_KIND)" \
2058              gnatlib
2059         $(RM) $(RTSDIR)/libgna*$(soext)
2060         cd $(RTSDIR); ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
2061                 -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2062                 $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
2063                 $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB)
2064         cd $(RTSDIR); ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
2065                 -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2066                 $(GNATRTL_TASKING_OBJS) \
2067                 $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2068                 $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
2069
2070 gnatlib-shared-darwin:
2071         $(MAKE) $(FLAGS_TO_PASS) \
2072              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2073              GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) \
2074                             -fno-common" \
2075              MULTISUBDIR="$(MULTISUBDIR)" \
2076              THREAD_KIND="$(THREAD_KIND)" \
2077              gnatlib
2078         $(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext)
2079         cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
2080                 -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2081                 $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
2082                 $(SO_OPTS) \
2083                 $(MISCLIB) -lm
2084         cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
2085                 -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2086                 $(GNATRTL_TASKING_OBJS) \
2087                 $(SO_OPTS) \
2088                 $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
2089         cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2090                 libgnat$(soext)
2091         cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2092                 libgnarl$(soext)
2093
2094 gnatlib-shared-vms:
2095         $(MAKE) $(FLAGS_TO_PASS) \
2096              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2097              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2098              MULTISUBDIR="$(MULTISUBDIR)" \
2099              THREAD_KIND="$(THREAD_KIND)" \
2100              gnatlib
2101         $(RM) $(RTSDIR)/libgna*$(soext)
2102         cd $(RTSDIR) && \
2103         ../../gnatsym -s SYMVEC_$$$$.opt \
2104         $(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) && \
2105         ../../xgcc -g -B../../ -shared -shared-libgcc \
2106            -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \
2107            sys\$$library:trace.exe \
2108            --for-linker=/noinform \
2109            --for-linker=SYMVEC_$$$$.opt \
2110            --for-linker=gsmatch=equal,$(GSMATCH_VERSION)
2111         cd $(RTSDIR) && \
2112         ../../gnatsym -s SYMVEC_$$$$.opt \
2113         $(GNATRTL_TASKING_OBJS) && \
2114         ../../xgcc -g -B../../ -shared -shared-libgcc \
2115            -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
2116            libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
2117            sys\$$library:trace.exe \
2118            --for-linker=/noinform \
2119            --for-linker=SYMVEC_$$$$.opt \
2120            --for-linker=gsmatch=equal,$(GSMATCH_VERSION)
2121
2122 gnatlib-shared:
2123         $(MAKE) $(FLAGS_TO_PASS) \
2124              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2125              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2126              MULTISUBDIR="$(MULTISUBDIR)" \
2127              THREAD_KIND="$(THREAD_KIND)" \
2128              TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
2129              $(GNATLIB_SHARED)
2130
2131 gnatlib-sjlj:
2132         $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" ../stamp-gnatlib1-$(RTSDIR)
2133         sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
2134         $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
2135         $(MAKE) $(FLAGS_TO_PASS) \
2136              EH_MECHANISM="" \
2137              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2138              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2139              MULTISUBDIR="$(MULTISUBDIR)" \
2140              THREAD_KIND="$(THREAD_KIND)" \
2141              TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib
2142
2143 gnatlib-zcx:
2144         $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" ../stamp-gnatlib1-$(RTSDIR)
2145         sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
2146         $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
2147         $(MAKE) $(FLAGS_TO_PASS) \
2148              EH_MECHANISM="-gcc" \
2149              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
2150              GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
2151              MULTISUBDIR="$(MULTISUBDIR)" \
2152              THREAD_KIND="$(THREAD_KIND)" \
2153              TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib
2154
2155 # .s files for cross-building
2156 gnat-cross: force
2157         make $(GNAT1_ADA_OBJS) CC="gcc -B../stage1/" CFLAGS="-S -gnatp"
2158
2159 # Compiling object files from source files.
2160
2161 # Note that dependencies on obstack.h are not written
2162 # because that file is not part of GCC.
2163 # Dependencies on gvarargs.h are not written
2164 # because all that file does, when not compiling with GCC,
2165 # is include the system varargs.h.
2166
2167 b_gnatl.c : $(GNATLINK_OBJS)
2168         $(GNATBIND) -C $(ADA_INCLUDES) -o b_gnatl.c gnatlink.ali
2169 b_gnatl.o : b_gnatl.c
2170
2171 b_gnatm.c : $(GNATMAKE_OBJS)
2172         $(GNATBIND) -C $(ADA_INCLUDES) -o b_gnatm.c gnatmake.ali
2173 b_gnatm.o : b_gnatm.c
2174
2175 ADA_INCLUDE_DIR = $(libsubdir)/adainclude
2176 ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
2177
2178 # force no sibling call optimization on s-traceb.o so the number of stack
2179 # frames to be skipped when computing a call chain is not modified by
2180 # optimization. However we can do that only when building the runtime
2181 # (not the compiler) because the -fno-optimize-sibling-calls option exists
2182 # only in GCC 3 and above.
2183
2184 ifneq (,$(findstring xgcc,$(CC)))
2185 NO_SIBLING_ADAFLAGS=-fno-optimize-sibling-calls
2186 else
2187 NO_SIBLING_ADAFLAGS=
2188 endif
2189
2190 s-traceb.o  : s-traceb.adb
2191         $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2192               $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
2193       $< $(OUTPUT_OPTION)
2194
2195 # force debugging information on s-tasdeb.o so that it is always
2196 # possible to set conditional breakpoints on tasks.
2197
2198 s-tasdeb.o  : s-tasdeb.adb s-tasdeb.ads
2199         $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
2200               $< $(OUTPUT_OPTION)
2201
2202 # force no function reordering on a-except.o because of the exclusion bounds
2203 # mechanism (see the source file for more detailed information). However we
2204 # can do that only when building the runtime (not the compiler) because the
2205 # -fno-toplevel-reorder option exists only in GCC 4.2 and above.
2206
2207 ifneq (,$(findstring xgcc,$(CC)))
2208 NO_REORDER_ADAFLAGS=-fno-toplevel-reorder
2209 else
2210 NO_REORDER_ADAFLAGS=
2211 endif
2212
2213 # force debugging information on a-except.o so that it is always
2214 # possible to set conditional breakpoints on exceptions.
2215 # use -O1 otherwise gdb isn't able to get a full backtrace on mips targets.
2216
2217 a-except.o  : a-except.adb a-except.ads
2218         $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O1 -fno-inline \
2219               $(NO_REORDER_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
2220
2221 # compile s-except.o without optimization and with debug info to let the
2222 # debugger set breakpoints and inspect subprogram parameters on exception
2223 # related events.
2224
2225 s-except.o  : s-except.adb s-except.ads
2226         $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
2227               $< $(OUTPUT_OPTION)
2228
2229 # force debugging information on s-assert.o so that it is always
2230 # possible to set breakpoint on assert failures.
2231
2232 s-assert.o  : s-assert.adb s-assert.ads a-except.ads
2233         $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O2 $(ADA_INCLUDES) \
2234               $< $(OUTPUT_OPTION)
2235
2236 adadecode.o : adadecode.c adadecode.h
2237 aux-io.o  : aux-io.c
2238 argv.o    : argv.c
2239 cal.o     : cal.c
2240 deftarg.o : deftarg.c
2241 errno.o   : errno.c
2242 exit.o    : adaint.h exit.c
2243 expect.o  : expect.c
2244 final.o   : final.c
2245 gmem.o    : gmem.c
2246 link.o    : link.c
2247 mkdir.o   : mkdir.c
2248 socket.o  : socket.c gsocket.h
2249 sysdep.o  : sysdep.c
2250 raise-gcc.o : raise-gcc.c raise.h
2251 raise.o   : raise.c raise.h
2252 vx_stack_info.o : vx_stack_info.c
2253
2254 cio.o     : cio.c
2255         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \
2256                  $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
2257
2258 init.o    : init.c adaint.h raise.h
2259         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \
2260                  $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
2261
2262 initialize.o : initialize.c raise.h
2263         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \
2264                  $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
2265
2266 targext.o : targext.c
2267         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \
2268                 $(ALL_CPPFLAGS) $(INCLUDES_FOR_SUBDIR) \
2269                 $< $(OUTPUT_OPTION)
2270
2271 # No optimization to compile this file as optimizations (-O1 or above) breaks
2272 # the SEH handling on Windows. The reasons are not clear.
2273 seh_init.o : seh_init.c raise.h
2274         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) -O0 \
2275                  $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
2276
2277 # Need to keep the frame pointer in this file to pop the stack properly on
2278 # some targets.
2279 tracebak.o  : tracebak.c tb-alvms.c tb-alvxw.c tb-gcc.c
2280         $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
2281               -fno-omit-frame-pointer $< $(OUTPUT_OPTION)
2282
2283 # In GNU Make, ignore whether `stage*' exists.
2284 .PHONY: stage1 stage2 stage3 stage4 clean realclean TAGS bootstrap
2285 .PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4
2286
2287 force:
2288
2289 # Gnatlbr, Vms_help, and Gnat.hlp are only used on VMS
2290
2291 ../../gnatlbr$(exeext): ../../prefix.o
2292         $(GNATMAKE) -c $(ADA_INCLUDES) gnatlbr --GCC="$(CC) $(ALL_ADAFLAGS)"
2293         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlbr
2294         $(GNATLINK) -v gnatlbr -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
2295
2296 ../../vms_help$(exeext):
2297         $(GNATMAKE) -c $(ADA_INCLUDES) vms_help --GCC="$(CC) $(ALL_ADAFLAGS)"
2298         $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vms_help
2299         $(GNATLINK) -v vms_help -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
2300
2301 ../../gnat.hlp: ../../vms_help$(exeext)
2302         ../../vms_help$(exeext) $(fsrcdir)/gnat.help_in \
2303                                 $(fsrcdir)/vms_data.ads ../../gnat.hlp