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 171 172 173 174 175 176 177
|
.PHONY: install uninstall clean
.NOTPARALLEL:
SOURCE_DIR := source
BUILD_DIR := build
SPHINXOPTS := -q
# commands to install files
INSTALL = install
INSTALL_DIR = $(INSTALL) -d -m 755
INSTALL_DATA = $(INSTALL) -m 644
# source definitions shared across the Makefiles of this project
ifneq ($(wildcard ../Makefile.inc),../Makefile.inc)
$(error ../Makefile.inc is missing, please run '../configure')
endif
include ../Makefile.inc
# quit if no sphinx-build found at configure time
ifeq ($(builddoc),n)
$(error No 'sphinx-build' command defined, cannot build documentation)
endif
# setup summary echo rules unless silent mode set
ECHO_DIR_PREFIX = doc/
ifneq ($(findstring s,$(MAKEFLAGS)),s)
ECHO_GEN = @echo ' ' GEN $(ECHO_DIR_PREFIX)$@;
ECHO_GEN2 = @echo ' ' GEN
else
# disable echo rules followed by a string
ECHO_GEN2 = \#
endif
ALL_RST := $(filter-out $(SOURCE_DIR)/latex_index.rst, $(wildcard $(SOURCE_DIR)/*.rst\
$(SOURCE_DIR)/cookbook/*.rst $(SOURCE_DIR)/design/*.rst))
ALL_TXT := $(patsubst $(SOURCE_DIR)/%,$(BUILD_DIR)/%,$(patsubst %.rst,%.txt,$(ALL_RST)))
ALL_HTML := $(patsubst $(SOURCE_DIR)/%,$(BUILD_DIR)/%,$(patsubst %.rst,%.html,$(ALL_RST)))
ALL_MAN := $(BUILD_DIR)/module.1 $(BUILD_DIR)/ml.1 $(BUILD_DIR)/envml.1\
$(BUILD_DIR)/modulefile.5
ALL_TEX := $(BUILD_DIR)/latex/modules.tex
ALL_PDF := $(BUILD_DIR)/latex/modules.pdf
all: man txt
# enable HTML pages build only from git repository
ifeq ($(wildcard ../.git),../.git)
ifneq ($(builddoc),p)
all: html
endif
endif
man: $(ALL_MAN)
ifneq ($(builddoc),p)
txt: $(ALL_TXT)
html: $(ALL_HTML)
latex: $(ALL_TEX)
latexpdf: $(ALL_PDF)
else
# limit txt targets to documents that have been prebuilt
txt: $(BUILD_DIR)/changes.txt $(BUILD_DIR)/MIGRATING.txt \
$(BUILD_DIR)/INSTALL.txt $(BUILD_DIR)/INSTALL-win.txt \
$(BUILD_DIR)/NEWS.txt $(BUILD_DIR)/CONTRIBUTING.txt
endif
../version.inc:
$(MAKE) --no-print-directory -C .. version.inc
# source version definitions shared across the Makefiles of this project
ifeq ($(findstring clean,$(MAKECMDGOALS)),)
-include ../version.inc
endif
define translate-in-script
$(ECHO_GEN)
sed -e 's|@prefix@|$(prefix)|g' \
-e 's|@libexecdir@|$(libexecdir)|g' \
-e 's|@etcdir@|$(etcdir)|g' \
-e 's|@initdir@|$(initdir)|g' \
-e 's|@modulefilesdir@|$(modulefilesdir)|g' \
-e 's|@MODULES_RELEASE@|$(MODULES_RELEASE)|g' \
-e 's|@MODULES_BUILD@|$(MODULES_BUILD)|g' \
-e 's|@MODULES_BUILD_DATE@|$(MODULES_BUILD_DATE)|g' $< > $@
endef
# avoid shared definitions to be rebuilt by make
../Makefile.inc: ;
# rules to build docs from source are defined if docs are not found pre-built
# which happens when working from git repository or from a `git archive` dist
ifneq ($(builddoc),p)
$(SOURCE_DIR)/version.py: $(SOURCE_DIR)/version.py.in ../version.inc
$(translate-in-script)
linkcheck: $(SOURCE_DIR)/version.py
$(SPHINXBUILD) $(SPHINXOPTS) -b linkcheck "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(BUILD_DIR)/%.html: $(SOURCE_DIR)/%.rst $(SOURCE_DIR)/version.py
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$(BUILD_DIR)/*.html
$(SPHINXBUILD) $(SPHINXOPTS) -b html "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(BUILD_DIR)/%.txt: $(SOURCE_DIR)/%.rst $(SOURCE_DIR)/version.py
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$(BUILD_DIR)/*.txt
$(SPHINXBUILD) $(SPHINXOPTS) -b text "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(BUILD_DIR)/module.1.in $(BUILD_DIR)/modulefile.5 $(BUILD_DIR)/ml.1 $(BUILD_DIR)/envml.1: $(ALL_RST) $(SOURCE_DIR)/version.py
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$(BUILD_DIR)/envml.1
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$(BUILD_DIR)/ml.1
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$(BUILD_DIR)/module.1.in
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$(BUILD_DIR)/modulefile.5
$(SPHINXBUILD) $(SPHINXOPTS) -t pathsubs -b man "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(if $(findstring module.1.in,$@),mv $(BUILD_DIR)/module.1 $@)
endif
$(BUILD_DIR)/module.1: $(BUILD_DIR)/module.1.in
$(translate-in-script)
$(BUILD_DIR)/latex/modules.tex: $(SOURCE_DIR)/version.py
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$@
$(SPHINXBUILD) $(SPHINXOPTS) -b latex "$(SOURCE_DIR)" "$(BUILD_DIR)/latex"
$(BUILD_DIR)/latex/modules.pdf: $(BUILD_DIR)/latex/modules.tex
$(ECHO_GEN2) $(ECHO_DIR_PREFIX)$@
$(MAKE) -C "$(BUILD_DIR)/latex" all-pdf
install: man txt
$(INSTALL_DIR) '$(DESTDIR)$(mandir)/man1' '$(DESTDIR)$(mandir)/man5'
ifeq ($(docinstall),y)
$(INSTALL_DIR) '$(DESTDIR)$(docdir)'
$(INSTALL_DATA) $(BUILD_DIR)/changes.txt '$(DESTDIR)$(docdir)/'
$(INSTALL_DATA) $(BUILD_DIR)/MIGRATING.txt '$(DESTDIR)$(docdir)/'
$(INSTALL_DATA) $(BUILD_DIR)/INSTALL.txt '$(DESTDIR)$(docdir)/'
$(INSTALL_DATA) $(BUILD_DIR)/INSTALL-win.txt '$(DESTDIR)$(docdir)/'
$(INSTALL_DATA) $(BUILD_DIR)/NEWS.txt '$(DESTDIR)$(docdir)/'
$(INSTALL_DATA) $(BUILD_DIR)/CONTRIBUTING.txt '$(DESTDIR)$(docdir)/'
endif
$(INSTALL_DATA) $(BUILD_DIR)/module.1 '$(DESTDIR)$(mandir)/man1/'
$(INSTALL_DATA) $(BUILD_DIR)/ml.1 '$(DESTDIR)$(mandir)/man1/'
$(INSTALL_DATA) $(BUILD_DIR)/envml.1 '$(DESTDIR)$(mandir)/man1/'
$(INSTALL_DATA) $(BUILD_DIR)/modulefile.5 '$(DESTDIR)$(mandir)/man5/'
uninstall:
ifeq ($(docinstall),y)
rm -f '$(DESTDIR)$(docdir)/changes.txt'
rm -f '$(DESTDIR)$(docdir)/MIGRATING.txt'
rm -f '$(DESTDIR)$(docdir)/INSTALL.txt'
rm -f '$(DESTDIR)$(docdir)/INSTALL-win.txt'
rm -f '$(DESTDIR)$(docdir)/NEWS.txt'
rm -f '$(DESTDIR)$(docdir)/CONTRIBUTING.txt'
rmdir '$(DESTDIR)$(docdir)'
endif
rm -f '$(DESTDIR)$(mandir)/man1/module.1'
rm -f '$(DESTDIR)$(mandir)/man1/ml.1'
rm -f '$(DESTDIR)$(mandir)/man1/envml.1'
rm -f '$(DESTDIR)$(mandir)/man5/modulefile.5'
rmdir '$(DESTDIR)$(mandir)/man1' '$(DESTDIR)$(mandir)/man5'
rmdir '$(DESTDIR)$(mandir)'
clean:
# do not clean generated docs if not in git repository
ifeq ($(wildcard ../.git),../.git)
ifeq ($(wildcard $(BUILD_DIR)),$(BUILD_DIR))
rm -rf $(BUILD_DIR)
endif
rm -f $(SOURCE_DIR)/version.py
endif
rm -f $(BUILD_DIR)/module.1
# quiet all commands unless verbose mode set
ifeq ($(VERBOSE),1)
V = 1
endif
# let verbose by default the install/clean/test and other specific non-build targets
$(V).SILENT: ../version.inc $(SOURCE_DIR)/version.py $(ALL_HTML) $(ALL_TXT) \
$(BUILD_DIR)/module.1.in $(ALL_MAN) $(ALL_TEX) $(ALL_PDF)
|