blob: f34f0a268182f35bb9012e17bed890a9bfecdc17 [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
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#
Lev Walkin2fd86de2006-09-13 02:10:23 +000013
Lev Walkinc51cdd42006-09-17 00:20:47 +000014if test -z "$ASN1PDU" \
Lev Walkin2fd86de2006-09-13 02:10:23 +000015 -o -z "$ASN1MODULES" \
16 -o -z "$PROGNAME" \
Lev Walkinc51cdd42006-09-17 00:20:47 +000017; then
Lev Walkin444e7392006-09-15 22:45:40 +000018 echo "ASN1CMDOPTS=\"$ASN1CMDOPTS\""
Lev Walkin2fd86de2006-09-13 02:10:23 +000019 echo "ASN1MODULES=\"$ASN1MODULES\""
Lev Walkin444e7392006-09-15 22:45:40 +000020 echo "ASN1PDU=\"$ASN1PDU\""
Lev Walkin2fd86de2006-09-13 02:10:23 +000021 echo "PROGNAME=\"$PROGNAME\""
Lev Walkin444e7392006-09-15 22:45:40 +000022 echo "ASN1PDU, ASN1MODULES, and PROGNAME are mandatory"
Lev Walkin2fd86de2006-09-13 02:10:23 +000023 exit
24fi
25
Lev Walkin43739162006-09-17 03:53:11 +000026ASN1DEFPDU=`echo "$ASN1PDU" | tr - _`
Lev Walkinc51cdd42006-09-17 00:20:47 +000027
Lev Walkin2fd86de2006-09-13 02:10:23 +000028../../asn1c/asn1c -S ../../skeletons ${ASN1CMDOPTS} ${ASN1MODULES} || exit $?
29
Lev Walkinc51cdd42006-09-17 00:20:47 +000030if test ! -f Makefile.am.sample ; then
Lev Walkin2fd86de2006-09-13 02:10:23 +000031 echo "Makefile.am.sample is missing"
32 exit 1
33fi
34
Lev Walkin43739162006-09-17 03:53:11 +000035CFLAGS=""
Lev Walkinc51cdd42006-09-17 00:20:47 +000036
Lev Walkincc7c94e2006-09-17 04:01:29 +000037if test -f config.h ; then
38 CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
39fi
40
Lev Walkinaf63a912006-09-17 00:38:30 +000041FIXEDPDU=`echo "[$ASN1CMDOPTS]" | sed -e "s/.*-pdu=auto.*//"`
Lev Walkinf6ac9312006-09-17 00:30:54 +000042if test ! "$FIXEDPDU" ; then
Lev Walkin43739162006-09-17 03:53:11 +000043 CFLAGS="$CFLAGS -DASN_PDU_COLLECTION"
44fi
45
Lev Walkin2fd86de2006-09-13 02:10:23 +000046set -x
47cat Makefile.am.sample \
Lev Walkin43739162006-09-17 03:53:11 +000048 | sed -e "s/^CFLAGS.*/CFLAGS +=$CFLAGS -DPDU=${ASN1DEFPDU} -I./" \
Lev Walkin2fd86de2006-09-13 02:10:23 +000049 | sed -e "s/^all: /all: ${ASN1PDU}.c /" \
50 | sed -e "s/progname/${PROGNAME}/" \
51 > Makefile.$$
52
53( echo
54 echo "${ASN1PDU}.c: $0"
Lev Walkin43739162006-09-17 03:53:11 +000055 echo " make regen-makefile"
56 echo " @touch ${ASN1PDU}.c"
57 echo " make"
58 echo
59 echo "regen-makefile:"
Lev Walkin2fd86de2006-09-13 02:10:23 +000060 echo " ASN1CMDOPTS=\"${ASN1CMDOPTS}\" \\"
61 echo " ASN1MODULES=\"${ASN1MODULES}\" \\"
62 echo " ASN1PDU=${ASN1PDU} \\"
63 echo " PROGNAME=${PROGNAME} \\"
64 echo " $0"
Lev Walkin2fd86de2006-09-13 02:10:23 +000065 echo
Lev Walkinc744a022006-09-15 18:33:25 +000066 echo 'check: ${TARGET}'
67 echo " @if test -f ./sample-${ASN1PDU}-1.[db]er ; then \\"
68 echo " for f in ./sample-${ASN1PDU}-*.[db]er; do \\"
69 echo ' echo "Recoding $$f into XER and back..."; \'
70 echo ' ./${TARGET} -iber -oxer $$f > ./.tmp.1.$$ || exit 2; \'
71 echo ' ./${TARGET} -ixer -oxer ./.tmp.1.$$ > ./.tmp.2.$$ || exit 2; \'
72 echo ' diff ./.tmp.1.$$ ./.tmp.2.$$ || exit 2; \'
73 echo ' rm -f ./.tmp.[12].$$; \'
74 echo ' done; fi'
75 echo ' @echo ================'
76 echo ' @echo All tests passed'
77 echo ' @echo ================'
78 echo
Lev Walkin2fd86de2006-09-13 02:10:23 +000079 echo "distclean: clean"
Lev Walkin4fe13ff2006-09-17 02:57:40 +000080 echo ' rm -f $(ASN_MODULE_SOURCES)'
81 echo ' rm -f $(ASN_MODULE_HEADERS)'
Lev Walkin2fd86de2006-09-13 02:10:23 +000082 echo ' rm -f $(ASN_CONVERTER_SOURCES) $(ASN_CONVERTER_HEADERS)'
83 echo " rm -f Makefile.am.sample"
84) >> Makefile.$$
85
86rm Makefile.am.sample || exit $?
87
88mv Makefile.$$ Makefile
89
90set +x
91echo
92echo "Makefile generation finished"