core: Implement stack and frame.
[mes.git] / build-aux / cc-x86_64-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     MES64_CFLAGS="$MES64_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="x86_64-mes-"
43 else
44     b=${c##*/}
45     d=${c%%/*}/x86_64-mes
46     o="$d/$b"
47 fi
48 mkdir -p $d
49
50 if [ -n "$PREPROCESS" ]; then
51     trace "CPP.mes64  $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES64_CFLAGS -E -o "$o.${p}E" "${srcdest}$c".c
52     trace "CC.mes64   $c.E" ./pre-inst-env bash $MESCC $MES64_CFLAGS -S -o "$o".${p}S "$o".${p}E
53     trace "AS.mes64   $c.S" ./pre-inst-env bash $MESCC $MES64_CFLAGS -c -o "$o".${p}o "$o".${p}S
54     if [ -z "$NOLINK" ]; then
55         trace "LD.mes64   $c.o" ./pre-inst-env bash $MESCC $MES64_CFLAGS -o "$o".${p}out "$o".${p}o $MES_LIBS
56     fi
57 elif [ -n "$COMPILE" ]; then
58     trace "CC.mes64   $c.c" trace "MESCC $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES64_CFLAGS -S -o "$o".${p}S "${srcdest}$c".c
59     trace "AS.mes64   $c.S" ./pre-inst-env bash $MESCC $MES64_CFLAGS -c -o "$o".${p}o "$o".${p}S
60     if [ -z "$NOLINK" ]; then
61         trace "LD.mes64   $c.o" ./pre-inst-env bash $MESCC $MES64_CFLAGS -o "$o".${p}out "$o".${p}o $MES_LIBS
62     fi
63 elif [ -z "$NOLINK" ]; then
64     trace "CC.mes64   $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES64_CFLAGS -o "$o".${p}out "${srcdest}$c".c $MES_LIBS
65 else
66    trace "CC.mes64   $c.c" ./pre-inst-env bash $MESCC $MES_CPPFLAGS $MES64_CFLAGS -c -o "$o".${p}o "${srcdest}$c".c
67 fi