###--------------------------------------------------------------------------
### Component files.
+## Codec base.
+pkginclude_HEADERS += codec.h
+libcodec_la_SOURCES += codec.c
+LIBMANS += codec.3
+
+## null
+libcodec_la_SOURCES += null-codec.c
+
+## Simple binary base-conversion codecs.
+pkginclude_HEADERS += base64.h base32.h hex.h
+libcodec_la_SOURCES += baseconv.c
+LIBMANS += base64.3
+
## form-urlencoded
pkginclude_HEADERS += url.h
libcodec_la_SOURCES += url.c
LIBMANS += url.3
-## base64
-pkginclude_HEADERS += base64.h
-libcodec_la_SOURCES += base64.c
-LIBMANS += base64.3
-
-EXTRA_DIST += base64.in base64.ref
-CLEANFILES += base64.out
-tests:: base64.t base64.in base64.ref
- ./base64.t <$(srcdir)/base64.in >base64.out
- cmp base64.out $(srcdir)/base64.ref
- ./base64.t -d <$(srcdir)/base64.ref >base64.out
- cmp base64.out $(srcdir)/base64.in
- @echo "base64 OK"
-
-check_PROGRAMS += base64.t
-base64_t_SOURCES = base64.c
-base64_t_CPPFLAGS = $(TEST_CPPFLAGS)
-base64_t_LDFLAGS = -static
-
-## base32
-pkginclude_HEADERS += base32.h
-libcodec_la_SOURCES += base32.c
-LIBMANS += base32.3
-
-EXTRA_DIST += base32.in base32.ref
-CLEANFILES += base32.out
-tests:: base32.t base32.in base32.ref
- ./base32.t <$(srcdir)/base32.in >base32.out
- cmp base32.out $(srcdir)/base32.ref
- ./base32.t -d <$(srcdir)/base32.ref >base32.out
- cmp base32.out $(srcdir)/base32.in
- @echo "base32 OK"
-
-check_PROGRAMS += base32.t
-base32_t_SOURCES = base32.c
-base32_t_CPPFLAGS = $(TEST_CPPFLAGS)
-base32_t_LDFLAGS = -static
+## Test program.
+bin_PROGRAMS += bincode
+PROGMANS += bincode.1
-## hex
-pkginclude_HEADERS += hex.h
-libcodec_la_SOURCES += hex.c
-LIBMANS += hex.3
+bincode_SOURCES = bincode.c
+bincode_LDADD = libcodec.la
+bincode_LDADD += ../mem/libmem.la
+bincode_LDADD += ../struct/libstruct.la
+bincode_LDADD += $(UTIL_LIBS)
-EXTRA_DIST += hex.in hex.ref
-CLEANFILES += hex.out
-tests:: hex.t hex.in hex.ref
- ./hex.t <$(srcdir)/hex.in >hex.out
- cmp hex.out $(srcdir)/hex.ref
- ./hex.t -d <$(srcdir)/hex.ref >hex.out
- cmp hex.out $(srcdir)/hex.in
- @echo "hex OK"
+EXTRA_DIST += base64.in base32.in hex.in
+EXTRA_DIST += base64.ref base32.ref hex.ref
+CLEANFILES += base64.out base32.out hex.out
-check_PROGRAMS += hex.t
-hex_t_SOURCES = hex.c
-hex_t_CPPFLAGS = $(TEST_CPPFLAGS)
-hex_t_LDFLAGS = -static
+TEST_CODECS = base64 base32 hex
+tests:: bincode
+ set -e; \
+ for codec in $(TEST_CODECS); do \
+ case $$codec in \
+ hex) flags=lowerc,ignjunk width=64 ;; \
+ base32) flags=ignjunk width=32 ;; \
+ *) flags=ignjunk width=64 ;; \
+ esac; \
+ ./bincode -e -i'\t' -f$$flags -m$$width -o$$codec.out $$codec \
+ $(srcdir)/$$codec.in; \
+ cmp $$codec.out $(srcdir)/$$codec.ref; \
+ ./bincode -d -fignjunk -f$$flags -o$$codec.out $$codec \
+ $(srcdir)/$$codec.ref; \
+ cmp $$codec.out $(srcdir)/$$codec.in; \
+ echo "$$codec OK"; \
+ done
###----- That's all, folks --------------------------------------------------