# # @(#)makelibm 1.1 92/07/30 SMI; # # libm inner Makefile # The following are expected to be defined outside this makefile: # FP= floating-point option # OBJDIR= name of subdirectory to build libraries # # The targets for this version: IL= $(OBJDIR)/libm.il LIB = $(OBJDIR)/libm.a LIBP = $(OBJDIR)/libm_p.a LIBS= $(LIBP) $(LIB) # The sources are in: SOURCEDIRS= C F D R libF77 # Directory for machine-independent .o files: MIDIR= $(OBJDIR)/midir # Directory for lorder/tsort TSORTDIR = $(OBJDIR)/lordertsort CHOWN= /etc/chown OLDLS= /usr/ucb/ls OLDCC= /usr/ucb/cc .PRECIOUS: $(LIBS) all: $(LIB) $(LIB): FORCEMAKE if test ! -d $(MIDIR) ; then mkdir $(MIDIR) ; fi if test ! -d $(MIDIR)/profiled ; then mkdir $(MIDIR)/profiled ; fi if test -x $(OLDCC) ; then \ cd $(OBJDIR) ; $(MAKE) -$(MAKEFLAGS) CC=$(OLDCC) ASFLAGS='$(ASFLAGS) -D$(FP)' libm.il ; else \ cd $(OBJDIR) ; $(MAKE) -$(MAKEFLAGS) CC='$(CC)' ASFLAGS='$(ASFLAGS) -D$(FP)' libm.il ; fi for i in $(SOURCEDIRS) ; do \ (cd $$i; \ (if test -x $(OLDCC) ; then \ $(MAKE) -$(MAKEFLAGS) CC='$(OLDCC)' CFLAGS='$(CFLAGS) -D$(FP)' FP=$(FP) WD=`pwd` OBJDIR=$(OBJDIR) IL=../$(IL) ; else \ $(MAKE) -$(MAKEFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS) -D$(FP)' FP=$(FP) WD=`pwd` OBJDIR=$(OBJDIR) IL=../$(IL) ; fi ) ; \ ); \ done ; if test -x $(OLDCC) ; then \ cd $(OBJDIR) ; $(MAKE) -$(MAKEFLAGS) CC=$(OLDCC) CFLAGS='$(CFLAGS) -D$(FP)' ASFLAGS='$(ASFLAGS) -D$(FP)' FP=$(FP) ; else \ cd $(OBJDIR) ; $(MAKE) -$(MAKEFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS) -D$(FP)' ASFLAGS='$(ASFLAGS) -D$(FP)' FP=$(FP) ; fi if test -x $(OLDLS) ; then $(OLDLS) -ilgsLF $(LIBS) > $(OBJDIR)/new.stamp ; \ else ls -ilgsLF $(LIBS) > $(OBJDIR)/new.stamp ; fi if cmp -s $(OBJDIR)/good.stamp $(OBJDIR)/new.stamp ; then \ echo $(LIB) has not changed: skip lorder/tsort/ranlib ; \ else \ if test $(MACH) = i386; then \ (echo $(LIB) has changed - do profiled ar; \ rm -rf $(TSORTDIR) ; \ mkdir $(TSORTDIR) ; \ (cd $(TSORTDIR) ; \ cp ../midir/profiled/*.o . ; \ ar cr lib.a *.o ; \ mv lib.a ../libm_p.a ; \ rm -f *.o ; \ echo $(LIB) has changed - do regular ar; \ cp ../midir/*.o . ; \ cp ../*.o . ; \ ar cr lib.a *.o ; \ mv lib.a ../libm.a ; \ ) ; \ rm -rf $(TSORTDIR) ; \ (if test -x $(OLDLS) ; then $(OLDLS) -ilgsLF $(LIBS) > $(OBJDIR)/good.stamp ; else ls -ilgsLF $(LIBS) > $(OBJDIR)/good.stamp ; fi) ; \ echo $(LIB) done ) ; \ else \ (echo $(LIB) has changed - do profiled lorder/tsort/ar/ranlib;\ rm -rf $(TSORTDIR) ; \ mkdir $(TSORTDIR) ; \ (cd $(TSORTDIR) ; \ cp ../midir/profiled/*.o . ; \ ar cr lib.a `lorder *.o | tsort` ; \ ranlib lib.a ; \ mv lib.a ../libm_p.a ; \ rm -f *.o ; \ echo $(LIB) has changed - do regular lorder/tsort/ar/ranlib; \ cp ../midir/*.o . ; \ cp ../*.o . ; \ ar cr lib.a `lorder *.o | tsort` ; \ ranlib lib.a ; \ mv lib.a ../libm.a ; \ ) ; \ rm -rf $(TSORTDIR) ; \ (if test -x $(OLDLS) ; then $(OLDLS) -ilgsLF $(LIBS) > $(OBJDIR)/good.stamp ; else ls -ilgsLF $(LIBS) > $(OBJDIR)/good.stamp ; fi) ; \ echo $(LIB) done with lorder/tsort/ranlib ) ; \ fi ; \ fi install: $(LIB) install -d -o bin -m 755 $(INSTALLDIR) install -c -m 644 $(IL) $(INSTALLDIR)/libm.il ; install -c -m 644 $(LIBP) $(INSTALLDIR)/libm_p.a ranlib $(INSTALLDIR)/libm_p.a install -c -m 644 $(LIB) $(INSTALLDIR)/libm.a ranlib $(INSTALLDIR)/libm.a # the following install the unsafed trig.il on RR if test `mach` = i386 ; then \ install -c -m 644 $(OBJDIR)/trig.il $(INSTALLDIR)/trig.il ; \ fi # the following install the unsafed sqrt.il on RR if test $(FP) = f3167 ; then \ install -c -m 644 $(OBJDIR)/sqrt.il $(INSTALLDIR)/sqrt.il ; \ fi clean: rm -f a.out core errs *.o i386/*.o m68k/*.o $(OBJDIR)/*.stamp $(TSORTDIR) cd $(OBJDIR) ; $(MAKE) -$(MAKEFLAGS) clean FORCEMAKE: