build: x86_64 bootstrap build fixes and workaround.
[mes.git] / build-aux / install.sh.in
1 #! /bin/sh
2
3 # GNU Mes --- Maxwell Equations of Software
4 # Copyright © 2017,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 srcdest="@srcdest@"
23 srcdir="@srcdir@"
24 abs_top_srcdir="@abs_top_srcdir@"
25 abs_top_builddir="@abs_top_builddir@"
26 prefix=${prefix-@prefix@}
27 VERSION=${VERSION-@VERSION@}
28
29 . ${srcdest}build-aux/config.sh
30 . ${srcdest}build-aux/trace.sh
31
32 SHELL=${SHELL-$(command -v sh)}
33
34 # use bash or lose if pipes fail
35 [ -n "$BASH" ] && set -o pipefail
36
37 MES_PREFIX=${MES_PREFIX-$prefix/share/mes}
38 MES_SEED=${MES_SEED-../MES-SEED}
39 TINYCC_SEED=${TINYCC_SEED-../TINYCC-SEED}
40
41 GUILE=${GUILE-$(command -v guile)} || true
42 if [ -z "$GUILE" -o "$GUILE" = true ]; then
43     GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-2.2}
44 else
45     GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-$(guile -c '(display (effective-version))')}
46 fi
47 bindir=$(eval echo ${bindir-$prefix/bin})
48 datadir=$(eval echo ${datadir-$prefix/share})
49 docdir=$(eval echo ${docdir-$datadir/doc/mes-$VERSION})
50 infodir=$(eval echo ${infodir-$datadir/info})
51 mandir=$(eval echo ${mandir-$datadir/man})
52 moduledir=$(eval echo ${moduledir-$datadir/mes/module})
53 guile_site_dir=$(eval echo ${guile_site_dir-$prefix/share/guile/site/$GUILE_EFFECTIVE_VERSION})
54 guile_site_ccache_dir=$(eval echo ${guile_site_ccache_dir-$prefix/lib/guile/$GUILE_EFFECTIVE_VERSION/site-ccache})
55
56 mkdir -p $DESTDIR$bindir
57 cp src/mes $DESTDIR$bindir/mes
58 cp scripts/mescc $DESTDIR$bindir/mescc
59
60 sed \
61     -e "s,^#! /bin/sh,#! $SHELL," \
62     scripts/diff.scm > $DESTDIR$bindir/diff.scm
63 chmod -w+x $DESTDIR$bindir/diff.scm
64
65 mkdir -p $docdir
66
67 if [ -n "$PERL" -a -n "$GIT" ]\
68        && $PERL -v > /dev/null\
69        && $GIT --status > /dev/null; then
70     $PERL ${srcdest}build-aux/gitlog-to-changelog --srcdir=. > ChangeLog
71 fi
72
73 cp\
74     AUTHORS\
75     BOOTSTRAP\
76     COPYING\
77     HACKING\
78     INSTALL\
79     NEWS\
80     README\
81     $DESTDIR$docdir
82
83 if [ -f ChangeLog ]; then
84     cp ChangeLog $DESTDIR$docdir
85 else
86     cp ChangeLog $DESTDIR$docdir
87 fi
88
89 if [ -f ChangeLog ]; then
90     cp ChangeLog $docdir
91 else
92     cp ChangeLog $docdir
93 fi
94
95 mkdir -p $DESTDIR$MES_PREFIX
96 if [ -z "$srcdest" ]; then
97     tar -cf- --exclude='*.E' --exclude='*.*-out' include lib | tar -xf- -C $DESTDIR$MES_PREFIX
98     tar -cf- --exclude='*.go' module | tar -xf- -C $DESTDIR$MES_PREFIX
99     tar -cf- --exclude='*.gcc*' --exclude='*.mes*' scaffold | tar -xf- -C $DESTDIR$MES_PREFIX
100 else
101     tar -cf- -C ${srcdest} include lib | tar -xf- -C $DESTDIR$MES_PREFIX
102     tar -cf- -C lib --exclude='*.E' --exclude='*.*-out' | tar -xf- -C $DESTDIR$MES_PREFIX
103     tar -cf- -C ${srcdest} module | tar -xf- -C $DESTDIR$MES_PREFIX
104     tar -cf- -C ${srcdest} scaffold | tar -xf- -C $DESTDIR$MES_PREFIX
105 fi
106 tar -cf- -C ${srcdest}mes module | tar -xf- -C $DESTDIR$MES_PREFIX
107
108 cp src/mes.S $DESTDIR$MES_PREFIX/lib/x86-mes/mes.S
109 if [ -f src/mes.x86_64-mes-S ]; then
110     cp src/mes.x86_64-mes-S $DESTDIR$MES_PREFIX/lib/x86_64-mes/mes.S
111 fi
112
113 mkdir -p $DESTDIR$guile_site_dir
114 mkdir -p $DESTDIR$guile_site_ccache_dir
115 tar -cf- -C ${srcdest}module --exclude='*.go' . | tar -xf- -C $DESTDIR$guile_site_dir
116 tar -cf- -C module --exclude='*.scm' . | tar -xf- -C $DESTDIR$guile_site_ccache_dir
117
118 if [ -f doc/mes.info ]; then
119     mkdir -p $DESTDIR$infodir
120     tar -cf- doc/mes.info* doc/images | tar -xf- --strip-components=1 -C $DESTDIR$infodir
121     install-info --info-dir=$DESTDIR$infodir doc/mes.info
122 fi
123
124 if [ -f doc/mes.1 ]; then
125     mkdir -p $DESTDIR$mandir/man1
126     cp doc/mes.1 $DESTDIR$mandir/man1/
127 fi
128
129 if [ -f doc/mescc.1 ]; then
130     mkdir -p $DESTDIR$mandir/man1
131     cp doc/mescc.1 $DESTDIR$mandir/man1/
132 fi