build: Split-out build-source-lib.sh from build-lib.sh.
[mes.git] / build-aux / bootstrap.sh.in
1 #! @SHELL@
2
3 # GNU Mes --- Maxwell Equations of Software
4 # Copyright © 2019 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 LANG=
22 MES_ARENA=${MES_ARENA-100000000}
23 MES_MAX_ARENA=${MES_MAX_ARENA-100000000}
24 MES_STACK=${MES_STACK-500000}
25
26 . build-aux/configure-lib.sh
27
28 CPPFLAGS="-D HAVE_CONFIG_H=1 -I include"
29 CFLAGS=""
30 mkdir -p mescc-lib
31 cp config.sh mescc-lib/config.sh
32 cd mescc-lib
33 srcdest=../
34 CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ${srcdest}include/$mes_kernel/$mes_cpu"
35
36 mkdir $mes_cpu-mes
37 $CC -c $CPPFLAGS $CFLAGS ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/crt1.c
38 cp crt1.o $mes_cpu-mes
39 cp crt1.s $mes_cpu-mes
40
41 objects=
42 for c in $libc_mini_SOURCES; do
43     echo "CC         $c"
44     $CC -c $CPPFLAGS $CFLAGS ${srcdest}$c
45     o=$(basename $c .c).o
46     objects="$objects $o"
47 done
48 echo "AR         $mes_cpu-mes/libc-mini.a"
49 $AR crD $mes_cpu-mes/libc-mini.a $objects
50
51 objects=
52 for c in $libc_SOURCES; do
53     echo "CC         $c"
54     $CC -c $CPPFLAGS $CFLAGS ${srcdest}$c
55     o=$(basename $c .c).o
56     objects="$objects $o"
57 done
58 echo "AR         $mes_cpu-mes/libc.a"
59 $AR crD $mes_cpu-mes/libc.a $objects
60
61 objects=
62 for c in $libc_tcc_SOURCES; do
63     echo "CC         $c"
64     $CC -c $CPPFLAGS $CFLAGS ${srcdest}$c
65     o=$(basename $c .c).o
66     objects="$objects $o"
67 done
68 echo "AR         $mes_cpu-mes/libc+tcc.a"
69 $AR crD $mes_cpu-mes/libc+tcc.a $objects
70
71 cd ..
72 srcdest=
73 CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ${srcdest}include/$mes_kernel/$mes_cpu"
74
75 objects=
76 for c in $mes_SOURCES; do
77     echo "CC         $c"
78     $CC -c $CPPFLAGS $CFLAGS ${srcdest}$c
79     o=$(basename $c .c).o
80     objects="$objects $o"
81 done
82 echo "CCLD       src/mes"
83 $CC -nostdlib -o src/mes -L mescc-lib mescc-lib/crt1.o $objects -lc
84
85 (
86     mkdir -p gcc-lib
87     cp config.sh gcc-lib
88     cd gcc-lib
89     compiler=gcc
90     if test -z "$srcdest"; then
91         srcdest=../
92         srcdir=../
93     fi
94     @SHELL@ ${srcdest}build-aux/build-source-lib.sh
95 )