summaryrefslogtreecommitdiff
path: root/bootstrap
diff options
context:
space:
mode:
authorkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
committerkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
commitba1b04d64bdfaf377915b22f77520216ebe47674 (patch)
tree044343035c28b2b04ca9725f26e9b7c39342d19c /bootstrap
parent124b140798456778e2a96851cc7268aa9a726698 (diff)
downloadmcpu-cpp-ba1b04d64bdfaf377915b22f77520216ebe47674.tar.xz
Version 1.0.21.0.2
Diffstat (limited to 'bootstrap')
-rwxr-xr-xbootstrap106
1 files changed, 106 insertions, 0 deletions
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..0557f2d
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+CWD=`pwd`
+program=`basename $0`
+
+usage() {
+ cat << EOF_USAGE
+
+Usage: $program [options]
+
+Options:
+ -h,--help Display this message.
+ -d,--target-dest-dir=DIR The target ROOTFS directory
+ [default: DIR=/].
+
+The script regenerates files that do not need to be stored in Git:
+ src/mcpp-expr.c from src/mcpp-expr.zubr using ZUBR 4.1.0;
+ aclocal.m4 and m4 macros using aclocal;
+ config.h.in using autoheader;
+ Makefile.in and helper files using automake;
+ configure using autoconf.
+
+EOF_USAGE
+}
+
+TARGET_DEST_DIR=/
+ACDIR=usr/share/aclocal
+INCDIR=usr/include
+SYSTEM_ACDIR=
+SYSTEM_INCDIR=
+
+while [ 0 ] ; do
+ if [ "$1" = "-h" -o "$1" = "--help" ] ; then
+ usage
+ exit 0
+ elif [ "$1" = "-d" -o "$1" = "--target-dest-dir" ] ; then
+ if [ "$2" = "" ] ; then
+ echo -e "\n${program}: ERROR: --target-dest-dir is not specified.\n"
+ usage
+ exit 1
+ fi
+ TARGET_DEST_DIR="$2"
+ shift 2
+ elif [[ $1 == --target-dest-dir=* ]] ; then
+ TARGET_DEST_DIR="`echo $1 | cut -f2 -d'='`"
+ shift 1
+ else
+ if [ "$1" != "" ] ; then
+ echo -e "\n${program}: ERROR: Unknown argument: $1.\n"
+ usage
+ exit 1
+ fi
+ break
+ fi
+done
+
+if [ ! -d "${TARGET_DEST_DIR}" ] ; then
+ echo -e "\n${program}: ERROR: --target-dest-dir is not a directory.\n"
+ usage
+ exit 1
+fi
+
+# Absolute path:
+if [ "${TARGET_DEST_DIR:0:1}" != "/" ] ; then
+ TARGET_DEST_DIR=${CWD}/${TARGET_DEST_DIR}
+fi
+
+# Remove last '/' char except for the root itself:
+if [ "${TARGET_DEST_DIR}" != "/" -a "${TARGET_DEST_DIR: -1}" = "/" ] ; then
+ len=${#TARGET_DEST_DIR}
+ let "len = len - 1"
+ tmp="${TARGET_DEST_DIR:0:$len}"
+ TARGET_DEST_DIR=${tmp}
+fi
+
+if [ "${TARGET_DEST_DIR}" = "/" ] ; then
+ SYSTEM_ACDIR=/${ACDIR}
+ SYSTEM_INCDIR=/${INCDIR}
+else
+ SYSTEM_ACDIR="${TARGET_DEST_DIR}/${ACDIR}"
+ SYSTEM_INCDIR="${TARGET_DEST_DIR}/${INCDIR}"
+fi
+
+if ! command -v zubr >/dev/null 2>&1 ; then
+ echo -e "\n${program}: ERROR: ZUBR 4.1.0 is required to regenerate src/mcpp-expr.c.\n"
+ exit 1
+fi
+
+(
+ cd "$CWD/src" || exit 1
+ echo -e "\n${program}: producing './src/mcpu-expr.c'"
+ zubr -vl -s -Bmcpp_ -o mcpp-expr.c mcpp-expr.zubr
+) || exit 1
+
+aclocal --install -I m4 --force --system-acdir=${SYSTEM_ACDIR} || exit 1
+autoheader --include=${SYSTEM_INCDIR} || exit 1
+automake --gnu --add-missing --copy --force-missing || exit 1
+autoconf --force || exit 1
+
+################################################################
+# Remove cache and backup files:
+#
+rm -rf autom4te.cache src/z.output *~ src/*~ tests/*~ doc/*~ etc/*~
+#
+# End of Cleanup.
+################################################################