include ../../makehead
TOP = ../..
ASN1_SRC_DIR = $(TOP)/asn1specs
ASN1_C_LIB_DIR = $(TOP)/c-lib
ASN1_C_INC_DIR = $(ASN1_C_LIB_DIR)/inc
MBUF_ASN1_LIB = $(ASN1_C_LIB_DIR)/libasn1cmbuf.a
SBUF_ASN1_LIB = $(ASN1_C_LIB_DIR)/libasn1csbuf.a
EBUF_ASN1_LIB = $(ASN1_C_LIB_DIR)/libasn1cebuf.a
COMPILERDIR = $(TOP)/compiler
SNACC = $(COMPILERDIR)/snacc
USEFUL_TYPES = $(ASN1_SRC_DIR)/asn-useful.asn1
SNACCFLAGS = -u $(USEFUL_TYPES)
CPPFLAGS += -I$(TOP) -I$(ASN1_C_INC_DIR) $(BUFFLAG) $(LENFLAG)
ASN1FILES = $(ASN1_SRC_DIR)/p-rec.asn1
ASN1HFILES = p-rec.h
ASN1CFILES = p-rec.c
CFILES = \
genber.c \
minbuf-ex.c \
expbuf-ex.c \
sbuf-ex.c
BUFFLAG = -DUSE_SBUF
DISTFILES = \
README \
makefile \
$(CFILES) \
good-pr.ber
all:: genber minbuf-def minbuf-indef expbuf-def expbuf-indef sbuf-def sbuf-indef
$(ASN1HFILES) \
$(ASN1CFILES): $(SNACC) $(ASN1FILES)
$(REASON)
$(SNACC) $(SNACCFLAGS) $(ASN1FILES)
$(SNACC):
cd $(@D) && $(MAKE) $(@F)
min-def-obj \
min-indef-obj \
exp-def-obj \
exp-indef-obj \
s-def-obj \
s-indef-obj:
mkdir $@
min-def-obj/p-rec.o \
min-def-obj/minbuf-ex.o:
$(REASON)
$(MAKE) BUFFLAG=-DUSE_MIN_BUF LENFLAG= `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
min-indef-obj/p-rec.o \
min-indef-obj/minbuf-ex.o:
$(REASON)
$(MAKE) BUFFLAG=-DUSE_MIN_BUF LENFLAG=-DUSE_INDEF_LEN `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
exp-def-obj/p-rec.o \
exp-def-obj/expbuf-ex.o:
$(REASON)
$(MAKE) BUFFLAG=-DUSE_EXP_BUF LENFLAG= `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
exp-indef-obj/p-rec.o \
exp-indef-obj/expbuf-ex.o:
$(REASON)
$(MAKE) BUFFLAG=-DUSE_EXP_BUF LENFLAG=-DUSE_INDEF_LEN `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
s-def-obj/p-rec.o \
s-def-obj/sbuf-ex.o:
$(REASON)
$(MAKE) LENFLAG= `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
s-indef-obj/p-rec.o \
s-indef-obj/sbuf-ex.o:
$(REASON)
$(MAKE) LENFLAG=-DUSE_INDEF_LEN `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
genber: s-def-obj/p-rec.o genber.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ s-def-obj/p-rec.o genber.o $(SBUF_ASN1_LIB) $(LIBS)
minbuf-def: min-def-obj/p-rec.o min-def-obj/minbuf-ex.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ min-def-obj/p-rec.o min-def-obj/minbuf-ex.o $(MBUF_ASN1_LIB) $(LIBS)
minbuf-indef: min-indef-obj/p-rec.o min-indef-obj/minbuf-ex.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ min-indef-obj/p-rec.o min-indef-obj/minbuf-ex.o $(MBUF_ASN1_LIB) $(LIBS)
expbuf-def: exp-def-obj/p-rec.o exp-def-obj/expbuf-ex.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ exp-def-obj/p-rec.o exp-def-obj/expbuf-ex.o $(EBUF_ASN1_LIB) $(LIBS)
expbuf-indef: exp-indef-obj/p-rec.o exp-indef-obj/expbuf-ex.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ exp-indef-obj/p-rec.o exp-indef-obj/expbuf-ex.o $(EBUF_ASN1_LIB) $(LIBS)
sbuf-def: s-def-obj/p-rec.o s-def-obj/sbuf-ex.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ s-def-obj/p-rec.o s-def-obj/sbuf-ex.o $(SBUF_ASN1_LIB) $(LIBS)
sbuf-indef: s-indef-obj/p-rec.o s-indef-obj/sbuf-ex.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ s-indef-obj/p-rec.o s-indef-obj/sbuf-ex.o $(SBUF_ASN1_LIB) $(LIBS)
genber \
sbuf-def \
sbuf-indef: $(SBUF_ASN1_LIB)
minbuf-def \
minbuf-indef: $(MINBUF_ASN1_LIB)
expbuf-def \
expbuf-indef: $(EXPBUF_ASN1_LIB)
.PHONY: check
check:: minbuf-def minbuf-indef expbuf-def expbuf-indef sbuf-def sbuf-indef
for bt in min exp s; do\
$(RM) $$bt-foo.ber $$bt-bar.ber;\
./$${bt}buf-indef good-pr.ber > $$bt-foo.ber;\
./$${bt}buf-def $$bt-foo.ber > $$bt-bar.ber;\
done
@for bt in min exp s; do\
if cmp -s $$bt-bar.ber good-pr.ber; then\
echo "+++ Passed simple encode/decode tests using p-rec.asn1 with $${bt}bufs.";\
else\
echo "--- Failed simple encode/decode tests using p-rec.asn1 with $${bt}bufs.";\
fi;\
$(RM) $$bt-foo.ber $$bt-bar.ber;\
done
clean::
$(RM) *.o *~ core .emacs*
$(RM) expbuf-def expbuf-indef sbuf-indef sbuf-def minbuf-def minbuf-indef genber pr.ber $(ASN1HFILES) $(ASN1CFILES)
$(RM) -r *-def-obj *-indef-obj
$(RM) *-foo.ber *-bar.ber
depend:: $(SNACC)
include ../../maketail
depend::
cp dependencies deps
for dir in min-def-obj min-indef-obj exp-def-obj exp-indef-obj s-def-obj s-indef-obj; do\
< dependencies sed -e 's:^\(.*\.o\):'"$$dir"'/\1:' >> deps;\
done
mv deps dependencies