From 4320edc924a303ce0cab0000a5f16f045a3822df Mon Sep 17 00:00:00 2001 From: jahoti Date: Sun, 10 Oct 2021 00:00:00 +0000 Subject: Add a configuration system --- Makefile | 45 -------------------------------- Makefile.in | 61 +++++++++++++++++++++++++++++++++++++++++++ configure | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ write_makefile.sh | 21 +++++++++++++++ 4 files changed, 159 insertions(+), 45 deletions(-) delete mode 100644 Makefile create mode 100644 Makefile.in create mode 100755 configure create mode 100755 write_makefile.sh diff --git a/Makefile b/Makefile deleted file mode 100644 index fc752e9..0000000 --- a/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# This file is part of Haketilo -# -# Copyright (C) 2021, Wojtek Kosior -# -# 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. - -SHELL = /bin/sh -UPDATE_URL = -default_target = all -srcdir = . - -# The default target: placed up here -default: $(default_target) - -.PHONY: clean mozilla chromium \ - all build_all build_all.zip all_zip \ - default build zip - -all: mozilla chromium -mozilla: build_mozilla build_mozilla.zip -chromium: build_chromium build_chromium.zip - -build: build_$(default_target) -build_all: build_mozilla build_chromium - -zip: build_$(default_target).zip -all_zip: build_mozilla.zip build_chromium.zip -build_all.zip: all_zip - -build_%: - $(srcdir)/build.sh $* $(srcdir) $(UPDATE_URL) - -build_%.zip: build_% - cd $< && zip -q -r ../$@ * - -clean: - rm -rf build_mozilla build_chromium - rm -f build_mozilla.zip build_chromium.zip diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..dcc1863 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,61 @@ +# 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. + +SHELL = /bin/sh + +# Configuration goes here + +# The default target: placed up here +default: $(default_target) + +.PHONY: clean mozilla chromium \ + all build_all build_all.zip all_zip \ + default build zip + +all: mozilla chromium +mozilla: build_mozilla build_mozilla.zip +chromium: build_chromium build_chromium.zip + +build: build_$(default_target) +build_all: build_mozilla build_chromium + +zip: build_$(default_target).zip +all_zip: build_mozilla.zip build_chromium.zip +build_all.zip: all_zip + +build_%: + $(srcdir)/build.sh $* $(srcdir) $(UPDATE_URL) + +build_%.zip: build_% + cd $< && zip -q -r ../$@ * + +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 -- cgit v1.2.3