aboutsummaryrefslogtreecommitdiff
# This file is part of Haketilo
#
# Copyright (C) 2021 jahoti
# Copyright (C) 2021, 2022 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
VPATH = <<VPATH>>

version = <<VERSION>>
extension_files = background/ common/ content/ html/ licenses/ \
	icons/ copyright default_settings.json manifest.json


metafiles = build.sh configure Makefile.in compute_scripts.awk README.txt \
        re-generate_icons.sh shell_utils.sh upload_amo.sh write_makefile.sh

# Configuration gets included here by write_makefile.sh

# The default target: placed up here
default: $(default_target)

# haketilo-$(version).tar is not actually a phony target but it is too hard to
# track all the files that might require remaking it, so we instead re-run it
# every time.
.PHONY: mozilla install-mozilla chromium install-chromium \
        all all-unpacked default unpacked \
        install install-html install-dvi install-pdf install-ps uninstall \
        install-strip clean distclean mostlyclean maintainer-clean TAGS info \
        dvi html pdf ps dist check installcheck installdirs \
	test-prepare test test-environment haketilo-$(version).tar.gz

# core files
icons/haketilo16.png: icons/haketilo.svg
	cd "$(srcdir)" && ./re-generate_icons.sh
# Use haketilo16.png as an "index" for all the icon PNGs

# browser-specific targets
all: mozilla chromium
mozilla: mozilla-build.zip
chromium: chromium-build.zip

unpacked: $(default_target)-unpacked Makefile
all-unpacked: mozilla-unpacked chromium-unpacked
%-unpacked: $(extension_files) icons/haketilo16.png
	"$(srcdir)/build.sh" $* $(srcdir) $(UPDATE_URL)

install install-strip: $(default_target)-unpacked
	cp -R $(default_target)-unpacked \
		"$(DESTDIR)/{6fe13369-88e9-440f-b837-5012fb3bedec}"

uninstall:
	rm -r "$(DESTDIR)/{6fe13369-88e9-440f-b837-5012fb3bedec}"

%-build.zip: %-unpacked Makefile
	cd $< && zip -q -r ../$@ *

certs/:
	mkdir $@

certs/%.key: | certs/
	openssl genrsa -out $@ 2048

certs/rootCA.pem: certs/rootCA.key
	openssl req -x509 -new -nodes -key $< -days 1024 -out $@ \
		 -subj "/CN=Haketilo Test"

pytest.ini: pytest.ini.in
	sed "s|<<SRCDIR>>|$(srcdir)|" <$< > $@

test-prepare: certs/rootCA.pem certs/site.key $(default_target)-build.zip \
		pytest.ini

check: test
test: test-prepare
	PYTHONPYCACHEPREFIX="$$(pwd)/test__pycache__" MOZ_HEADLESS=whatever \
		"$(PYTHON)" -m pytest

test-environment: certs/rootCA.pem certs/site.key
	unset MOZ_HEADLESS; PYTHONPATH="$$PYTHONPATH:$(srcdir)/test" \
		"$(PYTHON)" -m haketilo_test

test-environment-with-haketilo: certs/rootCA.pem certs/site.key \
		$(default_target)-build.zip
	unset MOZ_HEADLESS; PYTHONPATH="$$PYTHONPATH:$(srcdir)/test" \
		"$(PYTHON)" -m haketilo_test --load-haketilo

# helper targets
clean mostlyclean:
	rm -rf mozilla-unpacked chromium-unpacked haketilo-[1-9]*
	rm -f mozilla-build.zip chromium-build.zip exports_init.js
	rm -rf pytest.ini certs injected_scripts geckodriver.log
	rm -rf certs/ test__pycache__/ .pytest_cache/
	rm -f *.tar.gz

distclean: clean
	rm -f Makefile config.status record.conf

maintainer-clean: distclean
	@echo 'This command is intended for maintainers to use; it'
	@echo 'deletes files that may need special tools to rebuild.'
	rm -f "$(srcdir)"/icons/*.png "$(srcdir)"/FILES.txt

# To make the next rule happy in case we're building from tarball.
$(srcdir)/.git:

$(srcdir)/FILES.txt: $(srcdir)/.git
	if [ -e "$(srcdir)/.git" ]; then                                    \
		git -C "$(srcdir)" ls-files --cached --recurse-submodules | \
			grep -v gitmodules > $@;                            \
		printf 'FILES.txt\n' >> $@;                                 \
	fi

haketilo-$(version).tar.gz: FILES.txt
	HERE="$$(pwd)";                                              \
	cd "$(srcdir)";                                              \
	tar -czf "$$HERE/$@" --transform='s_^_haketilo-$(version)/_' \
		$$(cat FILES.txt)

dist: haketilo-$(version).tar.gz

# Files for constructing the makefile
Makefile: config.status Makefile.in record.conf version
	./config.status

config.status: write_makefile.sh
	cp "$(srcdir)"/write_makefile.sh config.status

# Unused GNU-specified targets
install-html:
install-dvi:
install-pdf:
install-ps:
TAGS:
info:
dvi:
html:
pdf:
ps:
installcheck:
installdirs: