build: Make build more autotools-like.
[mes.git] / build-aux / cc-mes.sh
1 #! /bin/sh
2
3 # GNU Mes --- Maxwell Equations of Software
4 # Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
5 #
6 # This file is part of GNU Mes.
7 #
8 # GNU Mes is free software; you can redistribute it and/or modify it
9 # under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 3 of the License, or (at
11 # your option) any later version.
12 #
13 # GNU Mes is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
20
21 set -e
22
23 . ${srcdest}build-aux/config.sh
24 . ${srcdest}build-aux/trace.sh
25
26 MESCC=${MESCC-$(command -v mescc)}
27 [ -z "$MESCC" ] && MESCC=scripts/mescc
28 MES=${MES-$(command -v mes)}
29 [ -z "$MES" ] && MES=src/mes
30
31 if [ "$V" = 2 ]; then
32     MES_CFLAGS="$MES_CFLAGS -v"
33 fi
34
35 c=$1
36
37 set -e
38
39 if [ -z "$ARCHDIR" ]; then
40     o="$c"
41     d=${c%%/*}
42     p="mes-"
43 else
44     b=${c##*/}
45     d=${c%%/*}/x86-mes
46     o="$d/$b"
47 fi
48 mkdir -p $d
49
50 if [ -n "$PREPROCESS" ]; then
51     trace "MESCPP $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES_CFLAGS -E -o "$o.E" "${srcdest}$c".c
52     trace "MESCC $c.E" ./pre-inst-env bash $MESCC $MES_CFLAGS -S "$o".E
53     trace "MESAS $c.S" ./pre-inst-env bash $MESCC $MES_CFLAGS -c -o "$o".${p}o "$o".S
54     if [ -z "$NOLINK" ]; then
55         trace "MESLD $c.o" ./pre-inst-env bash $MESCC $MES_CFLAGS -o "$o".${p}out "$o".${p}o $MES_LIBS
56     fi
57 elif [ -n "$COMPILE" ]; then
58     trace "MESCC $c.c" trace "MESCC $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES_CFLAGS -S -o "$o.S" "${srcdest}$c".c
59     trace "MESAS $c.S" ./pre-inst-env bash $MESCC $MES_CFLAGS -c -o "$o".${p}o "$o".S
60     if [ -z "$NOLINK" ]; then
61         trace "MESLD $c.o" ./pre-inst-env bash $MESCC $MES_CFLAGS -o "$o".${p}out "$o".${p}o $MES_LIBS
62     fi
63 elif [ -z "$NOLINK" ]; then
64     trace "MESLD $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES_CFLAGS -o "$o".${p}out "${srcdest}$c".c $MES_LIBS
65 else
66    trace "MESCC $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES_CFLAGS -c -o "$o".${p}o "${srcdest}$c".c
67 fi