| 1 | ## Copyright (C) 2006, 2008, 2010, 2012, 2014, 2016-2023 Free Software Foundation, Inc. |
| 2 | ## |
| 3 | ## This file is part of EMMS. |
| 4 | ## |
| 5 | ## EMMS is free software; you can redistribute it and/or modify |
| 6 | ## it under the terms of the GNU General Public License as published by |
| 7 | ## the Free Software Foundation; either version 3, or (at your option) |
| 8 | ## any later version. |
| 9 | ## |
| 10 | ## EMMS is distributed in the hope that it will be useful, |
| 11 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | ## GNU General Public License for more details. |
| 14 | ## |
| 15 | ## You should have received a copy of the GNU General Public License |
| 16 | ## along with EMMS; if not, write to the Free Software Foundation, |
| 17 | ## Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. |
| 18 | |
| 19 | ## Release testing |
| 20 | ## |
| 21 | ## As a policy, each release of Emms should be tested to compile and |
| 22 | ## run well on the two latest Emacs releases. |
| 23 | |
| 24 | |
| 25 | ## Code: |
| 26 | GZIP=gzip |
| 27 | MAN1PAGES=emms-print-metadata.1 |
| 28 | DOCDIR=doc/ |
| 29 | SRCDIR=src |
| 30 | SITEFLAG=--no-site-file |
| 31 | EMACS=emacs |
| 32 | |
| 33 | ALLSOURCE=$(wildcard *.el) |
| 34 | SOURCE=$(filter-out $(SPECIAL),$(ALLSOURCE)) |
| 35 | TARGET=$(patsubst %.el,%.elc,$(SOURCE)) |
| 36 | ALLCOMPILED=$(wildcard *.elc) |
| 37 | |
| 38 | DESTDIR= |
| 39 | PREFIX=$(DESTDIR)/usr/local |
| 40 | INFODIR=$(PREFIX)/info |
| 41 | MAN1DIR=$(PREFIX)/share/man/man1 |
| 42 | BINDIR=$(PREFIX)/bin |
| 43 | SITELISP=$(PREFIX)/share/emacs/site-lisp/emms |
| 44 | |
| 45 | # testing against previous versions |
| 46 | RELEASE_BIN=$(EMACS) |
| 47 | PREV_RELEASE_BIN=$(EMACS) |
| 48 | |
| 49 | GINSTALLINFO = /usr/bin/ginstall-info --info-dir=$(INFODIR) |
| 50 | # For systems without ginstall-info |
| 51 | INSTALLINFO = /usr/bin/install-info --info-dir=$(INFODIR) |
| 52 | CHANGELOG_CMD = git log --pretty=medium --no-merges |
| 53 | |
| 54 | # The currently released version of EMMS (no longer in use) |
| 55 | VERSION=100.00 |
| 56 | |
| 57 | .PHONY: all install docs clean |
| 58 | .PRECIOUS: %.elc |
| 59 | all: show_version emms-auto.el $(TARGET) docs |
| 60 | |
| 61 | emms-auto.el: emms-auto.in $(SOURCE) |
| 62 | cp emms-auto.in emms-auto.el |
| 63 | -rm -f emms-auto.elc |
| 64 | @$(EMACS) -q $(SITEFLAG) -batch \ |
| 65 | -l emms-maint.el \ |
| 66 | -l emms-auto.el \ |
| 67 | -f emms-generate-autoloads \ |
| 68 | $(shell pwd)/emms-auto.el . |
| 69 | |
| 70 | %.elc: %.el |
| 71 | @$(EMACS) -q $(SITEFLAG) -batch \ |
| 72 | -l emms-maint.el \ |
| 73 | -f batch-byte-compile $< |
| 74 | |
| 75 | docs: |
| 76 | $(MAKE) -C $(DOCDIR) |
| 77 | |
| 78 | .PHONY: show_version |
| 79 | show_version: |
| 80 | @$(EMACS) $(SITEFLAG) -batch --eval='(message "\n%s" (emacs-version))' |
| 81 | |
| 82 | .PHONY: |
| 83 | test_releases: |
| 84 | ($(MAKE) EMACS=$(RELEASE_BIN); $(MAKE) clean) |
| 85 | ($(MAKE) EMACS=$(PREV_RELEASE_BIN); $(MAKE) clean) |
| 86 | |
| 87 | emms-print-metadata: $(SRCDIR)/emms-print-metadata.cpp |
| 88 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $(SRCDIR)/$@ $< `taglib-config --cflags --libs` |
| 89 | |
| 90 | install: |
| 91 | test -d $(SITELISP) || mkdir -p $(SITELISP) |
| 92 | test -d $(INFODIR) || install -d $(INFODIR) |
| 93 | install -m 644 $(ALLSOURCE) $(SITELISP) |
| 94 | install -m 644 $(ALLCOMPILED) $(SITELISP) |
| 95 | install -m 0644 $(DOCDIR)emms.info $(INFODIR)/emms.info |
| 96 | for p in $(MAN1PAGES) ; do $(GZIP) -9c $$p > $(MAN1DIR)/$$p.gz ; done |
| 97 | if [ -x /usr/bin/ginstall-info ]; then \ |
| 98 | $(GINSTALLINFO) $(DOCDIR)emms.info; \ |
| 99 | else \ |
| 100 | $(INSTALLINFO) $(DOCDIR)emms.info; \ |
| 101 | fi |
| 102 | if [ -x $(SRCDIR)/emms-print-metadata ]; then \ |
| 103 | echo "emms-print-metadata found, installing"; \ |
| 104 | install -m 755 $(SRCDIR)/emms-print-metadata $(BINDIR)/emms-print-metadata; \ |
| 105 | else \ |
| 106 | echo "skipping emms-print-metadata install"; \ |
| 107 | fi |
| 108 | |
| 109 | remove-info: |
| 110 | if [ -x /usr/bin/ginstall-info ]; then \ |
| 111 | $(GINSTALLINFO) --remove $(DOCDIR)emms.info; \ |
| 112 | else \ |
| 113 | $(INSTALLINFO) --remove $(DOCDIR)emms.info; \ |
| 114 | fi |
| 115 | |
| 116 | ChangeLog: |
| 117 | $(CHANGELOG_CMD) > $@ |
| 118 | |
| 119 | clean: |
| 120 | -rm -f *~ $(DOCDIR)emms.info $(DOCDIR)emms.html $(SRCDIR)/emms-print-metadata |
| 121 | -rm -f *~ *.elc emms-auto.el |
| 122 | |
| 123 | dist: clean emms-auto.el |
| 124 | git archive --format=tar --prefix=emms-$(VERSION)/ HEAD | \ |
| 125 | (cd .. && tar xf -) |
| 126 | rm -f ../emms-$(VERSION)/.gitignore |
| 127 | cp emms-auto.el ../emms-$(VERSION) |
| 128 | $(CHANGELOG_CMD) > ../emms-$(VERSION)/ChangeLog |
| 129 | |
| 130 | release: dist |
| 131 | (cd .. && tar -czf emms-$(VERSION).tar.gz \ |
| 132 | emms-$(VERSION) ; \ |
| 133 | gpg --detach emms-$(VERSION).tar.gz) |
| 134 | |
| 135 | upload: |
| 136 | (cd .. && echo "version: 1.2\ndirectory: emms\nfilename: "emms-$(VERSION).tar.gz"\ncomment: new version of Emms" | gpg --clearsign > emms-$(VERSION).tar.gz.directive.asc && echo open ftp://ftp-upload.gnu.org > upload.lftp ; echo cd /incoming/ftp >> upload.lftp ; echo mput emms-$(VERSION).tar.gz* >> upload.lftp ; echo close >> upload.lftp ; lftp -f upload.lftp ; rm -f upload.lftp) |