# Makefile for libada. # Copyright 2003, 2004 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Default target; must be first. all: gnatlib gnattools # Standard autoconf-set variables. SHELL = @SHELL@ srcdir = @srcdir@ build = @build@ target = @target@ prefix = @prefix@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ # Nonstandard autoconf-set variables. enable_shared = @enable_shared@ LN_S=@LN_S@ target_noncanonical=@target_noncanonical@ # Variables for the user (or the top level) to override. objext=.o GNATLIBFLAGS= -W -Wall -gnatpg THREAD_KIND=native TRACE=no GNATLIBLDFLAGS= ADA_FOR_BUILD= ADA_FOR_TARGET= LDFLAGS= STAGE_PREFIX= # The tedious process of getting CFLAGS right. CFLAGS=-g LOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes GCC_WARN_CFLAGS = $(LOOSE_WARN) $(NOCOMMON_FLAG) ADA_CFLAGS= T_ADA_CFLAGS= # HPPA is literally the only target which sets X_ADA_CFLAGS X_ADA_CFLAGS=@x_ada_cflags@ ALL_ADA_CFLAGS=$(X_ADA_CFLAGS) $(T_ADA_CFLAGS) $(ADA_CFLAGS) # Variables for gnattools. ADAFLAGS= -gnatpg -gnata ADA_INCLUDE_DIR = $(libsubdir)/adainclude ADA_RTL_OBJ_DIR = $(libsubdir)/adalib # For finding the GCC build dir, which is used far too much GCC_DIR=../../gcc # Include fragment generated by GCC configure. include $(GCC_DIR)/libada-mk # Variables based on those gleaned from the GCC makefile. :-P libsubdir=$(libdir)/gcc/$(target_noncanonical)/$(gcc_version) TARGET_LIBGCC2_CFLAGS= GNATLIBCFLAGS= -g -O2 # Get target-specific overrides for TARGET_LIBGCC2_CFLAGS # and possibly GNATLIBCFLAGS. Currently this uses files # in gcc/config. The 'subst' call is used to rerelativize them # from their gcc locations. This is hackery, but there isn't # yet a better way to do this. tmake_file=$(subst /config,/../gcc/config,$(gcc_tmake_file)) ifneq ($(tmake_file),) include $(tmake_file) endif # Get possible host-specific override for libsubdir (ick). xmake_file=$(subst /config,/../gcc/config,$(gcc_xmake_file)) ifneq ($(xmake_file),) include $(xmake_file) endif FLAGS_TO_PASS = \ "MAKEOVERRIDES=" \ "LDFLAGS=$(LDFLAGS)" \ "LN_S=$(LN_S)" \ "SHELL=$(SHELL)" \ "exeext=$(exeext)" \ "objext=$(objext)" \ "prefix=$(prefix)" \ "STAGE_PREFIX=$(STAGE_PREFIX)" \ "CC=$(cc_set_by_configure)" \ "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" ADA_FLAGS_TO_PASS = \ "ADA_FOR_BUILD=$(ADA_FOR_BUILD)" \ "ADA_INCLUDE_DIR=$(ADA_INCLUDE_DIR)" \ "ADA_RTL_OBJ_DIR=$(ADA_RTL_OBJ_DIR)" \ "ADAFLAGS=$(ADAFLAGS)" \ "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \ "INSTALL=$(INSTALL)" \ "INSTALL_DATA=$(INSTALL_DATA)" \ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" ADA_TOOLS_FLAGS_TO_PASS=\ "CC=../../xgcc -B../../" \ "CFLAGS=$(CFLAGS)" \ "exeext=$(exeext)" \ "ADAFLAGS=$(ADAFLAGS)" \ "ADA_INCLUDES=-I../rts" \ "GNATMAKE=../../gnatmake" \ "GNATLINK=../../gnatlink" \ "GNATBIND=../../gnatbind" fyi: echo $(tmake_file) # Rules to build gnatlib. .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-shared gnatlib: @default_gnatlib_target@ gnatlib-plain: $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ THREAD_KIND="$(THREAD_KIND)" \ TRACE="$(TRACE)" \ gnatlib ; \ gnatlib-sjlj: $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ THREAD_KIND="$(THREAD_KIND)" \ TRACE="$(TRACE)" \ gnatlib-sjlj ; \ gnatlib-shared: $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ THREAD_KIND="$(THREAD_KIND)" \ TRACE="$(TRACE)" \ gnatlib-shared ; \ .PHONY: rts-zfp rts-ravenscar rts-zfp: $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ GNATMAKE=../gnatmake-cross \ rts-zfp rts-ravenscar: $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ GNATMAKE=../gnatmake-cross \ rts-ravenscar # Rules to build gnattools. # For cross builds of gnattools, # put the host RTS dir first in the PATH to hide the default runtime # files that are among the sources RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib ))) .PHONY: gnattools regnattools gnattools: gnatlib if test $(build) = $(target) ; then \ $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \ ADA_INCLUDES="-I- -I../rts" \ CC="../../xgcc -B../../" STAGE_PREFIX=../../ gnattools1 ; \ $(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2 ; \ $(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3 ; \ else \ $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \ ADA_INCLUDES="-I$(RTS_DIR)../adainclude -I$(RTS_DIR)" \ GNATMAKE="gnatmake" \ GNATBIND="gnatbind" \ GNATLINK="gnatlink" \ LIBGNAT="" \ gnattools1-re gnattools2 gnattools4 ; \ $(MAKE) $(FLAGS_TO_PASS) ada.all.cross ; \ fi regnattools: $(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re $(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2 $(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3 # It's unclear whether this is even needed, and if so whether it should run # *before* the rest of crossgnattools or *after* it. ada.all.cross: if [ -f $(GCC_DIR)/gnatbind$(exeext) ] ; then \ mv $(GCC_DIR)/gnatbind$(exeext) $(GCC_DIR)/gnatbind-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatbl$(exeext) ] ; then \ mv $(GCC_DIR)/gnatbl$(exeext) $(GCC_DIR)/gnatbl-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatchop$(exeext) ] ; then \ mv $(GCC_DIR)/gnatchop$(exeext) $(GCC_DIR)/gnatchop-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnat$(exeext) ] ; then \ mv $(GCC_DIR)/gnat$(exeext) $(GCC_DIR)/gnat-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatkr$(exeext) ] ; then \ mv $(GCC_DIR)/gnatkr$(exeext) $(GCC_DIR)/gnatkr-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatlink$(exeext) ] ; then \ mv $(GCC_DIR)/gnatlink$(exeext) $(GCC_DIR)/gnatlink-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatls$(exeext) ] ; then \ mv $(GCC_DIR)/gnatls$(exeext) $(GCC_DIR)/gnatls-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatmake$(exeext) ] ; then \ mv $(GCC_DIR)/gnatmake$(exeext) $(GCC_DIR)/gnatmake-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatmem$(exeext) ] ; then \ mv $(GCC_DIR)/gnatmem$(exeext) $(GCC_DIR)/gnatmem-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatname$(exeext) ] ; then \ mv $(GCC_DIR)/gnatname$(exeext) $(GCC_DIR)/gnatname-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatprep$(exeext) ] ; then \ mv $(GCC_DIR)/gnatprep$(exeext) $(GCC_DIR)/gnatprep-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatxref$(exeext) ] ; then \ mv $(GCC_DIR)/gnatxref$(exeext) $(GCC_DIR)/gnatxref-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatfind$(exeext) ] ; then \ mv $(GCC_DIR)/gnatfind$(exeext) $(GCC_DIR)/gnatfind-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatclean$(exeext) ] ; then \ mv $(GCC_DIR)/gnatclean$(exeext) $(GCC_DIR)/gnatclean-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gnatsym$(exeext) ] ; then \ mv $(GCC_DIR)/gnatsym$(exeext) $(GCC_DIR)/gnatsym-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gpr2make$(exeext) ] ; then \ mv $(GCC_DIR)/gpr2make$(exeext) $(GCC_DIR)/gpr2make-cross$(exeext); \ fi if [ -f $(GCC_DIR)/gprcmd$(exeext) ] ; then \ mv $(GCC_DIR)/gprcmd$(exeext) $(GCC_DIR)/gprcmd-cross$(exeext); \ fi # Check uninstalled version. check: # Check installed version. installcheck: # Build info (none here). info: # Build DVI (none here). dvi: # Build TAGS (none here). TAGS: # Installation rules. install: install-info: # Cleaning rules. mostlyclean: clean: distclean: $(RM) Makefile config.status config.log maintainer-clean: # Rules for rebuilding this Makefile. Makefile: $(srcdir)/Makefile.in config.status CONFIG_FILES=$@ ; \ CONFIG_HEADERS= ; \ $(SHELL) ./config.status config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck $(srcdir)/configure: @MAINT@ $(srcdir)/configure.in cd $(srcdir) && autoconf