Files
modules/doc/Makefile
Xavier Delaruelle 474814cbb1 install: give ability to install without doc built
If no sphinx-build found, warn user but still make it possible to build
and install Modules (without the documentation).

Enables to install Modules from git repository for test purpose on
systems where python-sphinx is not available in regular pakage
repositories.
2018-01-24 08:19:30 +01:00

128 lines
4.0 KiB
Makefile

.PHONY: install uninstall clean
SOURCE_DIR := source
BUILD_DIR := build
SPHINXOPTS := -q
# compatibility version-related files
COMPAT_MAN_DIR := ../compat/doc
# 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
# source version definitions shared across the Makefiles of this project
include ../version.inc
# quit if no sphinx-build found at configure time
ifneq ($(builddoc),y)
$(error No 'sphinx-build' command defined, cannot build documentation)
endif
man: $(BUILD_DIR)/module.1 $(BUILD_DIR)/modulefile.4
ifeq ($(compatversion),y)
man: $(COMPAT_MAN_DIR)/module.1 $(COMPAT_MAN_DIR)/modulefile.4
endif
txt: $(BUILD_DIR)/diff_v3_v4.txt $(BUILD_DIR)/MIGRATING.txt \
$(BUILD_DIR)/INSTALL.txt $(BUILD_DIR)/NEWS.txt
html: $(BUILD_DIR)/module.html $(BUILD_DIR)/modulefile.html \
$(BUILD_DIR)/diff_v3_v4.html $(BUILD_DIR)/MIGRATING.html \
$(BUILD_DIR)/INSTALL.html $(BUILD_DIR)/NEWS.html
all: man txt
# enable HTML pages build only from git repository
ifeq ($(wildcard ../.git),../.git)
all: html
endif
define translate-in-script
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 ../version.inc: ;
# build doc from source if in git repository
ifeq ($(wildcard ../.git),../.git)
$(SOURCE_DIR)/version.py: $(SOURCE_DIR)/version.py.in ../version.inc
$(translate-in-script)
$(BUILD_DIR)/%.html: $(SOURCE_DIR)/%.rst $(SOURCE_DIR)/version.py
$(SPHINXBUILD) $(SPHINXOPTS) -b html "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(BUILD_DIR)/%.txt: $(SOURCE_DIR)/%.rst $(SOURCE_DIR)/version.py
$(SPHINXBUILD) $(SPHINXOPTS) -b text "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(BUILD_DIR)/%.4: $(SOURCE_DIR)/%.rst $(SOURCE_DIR)/version.py
$(SPHINXBUILD) $(SPHINXOPTS) -t pathsubs -b man "$(SOURCE_DIR)" "$(BUILD_DIR)"
$(BUILD_DIR)/%.1.in: $(SOURCE_DIR)/%.rst $(SOURCE_DIR)/version.py
$(SPHINXBUILD) $(SPHINXOPTS) -t pathsubs -b man "$(SOURCE_DIR)" "$(BUILD_DIR)"
mv $(BUILD_DIR)/module.1 $@
endif
$(BUILD_DIR)/module.1: $(BUILD_DIR)/module.1.in
$(translate-in-script)
# compatibility version-related rules
$(COMPAT_MAN_DIR)/module.1 $(COMPAT_MAN_DIR)/modulefile.4:
$(MAKE) -C $(COMPAT_MAN_DIR) $(@F)
install: man txt
mkdir -p $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man4
ifeq ($(docinstall),y)
mkdir -p $(DESTDIR)$(docdir)
cp $(BUILD_DIR)/diff_v3_v4.txt $(DESTDIR)$(docdir)/
cp $(BUILD_DIR)/MIGRATING.txt $(DESTDIR)$(docdir)/
cp $(BUILD_DIR)/INSTALL.txt $(DESTDIR)$(docdir)/
cp $(BUILD_DIR)/NEWS.txt $(DESTDIR)$(docdir)/
cp example.txt $(DESTDIR)$(docdir)/
endif
cp $(BUILD_DIR)/module.1 $(DESTDIR)$(mandir)/man1/
cp $(BUILD_DIR)/modulefile.4 $(DESTDIR)$(mandir)/man4/
ifeq ($(compatversion),y)
cp $(COMPAT_MAN_DIR)/module.1 $(DESTDIR)$(mandir)/man1/module-compat.1
cp $(COMPAT_MAN_DIR)/modulefile.4 $(DESTDIR)$(mandir)/man4/modulefile-compat.4
endif
uninstall:
ifeq ($(docinstall),y)
rm -f $(DESTDIR)$(docdir)/diff_v3_v4.txt
rm -f $(DESTDIR)$(docdir)/MIGRATING.txt
rm -f $(DESTDIR)$(docdir)/INSTALL.txt
rm -f $(DESTDIR)$(docdir)/NEWS.txt
rm -f $(DESTDIR)$(docdir)/example.txt
rmdir $(DESTDIR)$(docdir)
endif
rm -f $(DESTDIR)$(mandir)/man1/module.1
rm -f $(DESTDIR)$(mandir)/man4/modulefile.4
ifeq ($(compatversion),y)
rm -f $(DESTDIR)$(mandir)/man1/module-compat.1
rm -f $(DESTDIR)$(mandir)/man4/modulefile-compat.4
endif
rmdir $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man4
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)/*.1