Travis Cross d2edcad66e Merge Phil Zimmermann's libzrtp as a FreeSWITCH library
Thanks to Phil Zimmermann for the code and for the license exception
we needed to include it.

There remains some build system integration work to be done before
this code will build properly in the FreeSWITCH tree.
2012-03-31 23:42:27 +00:00

183 lines
6.2 KiB
Makefile

#
# This code is pretty well tested, but not optimizing it will have
# a *major* effect on speed, so its optimzation flags are separate
# from the rest of the release.
#
# For the SPARC v8, at least, gcc produces a *much* faster library than
# the SunPro C compiler. On a 50 MHz TI TMS390Z50 SuperSPARC:
# 14.5 vs. 47.2 ms per 256-bit modular exponentiation.
# 77.4 vs. 317.8 ms per 512-bit modular exponentiation.
# 249.0 vs. 1031.5 ms per 1024-bit modular exponentiation
#
CC=@CC@
# for libzrtp support
CFLAGS=@CFLAGS@ @CPPFLAGS@ @WARN@ @TUNE@ @DEFS@ $(DEFINE) -I../../include -I../../include/enterprise -I../../projects/gnu/config -I../../third_party/bgaes
srcdir=@srcdir@
VPATH=@srcdir@
# Extra object files (e.g. lbnalpha.o for Alpha assembly routines)
AUXOBJS=
# Extra definitions (e.g. -DBNINCLUDE=lbnalpha.h)
DEFINE=
SHELL = /bin/sh
.SUFFIXES:
.SUFFIXES: .c .h .o .s
LD =$(CC)
LDFLAGS =@LDFLAGS@
LIBS=@LIBS@
RANLIB=@RANLIB@
# If you have a machine-specific assembly file, add it to AUXOBJS.
OBJS = bn00.o lbn00.o bn.o lbnmem.o sieve.o prime.o \
bnprint.o jacobi.o germain.o $(AUXOBJS)
BNLIB = libbn.a
# for libzrtp support
all: $(BNLIB) bntest32.c bntest64.c
# bntest germtest
# for libzrtp support
install: all
test -d /usr/local/include/libzrtp || mkdir /usr/local/include/libzrtp
cp *.h /usr/local/include/libzrtp
cp 'libbn.a' '/usr/local/lib/libbn.a'
chmod 644 /usr/local/lib/libbn.a
chown 0:0 /usr/local/lib/libbn.a
$(RANLIB) '/usr/local/lib/libbn.a'
# for libzrtp support
#check: bntest
# ./bntest
check:
bntest: bntest00.o $(BNLIB)
$(LD) $(LDFLAGS) -o $@ bntest00.o $(BNLIB) $(LIBS)
germtest: germtest.o $(BNLIB)
$(LD) $(LDFLAGS) -o $@ germtest.o $(BNLIB) $(LIBS)
$(BNLIB): $(OBJS)
$(AR) r $@ $?
$(RANLIB) $@
# Here we get tricky... if we're compiling with GCC, then GCCMAGIC1 and
# GCCMAGIC2 are set so that we actually do a link, but with the -r flag
# (produce relocatable output) and with -lgcc *only*. This is so that
# the result can be linked cleanly with code compiled with another cc,
# which doesn't know about -lgcc. Presumably the lbnXX.o file, which
# has by far the most math in it, will have a call to every interesting
# support-library function.
lbn00.o: $(srcdir)/lbn00.c $(HDRS) bnconfig.h
$(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ @GCCMAGIC1@ lbn00.c @GCCMAGIC2@
lbn16.o: $(srcdir)/lbn16.c $(HDRS) bnconfig.h
$(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ @GCCMAGIC1@ lbn16.c @GCCMAGIC2@
lbn32.o: $(srcdir)/lbn32.c $(HDRS) bnconfig.h
$(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ @GCCMAGIC1@ lbn32.c @GCCMAGIC2@
lbn64.o: $(srcdir)/lbn64.c $(HDRS) bnconfig.h
$(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ @GCCMAGIC1@ lbn64.c @GCCMAGIC2@
# The default .o rule.
.c.o: bnconfig.h
$(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ -c $<
# Extra, non-obvious dependencies. Bnlib can be compiled in three
# word sizes, and the *00.c files #include the right .c files based
# on <limits.h>, which means that a single compilation will only use a
# subset of these files. Duplicated here in case someone regenerates
# dependencies with cc -M and they get lost.
lbn00.o: lbn16.c lbn32.c lbn64.c lbn16.h lbn32.h lbn64.h
bn00.o: bn16.c bn32.c bn64.c bn16.h bn32.h bn64.h \
bninit16.c bninit32.c bninit64.c
bntest00.o: bntest16.c bntest32.c bntest64.c lbn16.h lbn32.h lbn64.h
# Actual build commented out to prevent confusion by people without autoconf.
# Do it manually for now.
configure: configure.in
@echo "configure script is out of date; run autoconf"
# autoconf
clean:
$(RM) -f *.o *32.[ch] *64.[ch]
distclean: clean
-rm -f Makefile
BNSOURCES = lbn32.c lbn32.h bn32.c bn32.h bninit32.c bntest32.c \
lbn64.c lbn64.h bn64.c bn64.h bninit64.c bntest64.c
# An explicit target that can be made before distribution for
# machines that don't have sed.
bnsources: $(BNSOURCES)
# The 16-bit versions of the code are the master versions; all else is
# generated from them. This fiddling about makes them unwriteable
# to discourage improper edits.
# (You didn't know that suffixes for suffix rules didn't have to begin
# with a period, did you?)
.SUFFIXES: 16.c 16.h 32.c 32.h 64.c 64.h
16.c32.c:
@test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@
sed -e s/32/64/g -e s/16/32/g $< > $@
@chmod a-w $@
16.h32.h:
@test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@
sed -e s/32/64/g -e s/16/32/g $< > $@
@chmod a-w $@
16.c64.c:
@test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@
sed -e s/32/128/g -e s/16/64/g $< > $@
@chmod a-w $@
16.h64.h:
@test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@
sed -e s/32/128/g -e s/16/64/g $< > $@
@chmod a-w $@
### Dependencies
bn.o: bn.c bn.h
bn00.o: bn00.c bnsize00.h lbn.h bn16.c bn32.c bn64.c lbn16.c lbn32.h \
lbn64.h lbnmem.h bn16.h bn32.h bn64.h bn.h kludge.h bninit16.c \
bninit32.c bninit64.c
bn16.o: bn16.c lbn.h lbn16.h lbnmem.h bn16.h bn.h kludge.h
bn32.o: bn32.c lbn.h lbn32.h lbnmem.h bn32.h bn.h kludge.h
bn64.o: bn64.c lbn.h lbn64.h lbnmem.h bn64.h bn.h kludge.h
bn68000.o: bn68000.c lbn.h lbn68000.h bn16.h bn32.h
bn8086.o: bn8086.c lbn.h bn64.h lbn8086.h bn32.h
bninit16.o: bninit16.c bn.h bn16.h
bninit32.o: bninit32.c bn.h bn32.h
bninit64.o: bninit64.c bn.h bn64.h
bnprint.o: bnprint.c bn.h bnprint.h kludge.h
bntest00.o: bntest00.c bnsize00.h lbn.h bntest16.c bntest32.c \
bntest64.c cputime.h lbn16.h lbn32.h lbn64.h kludge.h
bntest16.o: bntest16.c cputime.h lbn16.h lbn.h kludge.h
bntest32.o: bntest32.c cputime.h lbn32.h lbn.h kludge.h
bntest64.o: bntest64.c cputime.h lbn64.h lbn.h kludge.h
germain.o: germain.c bn.h germain.h jacobi.h lbnmem.h sieve.h kludge.h
germtest.o: germtest.c bn.h germain.h sieve.h cputime.h bnprint.h
jacobi.o: jacobi.c bn.h jacobi.h
lbn00.o: lbn00.c bnsize00.h lbn.h lbn16.c lbn16.h lbn32.c lbn32.h \
lbn64.c lbn64.h lbnmem.h kludge.h
lbn16.o: lbn16.c lbn.h lbn16.h lbnmem.h kludge.h
lbn32.o: lbn32.c lbn.h lbn32.h lbnmem.h kludge.h
lbn64.o: lbn64.c lbn.h lbn64.h lbnmem.h kludge.h
lbn68000.o: lbn68000.c lbn.h lbn68000.h
lbn68020.o: lbn68020.c lbn.h lbn68020.h
lbnmem.o: lbnmem.c lbn.h lbnmem.h kludge.h
lbnppc.o: lbnppc.c lbnppc.h ppcasm.h
prime.o: prime.c bn.h lbnmem.h prime.h sieve.h kludge.h
sieve.o: sieve.c bn.h sieve.h kludge.h
sizetest.c: bnsize00.h
distdir: