summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile72
1 files changed, 45 insertions, 27 deletions
diff --git a/Makefile b/Makefile
index 4ebde1e..8ddd6f3 100644
--- a/Makefile
+++ b/Makefile
@@ -526,23 +526,27 @@ LIB_OBJS = layout.o flashrom.o udelay.o programmer.o helpers.o
CLI_OBJS = cli_classic.o cli_output.o cli_common.o print.o
-# Set the flashrom version string from the highest revision number of the checked out flashrom files.
+# Set the flashrom version string from the repository metadata (cf. util/getrevision.sh).
# Note to packagers: Any tree exported with "make export" or "make tarball"
-# will not require subversion. The downloadable snapshots are already exported.
-SVNVERSION := $(shell ./util/getrevision.sh -u 2>/dev/null )
-
-RELEASE := 0.9.9
-VERSION := $(RELEASE)-$(SVNVERSION)
-RELEASENAME ?= $(VERSION)
+# will not require git. The downloadable snapshots are already exported.
+VERSION := $(shell ./util/getrevision.sh --revision)
+# VERSION equals "offline" if online access is required but the respective git config variable is not set yet.
+ifeq ($(VERSION),offline)
+ $(error Aborting)
+endif
+SCMDEF := -D'FLASHROM_VERSION="$(VERSION)"'
-SVNDEF := -D'FLASHROM_VERSION="$(VERSION)"'
+# No spaces in release names unless set explicitly
+RELEASENAME ?= $(shell echo "$(VERSION)" | sed -e 's/ /_/')
-# Inform user if there is no meaningful version string. If there is version information from a VCS print
+# Inform user about the version string used. If there is no version information from a VCS then print
# something anyway because $(info...) will print a line break in any case which would look suspicious.
# The && between the echos is a workaround for old versions of GNU make that issue the error "unterminated
# variable reference" if a semicolon is used instead.
-$(info $(shell ./util/getrevision.sh -c 2>/dev/null || echo "Files don't seem to be under version control." && \
- echo "Replacing all version templates with $(VERSION)." ))
+# Also, if a VCS is found then try to install hooks.
+$(info $(shell ./util/getrevision.sh -c 2>/dev/null && ./util/git-hooks/install.sh || \
+ echo "Files don't seem to be under version control." && \
+ echo "Replacing all version templates with $(VERSION)."))
###############################################################################
# Default settings of CONFIG_* variables.
@@ -1024,7 +1028,7 @@ libflashrom.a: $(LIBFLASHROM_OBJS)
TAROPTIONS = $(shell LC_ALL=C tar --version|grep -q GNU && echo "--owner=root --group=root")
%.o: %.c .features
- $(CC) -MMD $(CFLAGS) $(CPPFLAGS) $(FLASHROM_CFLAGS) $(FEATURE_CFLAGS) $(SVNDEF) -o $@ -c $<
+ $(CC) -MMD $(CFLAGS) $(CPPFLAGS) $(FLASHROM_CFLAGS) $(FEATURE_CFLAGS) $(SCMDEF) -o $@ -c $<
# Make sure to add all names of generated binaries here.
# This includes all frontends and libflashrom.
@@ -1347,9 +1351,10 @@ endif
$(PROGRAM).8.html: $(PROGRAM).8
@groff -mandoc -Thtml $< >$@
+MAN_DATE := $(shell ./util/getrevision.sh -d $(PROGRAM).8.tmpl 2>/dev/null)
$(PROGRAM).8: $(PROGRAM).8.tmpl
@# Add the man page change date and version to the man page
- @sed -e 's#.TH FLASHROM 8 ".*".*#.TH FLASHROM 8 "$(shell ./util/getrevision.sh -d $(PROGRAM).8.tmpl 2>/dev/null)" "$(VERSION)"#' <$< >$@
+ @sed -e 's#.TH FLASHROM 8 .*#.TH FLASHROM 8 "$(MAN_DATE)" "$(VERSION)" "$(MAN_DATE)"#' <$< >$@
install: $(PROGRAM)$(EXEC_SUFFIX) $(PROGRAM).8
mkdir -p $(DESTDIR)$(PREFIX)/sbin
@@ -1357,25 +1362,38 @@ install: $(PROGRAM)$(EXEC_SUFFIX) $(PROGRAM).8
$(INSTALL) -m 0755 $(PROGRAM)$(EXEC_SUFFIX) $(DESTDIR)$(PREFIX)/sbin
$(INSTALL) -m 0644 $(PROGRAM).8 $(DESTDIR)$(MANDIR)/man8
-export: $(PROGRAM).8
- @rm -rf $(EXPORTDIR)/flashrom-$(RELEASENAME)
- @svn export -r BASE . $(EXPORTDIR)/flashrom-$(RELEASENAME)
- @sed "s/^SVNVERSION.*/SVNVERSION := $(SVNVERSION)/" Makefile >$(EXPORTDIR)/flashrom-$(RELEASENAME)/Makefile
- @cp $(PROGRAM).8 "$(EXPORTDIR)/flashrom-$(RELEASENAME)/$(PROGRAM).8"
- @svn log >$(EXPORTDIR)/flashrom-$(RELEASENAME)/ChangeLog
- @echo Exported $(EXPORTDIR)/flashrom-$(RELEASENAME)/
-
-tarball: export
- @tar cjf $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2 -C $(EXPORTDIR)/ $(TAROPTIONS) flashrom-$(RELEASENAME)/
+_export: $(PROGRAM).8
+ @rm -rf "$(EXPORTDIR)/flashrom-$(RELEASENAME)"
+ @mkdir -p "$(EXPORTDIR)/flashrom-$(RELEASENAME)"
+ @git archive HEAD | tar -x -C "$(EXPORTDIR)/flashrom-$(RELEASENAME)"
+ @sed -e 's/^VERSION :=.*/VERSION := $(VERSION)/' \
+ -e 's/^MAN_DATE :=.*/MAN_DATE := $(MAN_DATE)/' \
+ -e 's#./util/getrevision.sh -c#false#' \
+ Makefile >"$(EXPORTDIR)/flashrom-$(RELEASENAME)/Makefile"
+# Restore modification date of all tracked files not marked 'export-ignore' in .gitattributes.
+# sed is required to filter out file names having the attribute set.
+ @git ls-tree -r -z -t --full-name --name-only HEAD | \
+ git check-attr -z --stdin export-ignore | \
+ sed -zne 'x;n;n;s/^set$$//;t;x;p' | \
+ xargs -0 sh -c 'for f; do \
+ touch -d $$(git log --pretty=format:%cI -1 HEAD -- "$$f") \
+ "$(EXPORTDIR)/flashrom-$(RELEASENAME)/$$f"; \
+ done'
+
+export: _export
+ @echo "Exported $(EXPORTDIR)/flashrom-$(RELEASENAME)/"
+
+tarball: _export
+ @tar -cz --format=ustar -f $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.gz -C $(EXPORTDIR)/ \
+ $(TAROPTIONS) flashrom-$(RELEASENAME)/
+# Delete the exported directory again because it is most likely what's expected by the user.
@rm -rf $(EXPORTDIR)/flashrom-$(RELEASENAME)
- @echo Created $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2
+ @echo Created $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.gz
-djgpp-dos: clean
- make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip
libpayload: clean
make CC="CC=i386-elf-gcc lpgcc" AR=i386-elf-ar RANLIB=i386-elf-ranlib
-.PHONY: all install clean distclean compiler hwlibs features export tarball djgpp-dos featuresavailable libpayload
+.PHONY: all install clean distclean compiler hwlibs features _export export tarball featuresavailable libpayload
# Disable implicit suffixes and built-in rules (for performance and profit)
.SUFFIXES:
OpenPOWER on IntegriCloud