1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/mk_interface_inc Sat Nov 09 21:21:35 2019 +0100
1.3 @@ -0,0 +1,83 @@
1.4 +#!/bin/sh
1.5 +
1.6 +DIRNAME=`dirname "$0"`
1.7 +PROGNAME=`basename "$0"`
1.8 +
1.9 +TEMPLATES="$DIRNAME/templates"
1.10 +
1.11 +# Test for arguments.
1.12 +
1.13 +if [ ! "$1" ] || [ "$1" = '--help' ] ; then
1.14 + cat 1>&2 <<EOF
1.15 +Usage: $PROGNAME [ -C ] <interface filename> \\
1.16 + [ -N <interface name> ] [ <interface filename> ... ]
1.17 +
1.18 +This program reads a template from...
1.19 +
1.20 +$TEMPLATES
1.21 +
1.22 +...and produces a Makefile for inclusion in other Makefiles alongside suitable
1.23 +definitions and rules.
1.24 +
1.25 +Specifying the -C option produces a compound/composite/component interface
1.26 +employing other interfaces. Providing the -N option with a name overrides the
1.27 +name of the generated interface. The individual interface names or filenames
1.28 +must then be given.
1.29 +EOF
1.30 + exit 1
1.31 +fi
1.32 +
1.33 +# Determine what kind of interface is involved.
1.34 +
1.35 +if [ "$1" = '-C' ] ; then
1.36 + COMP=$1
1.37 + shift 1
1.38 +else
1.39 + COMP=
1.40 +fi
1.41 +
1.42 +# Get the interface name, filename or filename prefix.
1.43 +
1.44 +NAME=$1
1.45 +shift 1
1.46 +
1.47 +# Obtain the prefix or root of the interface filename.
1.48 +
1.49 +INTERFACE_PREFIX=`basename "$NAME" .idl`
1.50 +
1.51 +# Test for an interface name.
1.52 +
1.53 +INTERFACE_NAME=$INTERFACE_PREFIX
1.54 +
1.55 +if [ "$COMP" ] ; then
1.56 + if [ "$1" = '-N' ] ; then
1.57 + shift 1
1.58 + INTERFACE_NAME=$1
1.59 + shift 1
1.60 + fi
1.61 +
1.62 + INTERFACE_FILES=
1.63 +
1.64 + for NAME in $* ; do
1.65 + INTERFACE_FILES="$INTERFACE_FILES `basename \"$NAME\" .idl`"
1.66 + done
1.67 +fi
1.68 +
1.69 +# Obtain a suitable identifier as a variable name prefix.
1.70 +
1.71 +VARNAME=`echo "$INTERFACE_PREFIX" | tr [:blank:] _`
1.72 +
1.73 +# Substitution rules.
1.74 +
1.75 +SUB_VARNAME='s/{VARNAME}/'"$VARNAME"'/g'
1.76 +SUB_PREFIX='s/{INTERFACE_PREFIX}/'"$INTERFACE_PREFIX"'/g'
1.77 +SUB_FILES='s/{INTERFACE_FILES}/'"$INTERFACE_FILES"'/g'
1.78 +SUB_NAME='s/{INTERFACE_NAME}/'"$INTERFACE_NAME"'/g'
1.79 +
1.80 +# Substitute the above values for the placeholders in the Makefile template.
1.81 +
1.82 +if [ "$COMP" ] ; then
1.83 + sed "$SUB_VARNAME;$SUB_PREFIX;$SUB_FILES;$SUB_NAME" "$TEMPLATES/comp_interface.inc"
1.84 +else
1.85 + sed "$SUB_VARNAME;$SUB_PREFIX" "$TEMPLATES/interface.inc"
1.86 +fi
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/templates/comp_interface.inc Sat Nov 09 21:21:35 2019 +0100
2.3 @@ -0,0 +1,17 @@
2.4 +# -*- Makefile -*-
2.5 +
2.6 +{VARNAME}_INTERFACES = {INTERFACE_FILES}
2.7 +{VARNAME}_PREFIX = {INTERFACE_PREFIX}
2.8 +{VARNAME}_NAME = {INTERFACE_NAME}
2.9 +{VARNAME}_IDL = $(call interfaces_to_idl,$({VARNAME}_INTERFACES))
2.10 +{VARNAME}_SERVER = $(call interfaces_to_server,$({VARNAME}_PREFIX))
2.11 +{VARNAME}_EXPORTED = $(call exported_files, $(call interfaces_to_interfaces_h,$({VARNAME}_PREFIX)))
2.12 +{VARNAME}_OPTIONS = --comp=$({VARNAME}_PREFIX) --comp-name=$({VARNAME}_NAME)
2.13 +
2.14 +$({VARNAME}_SERVER): $({VARNAME}_IDL) $({VARNAME}_EXPORTED)
2.15 + $(IDL_PROG) -d $(BUILD_DIR) $({VARNAME}_OPTIONS) --headers --routines --language=c++ $({VARNAME}_IDL)
2.16 +
2.17 +$({VARNAME}_EXPORTED): $({VARNAME}_IDL)
2.18 + $(IDL_PROG) -d $(EXPORTED_DIR) $({VARNAME}_OPTIONS) --interfaces --language=c++ $({VARNAME}_IDL)
2.19 +
2.20 +# vim: set ft=make:
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/templates/interface.inc Sat Nov 09 21:21:35 2019 +0100
3.3 @@ -0,0 +1,14 @@
3.4 +# -*- Makefile -*-
3.5 +
3.6 +{VARNAME}_PREFIX = {INTERFACE_PREFIX}
3.7 +{VARNAME}_IDL = $(call interfaces_to_idl,$({VARNAME}_PREFIX))
3.8 +{VARNAME}_SERVER = $(call interfaces_to_server,$({VARNAME}_PREFIX))
3.9 +{VARNAME}_EXPORTED = $(call exported_files,$(call interfaces_to_interface_h,$({VARNAME}_PREFIX)))
3.10 +
3.11 +$({VARNAME}_SERVER): $({VARNAME}_IDL) $({VARNAME}_EXPORTED)
3.12 + $(IDL_PROG) -d $(BUILD_DIR) --server --headers --routines --language=c++ $({VARNAME}_IDL)
3.13 +
3.14 +$({VARNAME}_EXPORTED): $({VARNAME}_IDL)
3.15 + $(IDL_PROG) -d $(EXPORTED_DIR) --server --interfaces --language=c++ $({VARNAME}_IDL)
3.16 +
3.17 +# vim: set ft=make: