124 lines
3.7 KiB
Plaintext
124 lines
3.7 KiB
Plaintext
#
|
|
# @(#)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:
|