SHELL=/bin/sh
# This makefile is used for installing the binary distribution of GNAT.
# The installation script resulting from configuration consists
# of make commands using this makefile.  The options allowed by setting
# the directories by hand are greater than those allowed in the
# configuration script.

version	  = `./xgcc -dumpversion`
machine	  = `./xgcc -dumpmachine`
prefix    = /usr/gnat
user_bin  = $(prefix)/bin
bindir    = $(user_bin)/real
libsubdir = $(prefix)/lib/gcc-lib/$(machine)/$(version)
adaobjdir = $(libsubdir)/adalib
adaincdir = $(libsubdir)/adainclude
docdir    = $(prefix)/doc
ext=

RANLIB=ranlib
# Test to use to see whether ranlib exists on the system.
RANLIB_TEST = [ -f /usr/bin/ranlib -o -f /bin/ranlib ]

# The first 2 targets are the ones intended to be named on the command
#  line.  Since gcc has GNAT modifications, is is included in gnatstuff.
#  This is OK since basic will only be done as part of all.

ins-all: ins-basic ins-gnatstuff

ins-gnatstuff: makedirs
	if [ -d $(libsubdir) ] ; then true; else \
	  echo Directory $(libsubdir) missing; exit 1 ; fi
	if [ -f .gnat_wrapper ] ; then \
	   cp -p -f .gnat_wrapper $(user_bin); \
	   for file in gcc gnatbind gnatbl gnatkr gnatlink gnatmake gnatfind \
		    gnatxref gnatname gnatprep gnatls gnatpsta gnatmem \
		    gnatchop gnatstub gnatelim gvd gnat; do \
	     rm -f $(user_bin)/$${file}$(ext); \
	     ln -s .gnat_wrapper $(user_bin)/$${file}$(ext); \
	   done \
	fi
	for file in gnatbind gnatbl gnatkr gnatlink gnatmake gnatfind \
		gnatxref gnatname gnatprep gnatls gnatpsta gnatmem \
		gnatchop gnatdll gnatstub gnatelim gvd gnat; do \
	  if [ -f $${file}$(ext) ]; then \
	    cp -p -f $${file}$(ext) $(bindir); \
	  fi \
	done
	cp -p -f xgcc$(ext)      $(bindir)/gcc$(ext)
	cp -p -f gnathtml.pl     $(user_bin)
	for file in gcov gdb gdb-4 addr2line objdump; do \
	  if [ -f $${file}$(ext) ]; then \
	    cp -p -f $${file}$(ext) $(user_bin); \
	  fi \
	done
	cp -p -f gnat1$(ext)     $(libsubdir)
	tar cf - rts* | (cd $(libsubdir); tar xf -)
	case `uname` in \
	   *_NT*) cp -p -f *.dll $(user_bin); cp -p -f *.a $(libsubdir); \
	          mv -f $(libsubdir)/rts/adainclude $(libsubdir)/adainclude; \
	          mv -f $(libsubdir)/rts/adalib $(libsubdir)/adalib; \
	          rm -rf $(libsubdir)/rts; \
	          chmod -w $(libsubdir)/adalib/*ali;; \
	   *) if [ -d $(libsubdir)/rts-fsu ] ; then \
	          ln -s rts-native/adainclude $(libsubdir)/adainclude; \
	          ln -s rts-native/adalib $(libsubdir)/adalib; \
	      else \
	          ln -s $(libsubdir)/rts/adainclude $(libsubdir)/adainclude; \
	          ln -s $(libsubdir)/rts/adalib $(libsubdir)/adalib; \
	      fi;; \
	esac
	for file in libgthreads.a libpthread.so libmalloc.a \
		    libbfd.a libiberty.a libaddr2line.a; do \
	  if [ -f $${file} ] ; then \
	    cp -p -f $${file} $(libsubdir); \
	  fi \
	done
	-tar cf - libgcc* | (cd $(libsubdir); tar xf -)
	-if $(RANLIB_TEST) ; then $(RANLIB) $(libsubdir)/*.a; fi
	-tar cf - doc | (cd $(prefix); tar xf -)

ins-basic: makedirs include
	cp -p -f specs $(libsubdir)
	cp -p -f cc1$(ext)      $(libsubdir)
	cp -p -f cpp$(ext)      $(libsubdir)
	if [ -f as$(ext) ] ; then cp -p -f as$(ext) $(libsubdir) ; fi
	if [ -f mips-tfile ] ; then cp -p -f mips-tfile $(libsubdir) ; fi
	if [ -f ld$(ext) ] ; then cp -p -f ld$(ext) $(libsubdir) ; fi
	if [ -f collect2 ] ; then cp -p -f collect2 $(libsubdir) ; fi
	if [ `uname` = UnixWare ]; then \
	   cat ld | sed -e 's:@@PREFIX:$(prefix):' > $(libsubdir)/ld ;\
	   chmod +x $(libsubdir)/ld ; \
	fi
	if [ -f crt1.o ] ; then cp -p -f crt1.o $(libsubdir); fi
	if [ -f crt2.o ] ; then cp -p -f crt2.o $(libsubdir); fi
	if [ -f dllcrt2.o ] ; then cp -p -f dllcrt2.o $(libsubdir); fi
	if [ -f crtbegin.o ] ; then cp -p -f crtbegin.o $(libsubdir); fi
	if [ -f crtbeginS.o ] ; then cp -p -f crtbeginS.o $(libsubdir); fi
	if [ -f crtend.o ] ; then cp -p -f crtend.o $(libsubdir); fi
	if [ -f crtendS.o ] ; then cp -p -f crtendS.o $(libsubdir); fi
	if [ -f crti.o ] ; then cp -p -f crti.o $(libsubdir); fi
	if [ -f crtn.o ] ; then cp -p -f crtn.o $(libsubdir); fi
	if [ -f gcrt1.o ] ; then cp -p -f gcrt1.o $(libsubdir); fi
	if [ -f gcrt2.o ] ; then cp -p -f gcrt2.o $(libsubdir); fi
	if [ -f gmon.o ] ; then cp -p -f gmon.o $(libsubdir); fi
	if [ -f milli.exp ] ; then cp -p -f milli.exp $(libsubdir); fi
	if [ -f soft-float ] ; then cp -pr soft-float $(libsubdir); fi
	if [ -f common ] ; then cp -pr common $(libsubdir); fi
	-rm -rf $(libsubdir)/include
	tar cf - include | (cd $(libsubdir); tar xf -)

makedirs:
	if [ -d $(bindir) ]    ; then true ; else mkdir -p $(bindir)    ; fi
	if [ -d $(libsubdir) ] ; then true ; else mkdir -p $(libsubdir) ; fi
	rm -fr $(libsubdir)/rts*
	rm -fr $(adaincdir) $(adaobjdir)
	rm -fr $(docdir)

include: xlimits.h
	-rm -rf include
	-mkdir include
	if [ -f fixincludes ]; then \
		./fixincludes include /usr/include; \
	fi
	if [ -f fixinc.svr4 ]; then \
		./fixinc.svr4 include /usr/include; \
	fi
	if [ -f fixinc.math ]; then \
		./fixinc.math include /usr/include; \
	fi
	if [ -f fixinc.irix ]; then \
		./fixinc.irix include /usr/include; \
	fi
	if [ -f fixinc.sco ]; then \
		./fixinc.sco include /usr/include; \
	fi
	if [ -f include/limits.h ]; then \
	  mv include/limits.h include/syslimits.h; \
	else \
	  cp -p -f gsyslimits.h include/syslimits.h; \
	fi
	cp -p -f ginclude/*.h include
	cp -p -f xlimits.h include/limits.h
	if [ -f float.h ]; then \
		cp -p -f float.h include/float.h; \
	fi

xlimits.h: glimits.h limitx.h limity.h
	if [ -f /usr/include/limits.h ] ; then \
	  cat limitx.h glimits.h limity.h > xlimits.h; \
	else \
	  cat glimits.h > xlimits.h; \
	fi
