include ../../makehead
TOP = ../..
ASN1_SRC_DIR = $(TOP)/asn1specs
ASN1_C_LIB_DIR = $(TOP)/c-lib
ASN1_C_INC_DIR = $(ASN1_C_LIB_DIR)/inc
ASN1_C_LIB = $(ASN1_C_LIB_DIR)/libasn1csbuf.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) -DUSE_SBUF $(LENFLAG)
ASN1FILES = $(ASN1_SRC_DIR)/any.asn1
ASN1HFILES = any.h
ASN1CFILES = any.c
CFILES = \
genber.c \
example.c
DISTFILES = \
README \
makefile \
$(CFILES)
all:: genber def indef
$(ASN1HFILES) \
$(ASN1CFILES): $(SNACC) $(ASN1FILES)
$(REASON)
$(SNACC) $(SNACCFLAGS) $(ASN1FILES)
$(SNACC):
cd $(@D) && $(MAKE) $(@F)
def-obj \
indef-obj:
mkdir $@
def-obj/any.o \
def-obj/example.o:
$(REASON)
$(MAKE) LENFLAG= `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
indef-obj/any.o \
indef-obj/example.o:
$(REASON)
$(MAKE) LENFLAG=-DUSE_INDEF_LEN `echo $(@D) | sed -e 's:/$$::'` $(@F)
mv $(@F) $@
genber: def-obj/any.o genber.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ def-obj/any.o genber.o $(ASN1_C_LIB) $(LIBS)
def: def-obj/any.o def-obj/example.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ def-obj/any.o def-obj/example.o $(ASN1_C_LIB) $(LIBS)
indef: indef-obj/any.o indef-obj/example.o
$(REASON)
$(CC) $(LDFLAGS) -o $@ indef-obj/any.o indef-obj/example.o $(ASN1_C_LIB) $(LIBS)
genber \
def \
indef: $(ASN1_C_LIB)
.PHONY: check
check:: genber def indef
$(RM) foo.ber bar.ber
./genber
./indef att.ber > foo.ber
./def foo.ber > bar.ber
@echo ''
@if cmp -s bar.ber att.ber; then\
echo "+++ Passed simple encode/decode tests using any.asn1.";\
else\
echo "--- Failed simple encode/decode tests using any.asn1.";\
fi
@echo ''
$(RM) foo.ber bar.ber
clean::
$(RM) *.o *~ .emacs* core def indef genber att.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 def-obj indef-obj; do\
< dependencies sed -e 's:^\(.*\.o\):'"$$dir"'/\1:' >> deps;\
done
mv deps dependencies