/usr/bin/maria-cso is in maria 1.3.5-4.1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #!/bin/sh
## Compile and link the modules in the specified directory to a shared library
## Location of the header files (adjust this to an absolute path)
INCLUDES="-I/usr/share/maria/runtime"
## Definitions to pass to the C compiler
## RED_BLACK:
## keep multi-sets in red-black trees instead of unbalanced trees
## (useful if the places in the net have more than a few tokens)
## NO_INVARIANT_CHECK(p)
## even if the (p+1)th place defined in the net
## has a marking-dependent initialization expression,
## do not check its validity when encoding markings
## (use only if you are sure that the invariants hold)
## TRANSITION_EMPTY(t)
## before instance analysis, check whether any of the inputs
## has an insufficient number of tokens for the (t+1)th transition
## defined in the net to be enabled
## (may be useful for seldomly enabled transitions)
#: ${DEFINES="-DRED_BLACK"}
#: ${DEFINES="-DRED_BLACK -D'NO_INVARIANT_CHECK(p)=1'"}
: ${DEFINES="-DRED_BLACK -D'TRANSITION_EMPTY(t)=1' -D'NO_INVARIANT_CHECK(p)=1'"}
## Function to execute compiler and linker commands
perform() { eval "$@" || exit $?; }
#perform() { echo "$@" >&2; eval "$@" || exit $?; }
set -eu
<&-
case "`uname`" in
Linux|FreeBSD|NetBSD|OpenBSD)
: ${CC="gcc"}
: ${CFLAGS="-ansi -O3 -fomit-frame-pointer"}
: ${LD="ld"}
: ${LDFLAGS="-shared -s -lc"}
;;
AIX)
: ${CC="gcc"}
: ${CFLAGS="-ansi -O3 -fomit-frame-pointer"}
: ${LD="gcc"}
: ${LDFLAGS="-shared -s -lc"}
;;
OSF1)
: ${CC="cc"}
: ${CFLAGS="-arch host -assume trusted_short_alignment -O5 -std1"}
: ${LD="ld"}
: ${LDFLAGS="-shared -s -lc"}
;;
HP-UX)
: ${CC="cc"}
: ${CFLAGS="-fast"}
: ${LD="ld"}
: ${LDFLAGS="-b -s -lc"}
;;
SunOS)
: ${CC="gcc"}
: ${CFLAGS="-ansi -Werror -O3 -fomit-frame-pointer"}
: ${LD="ld"}
: ${LDFLAGS="-G -s -lc"}
;;
IRIX64)
: ${CC="cc"}
: ${CFLAGS="-n32 -O2"}
: ${LD="ld"}
: ${LDFLAGS="-n32 -shared -s -lc"}
;;
Darwin)
: ${CC="cc"}
: ${CFLAGS="-ansi -O3 -fomit-frame-pointer -fno-common"}
: ${LD="ld"}
: ${LDFLAGS="-dynamic -bundle -lbundle1.o -lc"}
;;
*)
echo "Unknown operating system." >&2
exit 1
;;
esac
DIR="${1:-}"
LIB="${2:-}"
[ $# -ge 2 -a -d "$DIR" ] || \
{
echo "Usage: $0 directory library.so source1.c source2.c ..." >&2
exit 1
}
shift 2
if [ $# -eq 1 ]
then
i="`basename "$1" .c`"
perform $CC $DEFINES $CFLAGS -I"$DIR" $INCLUDES \
-c "$DIR/$i.c" -o "$DIR/$i.o"
perform $LD -o "$LIB" "$DIR/$i.o" $LDFLAGS
exit
fi
(
cd "$DIR"
cksum mset.h > mset.sum1
cmp -s mset.sum mset.sum1 || rm -f c.sum || exit $?
mv -f mset.sum1 mset.sum
cksum "$@" > c.sum1
touch c.sum
) || exit $?
diff "$DIR/c.sum" "$DIR/c.sum1" \
| sed -ne 's/^> [0-9]*[ ]*[0-9]*[ ]*\(.*\)\.c$/\1/p' \
| {
NEED_LINK=""
while read i
do
perform $CC $DEFINES $CFLAGS -I"$DIR" $INCLUDES \
-c "$DIR/$i.c" -o "$DIR/$i.o"
NEED_LINK=true
done
mv -f "$DIR/c.sum1" "$DIR/c.sum"
if [ -n "$NEED_LINK" -o ! -f "$LIB" ]
then
perform $LD -o "$LIB" `sed -ne '{i\\
'"$DIR/"'
s/[0-9]*[ ]*[0-9]*[ ]*\(.*\)\.c$/\1.o /p
}' < "$DIR/c.sum" | tr -d \\\\012` $LDFLAGS
fi
}
|