diff options
author | jahoti <jahoti@tilde.team> | 2021-10-10 00:00:00 +0000 |
---|---|---|
committer | jahoti <jahoti@tilde.team> | 2021-10-10 00:00:00 +0000 |
commit | 4320edc924a303ce0cab0000a5f16f045a3822df (patch) | |
tree | 29928f4d71892654d0791c06bd79696e434f566f | |
parent | 5285b0923cd601e631bf9600f8b3f005c15287c4 (diff) | |
download | browser-extension-4320edc924a303ce0cab0000a5f16f045a3822df.tar.gz browser-extension-4320edc924a303ce0cab0000a5f16f045a3822df.zip |
Add a configuration system
-rw-r--r-- | Makefile.in (renamed from Makefile) | 24 | ||||
-rwxr-xr-x | configure | 77 | ||||
-rwxr-xr-x | write_makefile.sh | 21 |
3 files changed, 118 insertions, 4 deletions
@@ -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 |