TOP := $(dir $(lastword $(MAKEFILE_LIST))) ## User options ###################################################### # # You can override these settings in "config.mk" or on the command # line. # # You might also want to set LOAD_PATH. If you do, then it must # contain "-L .". # # If you don't do so, then the default is set in the "Load-Path" # section below. The default assumes that all dependencies are # installed either at "../", or when using package.el # at "ELPA_DIR/-". PREFIX ?= /usr/local sharedir ?= $(PREFIX)/share lispdir ?= $(sharedir)/emacs/site-lisp/magit infodir ?= $(sharedir)/info docdir ?= $(sharedir)/doc/magit statsdir ?= $(TOP)/Documentation/stats CP ?= install -p -m 644 MKDIR ?= install -p -m 755 -d RMDIR ?= rm -rf TAR ?= tar SED ?= sed EMACSBIN ?= emacs BATCH = $(EMACSBIN) -Q --batch $(LOAD_PATH) INSTALL_INFO ?= $(shell command -v ginstall-info || printf install-info) MAKEINFO ?= makeinfo MANUAL_HTML_ARGS ?= --css-ref /assets/page.css BUILD_MAGIT_LIBGIT ?= true ## Files ############################################################# PKG = magit PACKAGES = magit magit-section git-commit TEXIPAGES = $(addsuffix .texi,$(filter-out git-commit,$(PACKAGES))) INFOPAGES = $(addsuffix .info,$(filter-out git-commit,$(PACKAGES))) HTMLFILES = $(addsuffix .html,$(filter-out git-commit,$(PACKAGES))) HTMLDIRS = $(filter-out git-commit,$(PACKAGES)) PDFFILES = $(addsuffix .pdf,$(filter-out git-commit,$(PACKAGES))) EPUBFILES = $(addsuffix .epub,$(filter-out git-commit,$(PACKAGES))) ELS = git-commit.el ELS += magit-transient.el ELS += magit-utils.el ELS += magit-section.el ifeq "$(BUILD_MAGIT_LIBGIT)" "true" ELS += magit-libgit.el endif ELS += magit-git.el ELS += magit-mode.el ELS += magit-margin.el ELS += magit-process.el ELS += magit-autorevert.el ELS += magit-core.el ELS += magit-diff.el ELS += magit-log.el ELS += magit-wip.el ELS += magit-reflog.el ELS += magit-apply.el ELS += magit-repos.el ELS += magit.el ELS += magit-status.el ELS += magit-refs.el ELS += magit-files.el ELS += magit-reset.el ELS += magit-branch.el ELS += magit-merge.el ELS += magit-tag.el ELS += magit-worktree.el ELS += magit-notes.el ELS += magit-obsolete.el ELS += magit-sequence.el ELS += magit-commit.el ELS += magit-remote.el ELS += magit-clone.el ELS += magit-fetch.el ELS += magit-pull.el ELS += magit-push.el ELS += magit-patch.el ELS += magit-bisect.el ELS += magit-stash.el ELS += magit-blame.el ELS += magit-submodule.el ELS += magit-subtree.el ELS += magit-ediff.el ELS += magit-gitignore.el ELS += magit-bundle.el ELS += magit-extras.el ELS += git-rebase.el ELS += magit-imenu.el ELS += magit-bookmark.el ELCS = $(ELS:.el=.elc) ELMS = magit.el $(filter-out $(addsuffix .el,$(PACKAGES)),$(ELS)) ELGS = magit-autoloads.el magit-version.el ## Versions ########################################################## VERSION ?= $(shell \ test -e $(TOP).git && \ git describe --tags --abbrev=0 --always | cut -c2-) DASH_VERSION = 2.18.1 GIT_COMMIT_VERSION = $(VERSION) LIBGIT_VERSION = 0 MAGIT_VERSION = $(VERSION) MAGIT_LIBGIT_VERSION = $(VERSION) MAGIT_SECTION_VERSION = $(VERSION) TRANSIENT_VERSION = 0.3.6 WITH_EDITOR_VERSION = 3.0.4 DASH_MELPA_SNAPSHOT = 20210330 GIT_COMMIT_MELPA_SNAPSHOT = 20210806 LIBGIT_MELPA_SNAPSHOT = 0 MAGIT_MELPA_SNAPSHOT = 20210806 MAGIT_LIBGIT_MELPA_SNAPSHOT = 20210806 MAGIT_SECTION_MELPA_SNAPSHOT = 20210806 TRANSIENT_MELPA_SNAPSHOT = 20210701 WITH_EDITOR_MELPA_SNAPSHOT = 20210524 EMACS_VERSION = 25.1 LIBGIT_EMACS_VERSION = 26.1 EMACSOLD := $(shell $(BATCH) --eval \ "(and (version< emacs-version \"$(EMACS_VERSION)\") (princ \"true\"))") ifeq "$(EMACSOLD)" "true" $(error At least version $(EMACS_VERSION) of Emacs is required) endif ## Load-Path ######################################################### ifndef LOAD_PATH USER_EMACS_DIR = $(HOME)/.emacs.d ifeq "$(wildcard $(USER_EMACS_DIR))" "" XDG_CONFIG_DIR = $(or $(XDG_CONFIG_HOME),$(HOME)/.config) ifneq "$(wildcard $(XDG_CONFIG_DIR)/emacs)" "" USER_EMACS_DIR = $(XDG_CONFIG_DIR)/emacs endif endif ELPA_DIR ?= $(USER_EMACS_DIR)/elpa DASH_DIR ?= $(shell \ find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/dash-[.0-9]*' 2> /dev/null | \ sort | tail -n 1) ifeq "$(DASH_DIR)" "" DASH_DIR = $(TOP)../dash endif LIBGIT_DIR ?= $(shell \ find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/libgit-[.0-9]*' 2> /dev/null | \ sort | tail -n 1) ifeq "$(LIBGIT_DIR)" "" LIBGIT_DIR = $(TOP)../libgit endif TRANSIENT_DIR ?= $(shell \ find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/transient-[.0-9]*' 2> /dev/null | \ sort | tail -n 1) ifeq "$(TRANSIENT_DIR)" "" TRANSIENT_DIR = $(TOP)../transient/lisp endif WITH_EDITOR_DIR ?= $(shell \ find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/with-editor-[.0-9]*' 2> /dev/null | \ sort | tail -n 1) ifeq "$(WITH_EDITOR_DIR)" "" WITH_EDITOR_DIR = $(TOP)../with-editor endif MAGIT_SECTION_DIR ?= $(shell \ find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/magit-section-[.0-9]*' 2> /dev/null | \ sort | tail -n 1) SYSTYPE := $(shell $(EMACSBIN) -Q --batch --eval "(princ system-type)") ifeq ($(SYSTYPE), windows-nt) CYGPATH := $(shell cygpath --version 2>/dev/null) endif LOAD_PATH = -L $(TOP)lisp # When making changes here, then don't forget to adjust "Makefile", # ".github/workflows/test.yml", ".github/ISSUE_TEMPLATE/bug_report.md", # `magit-emacs-Q-command' and the "Installing from the Git Repository" # info node accordingly. Also don't forget to "rgrep \b\b". ifdef CYGPATH LOAD_PATH += -L $(shell cygpath --mixed $(DASH_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(LIBGIT_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(TRANSIENT_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(WITH_EDITOR_DIR)) ifneq "$(MAGIT_SECTION_DIR)" "" LOAD_PATH += -L $(shell cygpath --mixed $(MAGIT_SECTION_DIR)) endif else LOAD_PATH += -L $(DASH_DIR) LOAD_PATH += -L $(LIBGIT_DIR) LOAD_PATH += -L $(TRANSIENT_DIR) LOAD_PATH += -L $(WITH_EDITOR_DIR) ifneq "$(MAGIT_SECTION_DIR)" "" LOAD_PATH += -L $(MAGIT_SECTION_DIR) endif endif endif # ifndef LOAD_PATH ifndef ORG_LOAD_PATH ORG_LOAD_PATH = $(LOAD_PATH) ORG_LOAD_PATH += -L ../../org/lisp ORG_LOAD_PATH += -L ../../org-contrib/lisp ORG_LOAD_PATH += -L ../../ox-texinfo+ endif ## Publish ########################################################### PUBLISH_TARGETS ?= html html-dir pdf epub DOCBOOK_XSL ?= /usr/share/xml/docbook/stylesheet/docbook-xsl/epub/docbook.xsl EPUBTRASH = epub.xml META-INF OEBPS