| # This is the Unix/NT makefile used to build an alternate GNAT run-time. |
| # Note that no files in the original GNAT library dirctory will be |
| # modified by this procedure |
| # |
| # This Makefile requires Gnu make. |
| # Here is how to use this Makefile |
| # |
| # 1. Create a new directory (say adalib) |
| # e.g. $ mkdir adalib |
| # $ cd adalib |
| # |
| # 2. Copy this Makefile from the standard Adalib directory, e.g. |
| # $ cp /usr/local/gnat/lib/gcc-lib/<target>/<version>/adalib/Makefile.adalib . |
| # |
| # 3. If needed (e.g for pragma Normalize_Scalars), create a gnat.adc |
| # containing the configuration pragmas you want to use to build the library |
| # e.g. $ echo pragma Normalize_Scalars; > gnat.adc |
| # Note that this step is usually not needed, and most pragmas are not |
| # relevant to the GNAT run time. |
| # |
| # 4. Determine the values of the following MACROS |
| # ROOT (location of GNAT installation, e.g /usr/local/gnat) |
| # and optionnally |
| # CFLAGS (back end compilation flags such as -g -O2) |
| # ADAFLAGS (front end compilation flags such as -gnatpgn) |
| # *beware* the minimum value for this MACRO is -gnatpg |
| # for proper compilation of the GNAT library |
| # 5a. If you are using a native compile, call make |
| # e.g. $ make -f Makefile.adalib ROOT=/usr/local/gnat CFLAGS="-g -O0" |
| # |
| # 5b. If you are using a cross compiler, you need to define two additional |
| # MACROS: |
| # CC (name of the cross compiler) |
| # AR (name of the cross ar) |
| # |
| # e.g. $ make -f Makefile.adalib ROOT=/opt/gnu/gnat \ |
| # CFLAGS="-O2 -g -I/usr/wind/target/h" CC=powerpc-wrs-vxworks-gcc \ |
| # AR=arppc |
| # |
| # 6. put this new library on your Object PATH where you want to use it |
| # in place of the original one. This can be achieved for instance by |
| # updating the value of the environment variable ADA_OBJECTS_PATH |
| |
| PWD_COMMAND=$${PWDCMD-pwd} |
| CC = gcc |
| AR = ar |
| |
| ifeq ($(strip $(filter-out %sh,$(SHELL))),) |
| GNAT_ROOT = $(shell cd $(ROOT);${PWD_COMMAND})/ |
| else |
| GNAT_ROOT = $(ROOT)/ |
| endif |
| |
| target = $(shell $(CC) -dumpmachine) |
| version = $(shell $(CC) -dumpversion) |
| ADA_INCLUDE_PATH = $(GNAT_ROOT)lib/gcc-lib/$(target)/$(version)/adainclude/ |
| GCC_INCLUDE_PATH = $(GNAT_ROOT)lib/gcc-lib/$(target)/$(version)/gcc-include/ |
| ADA_OBJECTS_PATH = $(GNAT_ROOT)lib/gcc-lib/$(target)/$(version)/adalib/ |
| |
| vpath %.adb $(ADA_INCLUDE_PATH) |
| vpath %.ads $(ADA_INCLUDE_PATH) |
| vpath %.c $(ADA_INCLUDE_PATH) |
| vpath %.h $(ADA_INCLUDE_PATH) |
| |
| CFLAGS = -O2 |
| GNATLIBCFLAGS = -DIN_RTS=1 -DIN_GCC=1 -fexceptions |
| ADAFLAGS = -gnatpgn |
| ALL_ADAFLAGS = $(CFLAGS) $(ADAFLAGS) -I. |
| FORCE_DEBUG_ADAFLAGS = -g |
| INCLUDES = -I$(ADA_INCLUDE_PATH) -I$(GCC_INCLUDE_PATH)/include \ |
| -I$(GCC_INCLUDE_PATH)/gcc/config -I$(GCC_INCLUDE_PATH)/gcc \ |
| -I$(GCC_INCLUDE_PATH)/gcc/ada -I$(GCC_INCLUDE_PATH) |
| |
| # Say how to compile Ada programs. |
| .SUFFIXES: .ada .adb .ads |
| |
| .c.o: |
| $(CC) -c $(CFLAGS) $(GNATLIBCFLAGS) $(INCLUDES) $< |
| .adb.o: |
| $(CC) -c $(ALL_ADAFLAGS) $< |
| .ads.o: |
| $(CC) -c $(ALL_ADAFLAGS) $< |
| |
| GNAT_OBJS :=$(filter-out __%,$(shell $(AR) t $(ADA_OBJECTS_PATH)libgnat.a)) |
| GNARL_OBJS:=$(filter-out __%,$(shell $(AR) t $(ADA_OBJECTS_PATH)libgnarl.a)) |
| OBJS := $(GNAT_OBJS) $(GNARL_OBJS) |
| |
| all: libgnat.a libgnarl.a delete_objects g-trasym.o |
| chmod 0444 *.ali *.a |
| |
| delete_objects: |
| rm *.o |
| |
| libgnat.a: $(GNAT_OBJS) |
| $(AR) r libgnat.a $(GNAT_OBJS) |
| |
| libgnarl.a: $(GNARL_OBJS) |
| $(AR) r libgnarl.a $(GNARL_OBJS) |
| |
| a-except.o: a-except.adb a-except.ads |
| $(CC) -c $(FORCE_DEBUG_ADAFLAGS) $(ALL_ADAFLAGS) -O0 -fno-inline $< |
| |
| s-assert.o: s-assert.adb s-assert.ads a-except.ads |
| $(CC) -c $(FORCE_DEBUG_ADAFLAGS) $(ALL_ADAFLAGS) $< |
| |
| s-tasdeb.o: s-tasdeb.adb |
| $(CC) -c $(FORCE_DEBUG_ADAFLAGS) $(ALL_ADAFLAGS) $< |
| |
| s-vaflop.o: s-vaflop.adb |
| $(CC) -c $(FORCE_DEBUG_ADAFLAGS) -O $(ALL_ADAFLAGS) $< |
| |
| s-memory.o: s-memory.adb s-memory.ads |
| $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) $< |
| |
| s-traceb.o: s-traceb.adb |
| $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -fno-optimize-sibling-calls $(ADA_INCLUDES) $< |
| |
| tracebak.o: tracebak.c |
| $(CC) -c $(CFLAGS) $(GNATLIBCFLAGS) \ |
| $(ALL_CPPFLAGS) $(INCLUDES) -fno-omit-frame-pointer $< |
| |
| .PHONY: delete_objects |