emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
blob 072106237ccedc8e1ad7eeb9cb4b201297377730 5078 bytes (raw)
name: mk/targets.mk 	 # note: path name is non-authoritative(*)

  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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
 
.EXPORT_ALL_VARIABLES:
.NOTPARALLEL: .PHONY
# Additional distribution files
DISTFILES_extra=  Makefile etc

LISPDIRS      = lisp
OTHERDIRS     = doc etc
CLEANDIRS     = testing mk
SUBDIRS       = $(OTHERDIRS) $(LISPDIRS)
INSTSUB       = $(SUBDIRS:%=install-%)
ORG_MAKE_DOC ?= info html pdf

ifneq ($(wildcard .git),)
  # Use the org.el header.
  ORGVERSION := $(patsubst %-dev,%,$(shell $(BATCH) --eval "(require 'lisp-mnt)" \
    --visit lisp/org.el --eval '(princ (lm-header "version"))'))
  GITVERSION := $(shell git describe --match release\* --abbrev=6 HEAD 2>/dev/null || echo  "release_N/A-N/A-$(shell git describe --match release\* --abbrev=6 --always HEAD)")
  GITSTATUS  := $(shell git status -uno --porcelain)
else
 -include mk/version.mk
  GITVERSION ?= N/A
  ORGVERSION ?= N/A
endif
DATE          := $(shell date +%Y-%m-%d)
YEAR          := $(shell date +%Y)
ifneq ($(GITSTATUS),)
  GITVERSION := $(GITVERSION:.dirty=).dirty
endif

.PHONY:	all oldorg update update2 up0 up1 up2 uppkg single $(SUBDIRS) \
	check test install $(INSTSUB) \
	info html pdf card refcard doc docs \
	autoloads cleanall clean $(CLEANDIRS:%=clean%) \
	clean-install cleanelc cleandirs \
	cleanlisp cleandoc cleandocs cleantest cleanpkg \
	compile compile-dirty uncompiled \
	config config-test config-exe config-all config-eol config-version \
	vanilla repro

CONF_BASE = EMACS DESTDIR ORGCM ORG_MAKE_DOC EPACKAGES
CONF_DEST = lispdir infodir datadir testdir pkgdir
CONF_TEST = BTEST_PRE BTEST_POST BTEST_OB_LANGUAGES BTEST_EXTRA BTEST_RE
CONF_EXEC = CP MKDIR RM RMR FIND CHMOD SUDO PDFTEX TEXI2PDF TEXI2HTML MAKEINFO INSTALL_INFO
CONF_CALL = BATCH BATCHL ELC ELCDIR NOBATCH INSTALL_PACKAGES BTEST MAKE_LOCAL_MK MAKE_ORG_INSTALL MAKE_ORG_VERSION
config-eol:: EOL = \#
config-eol:: config-all
config config-all::
	$(info )
	$(info ========= Emacs executable and Installation paths)
	$(foreach var,$(CONF_BASE),$(info $(var)	= $($(var))$(EOL)))
	$(foreach var,$(CONF_DEST),$(info $(var)	= $(DESTDIR)$($(var))$(EOL)))
config-test config-all::
	$(info )
	$(info ========= Test configuration)
	$(foreach var,$(CONF_TEST),$(info $(var)	= $($(var))$(EOL)))
config-exe config-all::
	$(info )
	$(info ========= Executables used by make)
	$(foreach var,$(CONF_EXEC),$(info $(var)	= $($(var))$(EOL)))
config-cmd config-all::
	$(info )
	$(info ========= Commands used by make)
	$(foreach var,$(CONF_CALL),$(info $(var)	= $($(var))$(EOL)))
config config-test config-exe config-all config-version::
	$(info ========= Org version)
	$(info make:  Org mode version $(ORGVERSION) ($(GITVERSION) => $(lispdir)))
	@echo ""

oldorg:	compile info	# what the old makefile did when no target was specified
uncompiled:	cleanlisp autoloads	# for developing
refcard:	card
update update2::	up0 all

single:	ORGCM=single
single:	compile

.PRECIOUS:	local.mk
local.mk:
	$(info ======================================================)
	$(info = Invoke "make help" for a synopsis of make targets. =)
	$(info = Created a default local.mk template.               =)
	$(info = Setting "oldorg" as the default target.            =)
	$(info = Please adapt local.mk to your local setup!         =)
	$(info ======================================================)
	-@$(MAKE_LOCAL_MK)

all compile::
	$(foreach dir, doc lisp, $(MAKE) -C $(dir) clean;)
compile compile-dirty:: uppkg
	$(MAKE) -C lisp $@
all clean-install::
	$(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) $@;)

vanilla:
	-@$(NOBATCH) &

check test::	uppkg compile
check test test-dirty::
	-$(MKDIR) $(testdir)
	TMPDIR=$(testdir) $(BTEST)
ifeq ($(TEST_NO_AUTOCLEAN),) # define this variable to leave $(testdir) around for inspection
	$(MAKE) cleantest
endif

uppkg::
	$(info ========= Installing required third-party packages)
	@$(MKDIR) -p $(pkgdir)
	@$(FIND) $(pkgdir) \(  -name \*.elc \) -exec $(RM) {} +
	-@$(INSTALL_PACKAGES)

up0 up1 up2::
	git checkout $(GIT_BRANCH)
	git remote update
	git pull
up1 up2::	all
	$(MAKE) test-dirty
up2 update2::
	$(SUDO) $(MAKE) install

install:	$(INSTSUB)

install-info:	install-doc

doc docs:	$(ORG_MAKE_DOC)

info html pdf card:
	$(MAKE) -C doc $@

$(INSTSUB):
	$(MAKE) -C $(@:install-%=%) install

autoloads: lisp
	$(MAKE) -C $< $@

repro: cleanall autoloads
	-@$(REPRO) &

cleandirs:
	$(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) cleanall;)

clean:	cleanlisp cleandoc

cleanall: cleandirs cleantest cleanpkg
	-$(FIND) . \( -name \*~ -o -name \*# -o -name .#\* \) -exec $(RM) {} +
	-$(FIND) $(CLEANDIRS) \( -name \*~ -o -name \*.elc \) -exec $(RM) {} +

$(CLEANDIRS:%=clean%):
	-$(FIND) $(@:clean%=%) \( -name \*~ -o -name \*.elc \) -exec $(RM) {} +

cleanelc:
	$(MAKE) -C lisp $@

cleanlisp cleandoc:
	$(MAKE) -C $(@:clean%=%) clean

cleandocs:
	$(MAKE) -C doc clean
	-$(FIND) doc -name \*~ -exec $(RM) {} \;

cleantest:
# git-annex creates non-writable directories so that the files within
# them can't be removed; if rm fails, try to recover by making all
# directories writable
	-$(RMR) $(testdir) || { \
	  $(FIND) $(testdir) -type d -exec $(CHMOD) u+w {} + && \
	  $(RMR) $(testdir) ; \
	}

cleanpkg:
	-$(RMR) $(pkgdir)

debug log:

solving 072106237 ...
found 072106237 in https://list.orgmode.org/orgmode/87jzytbbg2.fsf@localhost/ ||
	https://list.orgmode.org/orgmode/87wn2ujk27.fsf@localhost/
found 18faa02f5 in https://list.orgmode.org/orgmode/87jzytbbg2.fsf@localhost/ ||
	https://list.orgmode.org/orgmode/87wn2ujk27.fsf@localhost/
found ab8b830bb in https://list.orgmode.org/orgmode/87jzytbbg2.fsf@localhost/ ||
	https://list.orgmode.org/orgmode/87wn2ujk27.fsf@localhost/ ||
	https://list.orgmode.org/orgmode/87r0t3gahd.fsf@localhost/
found 0bd293d68 in https://git.savannah.gnu.org/cgit/emacs/org-mode.git
preparing index
index prepared:
100644 0bd293d68088395da585bbac34362493388331db	mk/targets.mk

applying [1/3] https://list.orgmode.org/orgmode/87jzytbbg2.fsf@localhost/
diff --git a/mk/targets.mk b/mk/targets.mk
index 0bd293d68..ab8b830bb 100644

Checking patch mk/targets.mk...
Applied patch mk/targets.mk cleanly.

skipping https://list.orgmode.org/orgmode/87wn2ujk27.fsf@localhost/ for ab8b830bb
skipping https://list.orgmode.org/orgmode/87r0t3gahd.fsf@localhost/ for ab8b830bb
index at:
100644 ab8b830bbe5c76168026e6ca555c3a27c80a4402	mk/targets.mk

applying [2/3] https://list.orgmode.org/orgmode/87jzytbbg2.fsf@localhost/
diff --git a/mk/targets.mk b/mk/targets.mk
index ab8b830bb..18faa02f5 100644

Checking patch mk/targets.mk...
Applied patch mk/targets.mk cleanly.

skipping https://list.orgmode.org/orgmode/87wn2ujk27.fsf@localhost/ for 18faa02f5
index at:
100644 18faa02f5fb695cea149c203c17b460768730b0f	mk/targets.mk

applying [3/3] https://list.orgmode.org/orgmode/87jzytbbg2.fsf@localhost/
diff --git a/mk/targets.mk b/mk/targets.mk
index 18faa02f5..072106237 100644

Checking patch mk/targets.mk...
Applied patch mk/targets.mk cleanly.

skipping https://list.orgmode.org/orgmode/87wn2ujk27.fsf@localhost/ for 072106237
index at:
100644 072106237ccedc8e1ad7eeb9cb4b201297377730	mk/targets.mk

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).