build: Support --srcdir build.
[mes.git] / install.sh
index 95aef6de172fcb14085d4d1c9c841666c38aa6bb..5901c19f115b7a0509c962292b1558495e8460e5 100755 (executable)
@@ -1,21 +1,29 @@
 #! /bin/sh
 
 set -e
-if [ -n "$BUILD_DEBUG" ]; then
-    set -x
-fi
+
+. build-aux/trace.sh
 
 # use bash or lose if pipes fail
 [ -n "$BASH" ] && set -o pipefail
 
 SHELL=${SHELL-$(command -v sh)}
 prefix=${prefix-/usr/local}
+top_builddest=${top_builddest-}
+top_builddir=${top_buildir-.}
+abs_top_srcdir=${abs_top_srcdir-$PWD}
+abs_top_builddir=${abs_top_builddir-$PWD}
 
 MES_PREFIX=${MES_PREFIX-$prefix/share/mes}
 MES_SEED=${MES_SEED-../MES-SEED}
 TINYCC_SEED=${TINYCC_SEED-../TINYCC-SEED}
 
-GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-$(guile -c '(display (effective-version))')}
+GUILE=${GUILE-$(command -v guile)} || true
+if [ -z "$GUILE" -o "$GUILE" = true ]; then
+    GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-2.2}
+else
+    GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-$(guile -c '(display (effective-version))')}
+fi
 bindir=${bindir-$prefix/bin}
 datadir=${datadir-$prefix/share/mes}
 docdir=${docdir-$prefix/share/doc/mes}
@@ -26,28 +34,26 @@ guile_site_dir=${guile_site_dir-$prefix/share/guile/site/$GUILE_EFFECTIVE_VERSIO
 guile_site_ccache_dir=${guile_site_ccache_dir-$prefix/lib/guile/$GUILE_EFFECTIVE_VERSION/site-ccache}
 
 mkdir -p $DESTDIR$bindir
-cp src/mes $DESTDIR$bindir/mes
-cp scripts/mescc $DESTDIR$bindir/mescc
+cp ${top_builddest}src/mes $DESTDIR$bindir/mes
+cp ${top_builddest}scripts/mescc $DESTDIR$bindir/mescc
 
 sed \
     -e "s,^#! /bin/sh,#! $SHELL," \
     scripts/diff.scm > $DESTDIR$bindir/diff.scm
 chmod -w+x $DESTDIR$bindir/diff.scm
 
-
 mkdir -p $docdir
 
 if [ -n "$PERL" -a -n "$GIT" ]\
        && $PERL -v > /dev/null\
        && $GIT --status > /dev/null; then
-    $PERL build-aux/gitlog-to-changelog --srcdir=. > ChangeLog
+    $PERL build-aux/gitlog-to-changelog --srcdir=. > ${top_builddest}ChangeLog
 fi
 
 cp\
     AUTHORS\
     BOOTSTRAP\
     COPYING\
-    ChangeLog\
     HACKING\
     INSTALL\
     NEWS\
@@ -60,28 +66,36 @@ else
     cp ChangeLog $DESTDIR$docdir
 fi
 
+if [ -f ${top_builddest}ChangeLog ]; then
+    cp ${top_builddest}ChangeLog $docdir
+else
+    cp ChangeLog $docdir
+fi
+
+mkdir -p $DESTDIR$MES_PREFIX
 tar -cf- include lib | tar -xf- -C $DESTDIR$MES_PREFIX
 tar -cf- scaffold --exclude='*.gcc*' --exclude='*.mes*' | tar -xf- -C $DESTDIR$MES_PREFIX
+tar -cf- ${top_builddest}lib | tar -xf- -C $DESTDIR$MES_PREFIX
 tar -cf- --exclude='*.go' module | tar -xf- -C $DESTDIR$MES_PREFIX
 tar -cf- -C mes module | tar -xf- -C $DESTDIR$MES_PREFIX
 
 mkdir -p $DESTDIR$guile_site_dir
 mkdir -p $DESTDIR$guile_site_ccache_dir
 tar -cf- -C module --exclude='*.go' . | tar -xf- -C $DESTDIR$guile_site_dir
-tar -cf- -C module --exclude='*.scm' . | tar -xf- -C $DESTDIR$guile_site_ccache_dir
+tar -cf- -C ${top_builddest}module --exclude='*.scm' . | tar -xf- -C $DESTDIR$guile_site_ccache_dir
 
-if [ -f doc/mes.info ]; then
-    mkdir -p $DESTDIR$prefix/share/info
-    tar -cf- doc/mes.info* doc/images | tar -xf- --strip-components=1 -C $DESTDIR$infodir
-    install-info --info-dir=$DESTDIR$prefix/share/info doc/mes.info
+if [ -f ${top_builddest}doc/mes.info ]; then
+    mkdir -p $DESTDIR$infodir
+    tar -cf- ${top_builddest}doc/mes.info* doc/images | tar -xf- --strip-components=1 -C $DESTDIR$infodir
+    install-info --info-dir=$DESTDIR$infodir ${top_builddest}doc/mes.info
 fi
 
-if [ -f doc/mes.1 ]; then
+if [ -f ${top_builddest}doc/mes.1 ]; then
     mkdir -p $DESTDIR$mandir/man1
-    cp doc/mes.1 $DESTDIR$mandir/man1/
+    cp ${top_builddest}doc/mes.1 $DESTDIR$mandir/man1/
 fi
 
-if [ -f doc/mescc.1 ]; then
+if [ -f ${top_builddest}doc/mescc.1 ]; then
     mkdir -p $DESTDIR$mandir/man1
-    cp doc/mescc.1 $DESTDIR$mandir/man1/
+    cp ${top_builddest}doc/mescc.1 $DESTDIR$mandir/man1/
 fi