86 lines
1.6 KiB
Makefile
86 lines
1.6 KiB
Makefile
#
|
|
# Maintenance Makefile
|
|
#
|
|
|
|
# Enforce bash with fatal errors.
|
|
SHELL := /bin/bash -eo pipefail
|
|
|
|
# Keep intermediates around on failures for better caching.
|
|
.SECONDARY:
|
|
|
|
# Default build and source directories.
|
|
BUILDDIR ?= ./build
|
|
SRCDIR ?= .
|
|
|
|
#
|
|
# Target: help
|
|
#
|
|
|
|
.PHONY: help
|
|
help:
|
|
@# 80-width marker:
|
|
@# 01234567012345670123456701234567012345670123456701234567012345670123456701234567
|
|
@echo "make [TARGETS...]"
|
|
@echo
|
|
@echo "The following targets are provided by this maintenance makefile:"
|
|
@echo
|
|
@echo " help: Print this usage information"
|
|
@echo
|
|
@echo " publish-github: Publish a release to GitHub"
|
|
|
|
#
|
|
# Target: BUILDDIR
|
|
#
|
|
|
|
$(BUILDDIR)/:
|
|
mkdir -p "$@"
|
|
|
|
$(BUILDDIR)/%/:
|
|
mkdir -p "$@"
|
|
|
|
#
|
|
# Target: FORCE
|
|
#
|
|
# Used as alternative to `.PHONY` if the target is not fixed.
|
|
#
|
|
|
|
.PHONY: FORCE
|
|
FORCE:
|
|
|
|
#
|
|
# Target: publish-*
|
|
#
|
|
|
|
PUBLISH_REPO ?= r-efi/r-efi
|
|
PUBLISH_VERSION ?=
|
|
|
|
define PUBLISH_RELNOTES_PY
|
|
with open('NEWS.md', 'r') as f:
|
|
notes = f.read().split("\n## CHANGES WITH ")[1:]
|
|
notes = dict(map(lambda v: (v[:v.find(":")], v), notes))
|
|
notes = notes["$(PUBLISH_VERSION)"].strip()
|
|
print(" # r-efi - UEFI Reference Specification Protocol Constants and Definitions\n")
|
|
print(" ## CHANGES WITH", notes)
|
|
endef
|
|
|
|
export PUBLISH_RELNOTES_PY
|
|
export PUBLISH_REPO
|
|
export PUBLISH_VERSION
|
|
|
|
.PHONY: publish-github
|
|
publish-github:
|
|
test ! -z "$${PUBLISH_REPO}"
|
|
test ! -z "$${PUBLISH_VERSION}"
|
|
python \
|
|
- \
|
|
<<<"$${PUBLISH_RELNOTES_PY}" \
|
|
| gh \
|
|
release \
|
|
--repo "$${PUBLISH_REPO}" \
|
|
create \
|
|
--verify-tag \
|
|
--title \
|
|
"r-efi-$${PUBLISH_VERSION}" \
|
|
--notes-file - \
|
|
"v$${PUBLISH_VERSION}"
|