blob: 5e189478cffeb8545e48ec8e27b20ff48a43b63b [file] [log] [blame]
vlm94c92c02006-09-13 02:10:23 +00001#!/bin/sh
vlm13d1c512006-09-17 03:53:11 +00002#
3# This script attempts to compile the given ASN.1 specification and then
4# transforms the resulting Makefile.am.sample tailored to that specification
5# 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.
9# This is called "boot-strapping" and is frequently the source of inside jokes.
10#
11# $Id$
12#
vlm94c92c02006-09-13 02:10:23 +000013
vlmfa58cc72006-09-17 00:20:47 +000014if test -z "$ASN1PDU" \
vlm94c92c02006-09-13 02:10:23 +000015 -o -z "$ASN1MODULES" \
16 -o -z "$PROGNAME" \
vlmfa58cc72006-09-17 00:20:47 +000017; then
vlmebfee8e2006-09-15 22:45:40 +000018 echo "ASN1CMDOPTS=\"$ASN1CMDOPTS\""
vlm94c92c02006-09-13 02:10:23 +000019 echo "ASN1MODULES=\"$ASN1MODULES\""
vlmebfee8e2006-09-15 22:45:40 +000020 echo "ASN1PDU=\"$ASN1PDU\""
vlm94c92c02006-09-13 02:10:23 +000021 echo "PROGNAME=\"$PROGNAME\""
vlmebfee8e2006-09-15 22:45:40 +000022 echo "ASN1PDU, ASN1MODULES, and PROGNAME are mandatory"
vlm94c92c02006-09-13 02:10:23 +000023 exit
24fi
25
vlmd99294a2006-09-23 02:52:12 +000026CMDOPTS="-pdu=${ASN1PDU} ${ASN1CMDOPTS} ${ASN1MODULES}"
27
vlm60928922006-09-21 01:51:57 +000028if test -x ../../asn1c/asn1c ; then
29 echo "Compiling ${ASN1MODULES} using local compiler"
vlmd99294a2006-09-23 02:52:12 +000030 ../../asn1c/asn1c -S ../../skeletons ${CMDOPTS} || exit $?
vlm60928922006-09-21 01:51:57 +000031else
32 echo "Compiling ${ASN1MODULES} using system compiler"
vlmd99294a2006-09-23 02:52:12 +000033 asn1c ${CMDOPTS} || exit $?
vlm60928922006-09-21 01:51:57 +000034fi
vlm94c92c02006-09-13 02:10:23 +000035
vlmfa58cc72006-09-17 00:20:47 +000036if test ! -f Makefile.am.sample ; then
vlm94c92c02006-09-13 02:10:23 +000037 echo "Makefile.am.sample is missing"
38 exit 1
39fi
40
vlmfdf05da2006-09-24 19:47:07 +000041EXTRA_CFLAGS="-DJUNKTEST"
vlm70c232d2006-09-17 04:01:29 +000042if test -f config.h ; then
vlmfdf05da2006-09-24 19:47:07 +000043 EXTRA_CFLAGS="-DHAVE_CONFIG_H ${EXTRA_CFLAGS}"
vlm13d1c512006-09-17 03:53:11 +000044fi
45
vlm94c92c02006-09-13 02:10:23 +000046set -x
47cat Makefile.am.sample \
vlmd99294a2006-09-23 02:52:12 +000048 | sed -e "s/^CFLAGS += /CFLAGS += ${EXTRA_CFLAGS} /" \
vlm94c92c02006-09-13 02:10:23 +000049 | sed -e "s/^all: /all: ${ASN1PDU}.c /" \
50 | sed -e "s/progname/${PROGNAME}/" \
51 > Makefile.$$
vlm60928922006-09-21 01:51:57 +000052set +x
vlm94c92c02006-09-13 02:10:23 +000053
54( echo
vlmf49ca902006-09-18 20:04:14 +000055 echo "${ASN1PDU}.c: $0 ${ASN1MODULES}"
vlm13d1c512006-09-17 03:53:11 +000056 echo " make regen-makefile"
57 echo " @touch ${ASN1PDU}.c"
58 echo " make"
59 echo
60 echo "regen-makefile:"
vlm94c92c02006-09-13 02:10:23 +000061 echo " ASN1CMDOPTS=\"${ASN1CMDOPTS}\" \\"
62 echo " ASN1MODULES=\"${ASN1MODULES}\" \\"
63 echo " ASN1PDU=${ASN1PDU} \\"
64 echo " PROGNAME=${PROGNAME} \\"
65 echo " $0"
vlm94c92c02006-09-13 02:10:23 +000066 echo
vlmfdf05da2006-09-24 19:47:07 +000067 echo 'check: ${TARGET} check-ber check-xer check-per'
68 echo ' @echo ================'
69 echo ' @echo All tests passed'
70 echo ' @echo ================'
71 echo
72 echo 'check-ber:'
vlmde70d692006-09-18 21:19:32 +000073 echo " @if test -f sample-${ASN1PDU}-1.[db]er ; then \\"
74 echo " for f in sample-${ASN1PDU}-*.[db]er; do \\"
vlm774407b2006-09-18 21:30:04 +000075 echo ' for b in 1 17 33 980 8192; do \'
76 echo ' echo "Recoding $$f into XER and back ($$b)..."; \'
77 echo ' ./${TARGET} -b $$b -iber -oxer $$f > ./.tmp.1.$$$$ || exit 2; \'
vlma472cf22007-06-26 08:24:50 +000078 echo ' ./${TARGET} -b $$b -ixer -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
79 echo ' diff ./.tmp.1.$$$$ ./.tmp.2.$$$$ || exit 4; \'
vlme7e9bd92006-09-17 11:02:53 +000080 echo ' rm -f ./.tmp.[12].$$$$; \'
vlmfdf05da2006-09-24 19:47:07 +000081 echo ' echo "Test junking $$f (please wait)..."; \'
vlma472cf22007-06-26 08:24:50 +000082 echo ' ./${TARGET} -J0.0001 -n 1000 -b $$b -iber -onull $$f || exit 5; \'
83 echo ' ./${TARGET} -J0.001 -n 1000 -b $$b -iber -onull $$f || exit 6; \'
vlm774407b2006-09-18 21:30:04 +000084 echo ' done; done; fi'
vlmfdf05da2006-09-24 19:47:07 +000085 echo
86 echo 'check-xer:'
vlmde70d692006-09-18 21:19:32 +000087 echo " @if test -f sample-${ASN1PDU}-1.xer ; then \\"
88 echo " for f in sample-${ASN1PDU}-*.xer; do \\"
vlm774407b2006-09-18 21:30:04 +000089 echo ' for b in 1 17 33 980 8192; do \'
90 echo ' echo "Recoding $$f into DER and back ($$b)..."; \'
91 echo ' ./${TARGET} -b $$b -ixer -oder $$f > ./.tmp.1.$$$$ || exit 2; \'
vlma472cf22007-06-26 08:24:50 +000092 echo ' ./${TARGET} -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
93 echo ' diff $$f ./.tmp.2.$$$$ || exit 4; \'
vlme7e9bd92006-09-17 11:02:53 +000094 echo ' rm -f ./.tmp.[12].$$$$; \'
vlmfdf05da2006-09-24 19:47:07 +000095 echo ' echo "Test junking $$f (please wait)..."; \'
vlma472cf22007-06-26 08:24:50 +000096 echo ' ./${TARGET} -J0.0001 -n 1000 -b $$b -ixer -onull $$f || exit 5; \'
97 echo ' ./${TARGET} -J0.001 -n 1000 -b $$b -ixer -onull $$f || exit 6; \'
vlm774407b2006-09-18 21:30:04 +000098 echo ' done; done; fi'
vlmfdf05da2006-09-24 19:47:07 +000099 echo
100 echo 'check-per:'
vlma472cf22007-06-26 08:24:50 +0000101 echo " @if test -f sample-${ASN1PDU}-1-nopad.per ; then \\"
102 echo " for f in sample-${ASN1PDU}-[1-9]-nopad.per; do \\"
vlm774407b2006-09-18 21:30:04 +0000103 echo ' for b in 1 17 33 980 8192; do \'
vlma472cf22007-06-26 08:24:50 +0000104 echo ' echo "Recoding non-padded $$f into DER into XER and back ($$b)..."; \'
105 echo ' ./${TARGET} -b $$b -per-nopad -iper -oder $$f > ./.tmp.1.$$$$ || exit 2; \'
106 echo ' ./${TARGET} -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \'
107 echo ' ./${TARGET} -b $$b -ixer -oder ./.tmp.2.$$$$ > ./.tmp.3.$$$$ || exit 4; \'
108 echo ' diff ./.tmp.1.$$$$ ./.tmp.3.$$$$ || exit 5; \'
vlm774407b2006-09-18 21:30:04 +0000109 echo ' rm -f ./.tmp.[123].$$$$; \'
vlmfdf05da2006-09-24 19:47:07 +0000110 echo ' echo "Test junking $$f (please wait)..."; \'
vlma472cf22007-06-26 08:24:50 +0000111 echo ' ./${TARGET} -J0.0001 -n 1000 -b $$b -per-nopad -iper -onull $$f || exit 6; \'
112 echo ' ./${TARGET} -J0.001 -n 1000 -b $$b -per-nopad -iper -onull $$f || exit 7; \'
vlm774407b2006-09-18 21:30:04 +0000113 echo ' done; done; fi'
vlma472cf22007-06-26 08:24:50 +0000114 echo " @if test -f sample-${ASN1PDU}-1.per ; then \\"
115 echo " for f in sample-*-[1-9].per; do \\"
vlmde70d692006-09-18 21:19:32 +0000116 echo ' pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z-]+)-[0-9].*/\1/"`; \'
vlm774407b2006-09-18 21:30:04 +0000117 echo ' for b in 1 17 33 980 8192; do \'
vlma472cf22007-06-26 08:24:50 +0000118 echo ' echo "Recoding $$f into DER into XER and back ($$b)..."; \'
119 echo ' ./${TARGET} -b $$b -p $$pdu -iper -oder $$f > ./.tmp.1.$$$$ || exit 3; \'
120 echo ' ./${TARGET} -b $$b -p $$pdu -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 4; \'
121 echo ' ./${TARGET} -b $$b -p $$pdu -ixer -oper ./.tmp.2.$$$$ > ./.tmp.1.$$$$ || exit 5; \'
122 echo ' diff $$f ./.tmp.1.$$$$ || exit 6; \'
vlm774407b2006-09-18 21:30:04 +0000123 echo ' rm -f ./.tmp.[12].$$$$; \'
vlmfdf05da2006-09-24 19:47:07 +0000124 echo ' echo "Test junking $$f (please wait)..."; \'
vlma472cf22007-06-26 08:24:50 +0000125 echo ' ./${TARGET} -J0.0001 -n 1000 -b $$b -iper -onull $$f || exit 7; \'
126 echo ' ./${TARGET} -J0.001 -n 1000 -b $$b -iper -onull $$f || exit 8; \'
vlm774407b2006-09-18 21:30:04 +0000127 echo ' done; done; fi'
vlme0fb1e82006-09-15 18:33:25 +0000128 echo
vlm94c92c02006-09-13 02:10:23 +0000129 echo "distclean: clean"
vlm66cea382006-09-17 02:57:40 +0000130 echo ' rm -f $(ASN_MODULE_SOURCES)'
131 echo ' rm -f $(ASN_MODULE_HEADERS)'
vlm94c92c02006-09-13 02:10:23 +0000132 echo ' rm -f $(ASN_CONVERTER_SOURCES) $(ASN_CONVERTER_HEADERS)'
133 echo " rm -f Makefile.am.sample"
134) >> Makefile.$$
135
vlm60928922006-09-21 01:51:57 +0000136set -x
137mv Makefile.$$ Makefile || exit $?
vlm94c92c02006-09-13 02:10:23 +0000138rm Makefile.am.sample || exit $?
vlm94c92c02006-09-13 02:10:23 +0000139set +x
vlm60928922006-09-21 01:51:57 +0000140
vlm94c92c02006-09-13 02:10:23 +0000141echo
142echo "Makefile generation finished"