aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjahoti <jahoti@tilde.team>2021-10-10 00:00:00 +0000
committerjahoti <jahoti@tilde.team>2021-10-10 00:00:00 +0000
commit4320edc924a303ce0cab0000a5f16f045a3822df (patch)
tree29928f4d71892654d0791c06bd79696e434f566f
parent5285b0923cd601e631bf9600f8b3f005c15287c4 (diff)
downloadbrowser-extension-4320edc924a303ce0cab0000a5f16f045a3822df.tar.gz
browser-extension-4320edc924a303ce0cab0000a5f16f045a3822df.zip
Add a configuration system
-rw-r--r--Makefile.in (renamed from Makefile)24
-rwxr-xr-xconfigure77
-rwxr-xr-xwrite_makefile.sh21
3 files changed, 118 insertions, 4 deletions
diff --git a/Makefile b/Makefile.in
index fc752e9..dcc1863 100644
--- a/Makefile
+++ b/Makefile.in
@@ -1,6 +1,6 @@
# This file is part of Haketilo
#
-# Copyright (C) 2021, Wojtek Kosior
+# Copyright (C) 2021, jahoti
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the CC0 1.0 Universal License as published by
@@ -12,9 +12,8 @@
# CC0 1.0 Universal License for more details.
SHELL = /bin/sh
-UPDATE_URL =
-default_target = all
-srcdir = .
+
+# Configuration goes here
# The default target: placed up here
default: $(default_target)
@@ -43,3 +42,20 @@ build_%.zip: build_%
clean:
rm -rf build_mozilla build_chromium
rm -f build_mozilla.zip build_chromium.zip
+
+distclean: clean
+ rm -f Makefile config.status record.conf
+
+# Files for constructing the makefile
+Makefile: config.status Makefile.in record.conf
+ ./config.status
+
+config.status:
+ cp "$(srcdir)"/write_makefile.sh config.status
+
+Makefile.in:
+ cp "$(srcdir)"/Makefile.in .
+
+record.conf:
+ @echo File record.conf not found; rebuild by running configure
+ @exit 1
diff --git a/configure b/configure
new file mode 100755
index 0000000..3e12cbb
--- /dev/null
+++ b/configure
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# This file is part of Haketilo
+#
+# Copyright (C) 2021, jahoti
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the CC0 1.0 Universal License as published by
+# the Creative Commons Corporation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# CC0 1.0 Universal License for more details.
+
+set -e
+
+SRCDIR=''
+TARGET=''
+
+# Parse command line options
+while [ "x$1" != x ]; do
+ case "$1" in
+ --srcdir=*) SRCDIR="$(echo "$1" | cut -c 10-)";;
+ --srcdir) SRCDIR="$2"; shift;;
+ "UPDATE_URL"=*) UPDATE_URL="$(echo "$1" | cut -c 12-)";;
+ --host=*) TARGET="$(echo "$1" | cut -c 8-)";;
+ --host) TARGET="$2"; shift;;
+ mozilla | chromium | all) TARGET=$1;;
+ *) echo Ignoring option "'$1'";;
+ esac
+ shift
+done
+
+# Autodetect srcdir
+if [ "x$SRCDIR" = x ]; then
+ SRCDIR=..
+ if [ -f manifest.json -a -f write_makefile.sh]; then
+ SRCDIR=.
+ fi
+fi
+
+# Check srcdir
+if [ ! -f "$SRCDIR"/manifest.json ]; then
+ echo Invalid source directory "'$SRCDIR'": missing manifest.json >&2
+ exit 1
+elif [ ! -f "$SRCDIR"/write_makefile.sh ]; then
+ echo Invalid source directory "'$SRCDIR'": missing write_makefile.sh >&2
+ exit 1
+fi
+
+# TODO: automate target detection
+
+# Standardize and check browser names
+case "${TARGET:-all}" in
+ mozilla) TARGET=mozilla;;
+ chromium) TARGET=chromium;;
+ all) TARGET=all;;
+ *) echo Invalid target "'$1'" >&2; exit 2;;
+esac
+
+# Write record.conf
+echo UPDATE_URL = "$UPDATE_URL" > record.conf
+echo default_target = "$TARGET" >> record.conf
+echo srcdir = "$SRCDIR" >> record.conf
+
+
+# Prepare environment for and run write_makefile.sh (as config.status)
+if [ ! -e Makefile.in ]; then
+ cp "$SRCDIR"/Makefile.in .
+fi
+
+if [ ! -e config.status ]; then
+ cp "$SRCDIR"/write_makefile.sh config.status
+fi
+
+./config.status
diff --git a/write_makefile.sh b/write_makefile.sh
new file mode 100755
index 0000000..118635b
--- /dev/null
+++ b/write_makefile.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# This file is part of Haketilo
+#
+# Copyright (C) 2021, jahoti
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the CC0 1.0 Universal License as published by
+# the Creative Commons Corporation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# CC0 1.0 Universal License for more details.
+
+if [ ! -e record.conf ]; then
+ echo "Record of configuration 'record.conf' does not exist." >&2
+ exit 1
+fi
+
+sed '/^# Configuration goes here$/r record.conf' < Makefile.in > Makefile