1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
## Makefile to simplify Octave Forge package maintenance tasks
##
## Copyright 2015-2016 Carnë Draug
## Copyright 2015-2016 Oliver Heimlich
## Copyright 2015-2019 Mike Miller
##
## Copying and distribution of this file, with or without modification,
## are permitted in any medium without royalty provided the copyright
## notice and this notice are preserved. This file is offered as-is,
## without any warranty.
MKOCTFILE ?= mkoctfile
OCTAVE ?= octave
SED := sed
SHA256SUM := sha256sum
TAR := tar
MAKEINFO ?= makeinfo
MAKEINFO_HTML_OPTIONS := --no-headers --set-customization-variable 'COPIABLE_LINKS 0' --set-customization-variable 'COPIABLE_ANCHORS 0' --no-split
# work out a possible help generator
ifeq ($(strip $(QHELPGENERATOR)),)
ifneq ($(shell qhelpgenerator-qt5 -v 2>/dev/null),)
QHELPGENERATOR = qhelpgenerator-qt5
else ifneq ($(shell qcollectiongenerator-qt5 -v 2>/dev/null),)
QHELPGENERATOR = qcollectiongenerator-qt5
#else ifneq ($(shell qhelpgenerator -qt5 -v 2>/dev/null),)
# v4 doesnt work
# QHELPGENERATOR = qhelpgenerator -qt5
else ifneq ($(shell qcollectiongenerator -qt5 -v 2>/dev/null),)
QHELPGENERATOR = qcollectiongenerator -qt5
else
QHELPGENERATOR = true
endif
endif
PACKAGE := $(shell $(SED) -n -e 's/^Name: *\(\w\+\)/\1/p' ../DESCRIPTION)
VERSION := $(shell $(SED) -n -e 's/^Version: *\(\w\+\)/\1/p' ../DESCRIPTION)
DATE := $(shell $(SED) -n -e 's/^Date: *\(\w\+\)/\1/p' ../DESCRIPTION)
DEPENDS := $(shell $(SED) -n -e 's/^Depends[^,]*, *\(.*\)/\1/p' ../DESCRIPTION | $(SED) 's/ *([^()]*)//g; s/ *, */ /g')
BASEDIR ?= $(realpath $(CURDIR))
HG := hg
HG_CMD = $(HG) --config alias.$(1)=$(1) --config defaults.$(1)= $(1)
HG_ID := $(shell $(call HG_CMD,identify) --id | sed -e 's/+//' )
HG_TIMESTAMP := $(firstword $(shell $(call HG_CMD,log) --rev $(HG_ID) --template '{date|hgdate}'))
TAR_REPRODUCIBLE_OPTIONS := --sort=name --mtime="@$(HG_TIMESTAMP)" --owner=0 --group=0 --numeric-owner
TAR_OPTIONS := --format=ustar $(TAR_REPRODUCIBLE_OPTIONS)
RELEASE_DIR := $(PACKAGE)-$(VERSION)
RELEASE_TARBALL := $(PACKAGE)-$(VERSION).tar.gz
HTML_DIR := $(PACKAGE)-html
HTML_TARBALL := $(PACKAGE)-html.tar.gz
.PHONY: help dist html release install all check doctest run doc clean maintainer-clean
.PHONY: build-docs cleandocs
help:
@echo "Targets:"
@echo " doc - Build Texinfo package manual"
@echo
@echo " clean - Remove releases, html documentation, and oct files"
@echo " maintainer-clean - Additionally remove all generated files"
doc: build-docs
version.texi: $(BASEDIR)/../.hg/dirstate
@echo Generating $@
@echo "@c autogenerated from Makefile" > $@
@echo "@set VERSION $(VERSION)" >> $@
@echo "@set PACKAGE $(PACKAGE)" >> $@
@echo "@set DATE $(DATE)" >> $@
functions.texi: $(BASEDIR)/../.hg/dirstate
./mkfuncdocs.py --src-dir=../inst/ --src-dir=../src/ ../INDEX | $(SED) 's/@seealso/@xseealso/g' > functions.texi
$(PACKAGE).qhc: $(PACKAGE).texi functions.texi version.texi
# extract html
SOURCE_DATE_EPOCH=$(HG_TIMESTAMP) $(MAKEINFO) --html --css-ref=$(PACKAGE).css $(MAKEINFO_HTML_OPTIONS) $(PACKAGE).texi
ifeq ($(QHELPGENERATOR),true)
$(warning No QHELPGENERATOR ... skipping QT doc build)
else
# try also create qch file if can
./mkqhcp.py $(PACKAGE) && $(QHELPGENERATOR) $(PACKAGE).qhcp -o $(PACKAGE).qhc
$(RM) -f $(PACKAGE).qhcp $(PACKAGE).qhp $(PACKAGE).html
endif
$(PACKAGE).info: $(PACKAGE).texi functions.texi version.texi
$(MAKEINFO) $(PACKAGE).texi
build-docs: $(PACKAGE).qhc $(PACKAGE).info
clean-docs:
$(RM) -f $(PACKAGE).html
$(RM) -f $(PACKAGE).qhc
$(RM) -f $(PACKAGE).qch
$(RM) -f $(PACKAGE).info
$(RM) -f functions.texi
$(RM) -f version.texi
clean: clean-docs
-rm -rf $(RELEASE_DIR) $(RELEASE_TARBALL) $(HTML_TARBALL) $(HTML_DIR)
cd src && $(MAKE) $@
maintainer-clean: clean
|