blob: a84132d07a58c956586cb104ac7164161b5edb69 [file] [log] [blame]
Lev Walkin2fd86de2006-09-13 02:10:23 +00001#!/bin/sh
Lev Walkin43739162006-09-17 03:53:11 +00002#
3# This script attempts to compile the given ASN.1 specification and then
Lev Walkin8a85b362017-09-26 22:54:44 -07004# transforms the resulting Makefile.am.example tailored to that specification
Lev Walkin43739162006-09-17 03:53:11 +00005# into a customized Makefile.
6#
7# The information which is necessary for this script is passed from the
8# Makefile which is going to be replaced with an updated Makefile.
Lev Walkin43739162006-09-17 03:53:11 +00009#
Lev Walkin2fd86de2006-09-13 02:10:23 +000010
Lev Walkinc51cdd42006-09-17 00:20:47 +000011if test -z "$ASN1PDU" \
Lev Walkin2fd86de2006-09-13 02:10:23 +000012 -o -z "$ASN1MODULES" \
13 -o -z "$PROGNAME" \
Lev Walkinc51cdd42006-09-17 00:20:47 +000014; then
Lev Walkin444e7392006-09-15 22:45:40 +000015 echo "ASN1CMDOPTS=\"$ASN1CMDOPTS\""
Lev Walkin2fd86de2006-09-13 02:10:23 +000016 echo "ASN1MODULES=\"$ASN1MODULES\""
Lev Walkin444e7392006-09-15 22:45:40 +000017 echo "ASN1PDU=\"$ASN1PDU\""
Lev Walkin2fd86de2006-09-13 02:10:23 +000018 echo "PROGNAME=\"$PROGNAME\""
Lev Walkin444e7392006-09-15 22:45:40 +000019 echo "ASN1PDU, ASN1MODULES, and PROGNAME are mandatory"
Lev Walkin2fd86de2006-09-13 02:10:23 +000020 exit
21fi
22
Lev Walkin66adab42006-09-23 02:52:12 +000023CMDOPTS="-pdu=${ASN1PDU} ${ASN1CMDOPTS} ${ASN1MODULES}"
24
Lev Walkinaf250192006-09-21 01:51:57 +000025if test -x ../../asn1c/asn1c ; then
26 echo "Compiling ${ASN1MODULES} using local compiler"
Lev Walkin66adab42006-09-23 02:52:12 +000027 ../../asn1c/asn1c -S ../../skeletons ${CMDOPTS} || exit $?
Lev Walkinaf250192006-09-21 01:51:57 +000028else
29 echo "Compiling ${ASN1MODULES} using system compiler"
Lev Walkin66adab42006-09-23 02:52:12 +000030 asn1c ${CMDOPTS} || exit $?
Lev Walkinaf250192006-09-21 01:51:57 +000031fi
Lev Walkin2fd86de2006-09-13 02:10:23 +000032
Lev Walkin8a85b362017-09-26 22:54:44 -070033if test ! -f Makefile.am.example ; then
34 echo "Makefile.am.example is missing"
Lev Walkin2fd86de2006-09-13 02:10:23 +000035 exit 1
36fi
37
Lev Walkin8a85b362017-09-26 22:54:44 -070038EXTRA_CFLAGS="-DJUNKTEST -D_DEFAULT_SOURCE"
39test -f config.h && EXTRA_CFLAGS="-DHAVE_CONFIG_H ${EXTRA_CFLAGS}"
40test -n "$TITLE" && EXTRA_CFLAGS="-DASN_CONVERTER_TITLE=\"$TITLE\" ${EXTRA_CFLAGS}"
Lev Walkin43739162006-09-17 03:53:11 +000041
Lev Walkin2fd86de2006-09-13 02:10:23 +000042set -x
Lev Walkin8a85b362017-09-26 22:54:44 -070043cat Makefile.am.example \
44 | sed -e "s/^include /-include /" \
45 | sed -e "s/^TARGET = converter-example/TARGET = ${PROGNAME}/" \
46 | sed -e "s/^CFLAGS += /CFLAGS += ${EXTRA_CFLAGS} /" \
47 | sed -e "s/^all: /all: maybe-wip-pause ${ASN1PDU}.c /" \
Lev Walkin2fd86de2006-09-13 02:10:23 +000048 > Makefile.$$
Lev Walkinaf250192006-09-21 01:51:57 +000049set +x
Lev Walkin2fd86de2006-09-13 02:10:23 +000050
51( echo
Lev Walkinc33a59e2006-09-18 20:04:14 +000052 echo "${ASN1PDU}.c: $0 ${ASN1MODULES}"
Lev Walkin43739162006-09-17 03:53:11 +000053 echo " make regen-makefile"
54 echo " @touch ${ASN1PDU}.c"
55 echo " make"
56 echo
57 echo "regen-makefile:"
Lev Walkin5aef2c52007-06-29 12:46:06 +000058 test -n "$TITLE" && echo " TITLE=\"$TITLE\" \\"
Lev Walkin2fd86de2006-09-13 02:10:23 +000059 echo " ASN1CMDOPTS=\"${ASN1CMDOPTS}\" \\"
60 echo " ASN1MODULES=\"${ASN1MODULES}\" \\"
61 echo " ASN1PDU=${ASN1PDU} \\"
62 echo " PROGNAME=${PROGNAME} \\"
63 echo " $0"
Lev Walkin2fd86de2006-09-13 02:10:23 +000064 echo
Lev Walkin090262f2017-08-27 17:59:09 -070065 echo 'check: ${TARGET} check-ber check-xer check-oer check-per'
Lev Walkin1f12da42006-09-24 19:47:07 +000066 echo ' @echo ================'
67 echo ' @echo All tests passed'
68 echo ' @echo ================'
69 echo
70 echo 'check-ber:'
Lev Walkin00918812006-09-18 21:19:32 +000071 echo " @if test -f sample-${ASN1PDU}-1.[db]er ; then \\"
Lev Walkina926fce2017-08-27 12:54:25 -070072 echo " for f in sample-*-*.[db]er; do \\"
Lev Walkinfe4e0472017-09-04 22:34:50 -070073 echo ' pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z0-9-]+)-[0-9].*/\\1/"`; \'
Lev Walkin13afe532006-09-18 21:30:04 +000074 echo ' for b in 1 17 33 980 8192; do \'
Lev Walkina926fce2017-08-27 12:54:25 -070075 echo ' echo "Recoding $$f ($$pdu) into XER and back ($$b)..."; \'
76 echo ' ./${TARGET} -p $$pdu -b $$b -iber -oxer $$f > ./.tmp.1.$$$$ || exit 2; \'
77 echo ' ./${TARGET} -p $$pdu -b $$b -ixer -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
Lev Walkin08b30bb2007-06-26 08:24:50 +000078 echo ' diff ./.tmp.1.$$$$ ./.tmp.2.$$$$ || exit 4; \'
Lev Walkinbc691772006-09-17 11:02:53 +000079 echo ' rm -f ./.tmp.[12].$$$$; \'
Lev Walkin1f12da42006-09-24 19:47:07 +000080 echo ' echo "Test junking $$f (please wait)..."; \'
Lev Walkina926fce2017-08-27 12:54:25 -070081 echo ' ./${TARGET} -J0.0001 -n 1000 -p $$pdu -b $$b -iber -onull $$f || exit 5; \'
82 echo ' ./${TARGET} -J0.001 -n 1000 -p $$pdu -b $$b -iber -onull $$f || exit 6; \'
Lev Walkin13afe532006-09-18 21:30:04 +000083 echo ' done; done; fi'
Lev Walkin1f12da42006-09-24 19:47:07 +000084 echo
85 echo 'check-xer:'
Lev Walkin00918812006-09-18 21:19:32 +000086 echo " @if test -f sample-${ASN1PDU}-1.xer ; then \\"
Lev Walkina926fce2017-08-27 12:54:25 -070087 echo " for f in sample-*-*.xer; do \\"
Lev Walkinfe4e0472017-09-04 22:34:50 -070088 echo ' pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z0-9-]+)-[0-9].*/\\1/"`; \'
Lev Walkin13afe532006-09-18 21:30:04 +000089 echo ' for b in 1 17 33 980 8192; do \'
Lev Walkina926fce2017-08-27 12:54:25 -070090 echo ' echo "Recoding $$f ($$pdu) into DER and back ($$b)..."; \'
91 echo ' ./${TARGET} -p $$pdu -b $$b -ixer -oder $$f > ./.tmp.1.$$$$ || exit 2; \'
92 echo ' ./${TARGET} -p $$pdu -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
Lev Walkin08b30bb2007-06-26 08:24:50 +000093 echo ' diff $$f ./.tmp.2.$$$$ || exit 4; \'
Lev Walkinbc691772006-09-17 11:02:53 +000094 echo ' rm -f ./.tmp.[12].$$$$; \'
Lev Walkin1f12da42006-09-24 19:47:07 +000095 echo ' echo "Test junking $$f (please wait)..."; \'
Lev Walkina926fce2017-08-27 12:54:25 -070096 echo ' ./${TARGET} -J0.0001 -n 1000 -p $$pdu -b $$b -ixer -onull $$f || exit 5; \'
97 echo ' ./${TARGET} -J0.001 -n 1000 -p $$pdu -b $$b -ixer -onull $$f || exit 6; \'
Lev Walkin13afe532006-09-18 21:30:04 +000098 echo ' done; done; fi'
Lev Walkin1f12da42006-09-24 19:47:07 +000099 echo
Lev Walkin090262f2017-08-27 17:59:09 -0700100 echo 'check-oer:'
101 echo " @if test -f sample-${ASN1PDU}-1.*oer ; then \\"
Lev Walkin3b6cba52017-08-31 01:57:04 -0700102 echo " for f in sample-*-*.*oer; do \\"
Lev Walkinfe4e0472017-09-04 22:34:50 -0700103 echo ' pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z0-9-]+)-[0-9].*/\\1/"`; \'
Lev Walkin090262f2017-08-27 17:59:09 -0700104 echo ' for b in 1 17 33 980 8192; do \'
105 echo ' echo "Recoding $$f ($$pdu) into XER and back ($$b)..."; \'
106 echo ' ./${TARGET} -p $$pdu -b $$b -ioer -oxer $$f > ./.tmp.1.$$$$ || exit 2; \'
Lev Walkin3b6cba52017-08-31 01:57:04 -0700107 echo ' ./${TARGET} -p $$pdu -b $$b -ixer -ooer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
108 echo ' diff $$f ./.tmp.2.$$$$ || exit 4; \'
Lev Walkin090262f2017-08-27 17:59:09 -0700109 echo ' rm -f ./.tmp.[12].$$$$; \'
Lev Walkin3b6cba52017-08-31 01:57:04 -0700110 echo ' echo "Test junking $$f (please wait) ($$b) ..."; \'
Lev Walkin090262f2017-08-27 17:59:09 -0700111 echo ' ./${TARGET} -J0.0001 -n 1000 -p $$pdu -b $$b -ioer -onull $$f || exit 5; \'
112 echo ' ./${TARGET} -J0.001 -n 1000 -p $$pdu -b $$b -ioer -onull $$f || exit 6; \'
113 echo ' done; done; fi'
114 echo
Lev Walkin1f12da42006-09-24 19:47:07 +0000115 echo 'check-per:'
Lev Walkin399f1cf2017-09-13 00:14:46 -0700116 echo " @if test -f sample-${ASN1PDU}-1-nopad.per ; then \\"
117 echo " for f in sample-*-[1-9]-nopad.per; do \\"
118 echo ' pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z0-9-]+)-[0-9].*/\\1/"`; \'
119 echo ' for b in 1 17 33 980 8192; do \'
120 echo ' echo "Recoding non-padded $$f ($$pdu) into DER into XER and back ($$b)..."; \'
121 echo ' ./${TARGET} -p $$pdu -b $$b -per-nopad -iper -oder $$f > ./.tmp.1.$$$$ || exit 2; \'
122 echo ' ./${TARGET} -p $$pdu -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
123 echo ' ./${TARGET} -p $$pdu -b $$b -ixer -oder ./.tmp.2.$$$$ > ./.tmp.3.$$$$ || exit 4; \'
124 echo ' diff ./.tmp.1.$$$$ ./.tmp.3.$$$$ || exit 5; \'
125 echo ' rm -f ./.tmp.[123].$$$$; \'
126 echo ' echo "Test junking $$f (please wait)..."; \'
127 echo ' ./${TARGET} -J0.0001 -n 1000 -p $$pdu -b $$b -per-nopad -iper -onull $$f || exit 6; \'
128 echo ' ./${TARGET} -J0.001 -n 1000 -p $$pdu -b $$b -per-nopad -iper -onull $$f || exit 7; \'
129 echo ' done; done; fi'
Lev Walkin08b30bb2007-06-26 08:24:50 +0000130 echo " @if test -f sample-${ASN1PDU}-1.per ; then \\"
131 echo " for f in sample-*-[1-9].per; do \\"
Lev Walkinfe4e0472017-09-04 22:34:50 -0700132 echo ' pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z0-9-]+)-[0-9].*/\\1/"`; \'
Lev Walkin13afe532006-09-18 21:30:04 +0000133 echo ' for b in 1 17 33 980 8192; do \'
Lev Walkina926fce2017-08-27 12:54:25 -0700134 echo ' echo "Recoding $$f ($$pdu) into DER into XER and back ($$b)..."; \'
135 echo ' ./${TARGET} -p $$pdu -b $$b -iper -oder $$f > ./.tmp.1.$$$$ || exit 3; \'
136 echo ' ./${TARGET} -p $$pdu -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 4; \'
137 echo ' ./${TARGET} -p $$pdu -b $$b -ixer -oper ./.tmp.2.$$$$ > ./.tmp.1.$$$$ || exit 5; \'
Lev Walkin08b30bb2007-06-26 08:24:50 +0000138 echo ' diff $$f ./.tmp.1.$$$$ || exit 6; \'
Lev Walkin13afe532006-09-18 21:30:04 +0000139 echo ' rm -f ./.tmp.[12].$$$$; \'
Lev Walkin1f12da42006-09-24 19:47:07 +0000140 echo ' echo "Test junking $$f (please wait)..."; \'
Lev Walkina926fce2017-08-27 12:54:25 -0700141 echo ' ./${TARGET} -J0.0001 -n 1000 -p $$pdu -b $$b -iper -onull $$f || exit 7; \'
142 echo ' ./${TARGET} -J0.001 -n 1000 -p $$pdu -b $$b -iper -onull $$f || exit 8; \'
Lev Walkin13afe532006-09-18 21:30:04 +0000143 echo ' done; done; fi'
Lev Walkinc744a022006-09-15 18:33:25 +0000144 echo
Lev Walkind748bff2017-08-07 17:47:50 -0700145 echo "maybe-wip-pause:"
Lev Walkin6aae7c62017-08-10 17:58:48 -0700146 echo " @if [ -f WIP ]; then cat WIP; sleep 2; fi"
Lev Walkind748bff2017-08-07 17:47:50 -0700147 echo
Lev Walkin2fd86de2006-09-13 02:10:23 +0000148 echo "distclean: clean"
Lev Walkin4fe13ff2006-09-17 02:57:40 +0000149 echo ' rm -f $(ASN_MODULE_SOURCES)'
150 echo ' rm -f $(ASN_MODULE_HEADERS)'
Lev Walkin2fd86de2006-09-13 02:10:23 +0000151 echo ' rm -f $(ASN_CONVERTER_SOURCES) $(ASN_CONVERTER_HEADERS)'
Lev Walkin8a85b362017-09-26 22:54:44 -0700152 echo " rm -f Makefile.am.example"
Lev Walkin2fd86de2006-09-13 02:10:23 +0000153) >> Makefile.$$
154
Lev Walkinaf250192006-09-21 01:51:57 +0000155set -x
156mv Makefile.$$ Makefile || exit $?
Lev Walkin8a85b362017-09-26 22:54:44 -0700157rm Makefile.am.example || exit $?
Lev Walkin2fd86de2006-09-13 02:10:23 +0000158set +x
Lev Walkinaf250192006-09-21 01:51:57 +0000159
Lev Walkin2fd86de2006-09-13 02:10:23 +0000160echo
161echo "Makefile generation finished"