Blame Makefile

Packit 6a0d22
.PHONY: doc pkgdoc initdir install install-testsiteconfig \
Packit Service e7ed00
	install-testsiteconfig-1 install-testmodulerc install-testmodulerc-1 \
Packit Service e7ed00
	install-testinitrc install-testetcrc install-testmodspath \
Packit Service e7ed00
	install-testmodspath-empty uninstall-testconfig uninstall dist dist-tar \
Packit Service e7ed00
	dist-gzip dist-bzip2 dist-win srpm rpm clean distclean test-deps test \
Packit Service e7ed00
	testinstall testsyntax
Packit Service e7ed00
Packit Service e7ed00
# download command and its options
Packit Service e7ed00
WGET := wget --retry-connrefused --waitretry=20 --timeout=20 --tries=3
Packit 6a0d22
Packit 6a0d22
# definitions for code coverage
Packit 6a0d22
NAGELFAR_DLSRC1 := http://downloads.sourceforge.net/nagelfar/
Packit Service e7ed00
NAGELFAR_RELEASE := nagelfar131
Packit 6a0d22
NAGELFAR_DIST := $(NAGELFAR_RELEASE).tar.gz
Packit Service e7ed00
NAGELFAR_DISTSUM := fbf79ab1a1d85349600f2502a3353bf4
Packit 6a0d22
NAGELFAR := $(NAGELFAR_RELEASE)/nagelfar.tcl
Packit Service e7ed00
Packit Service e7ed00
# definition for old Tcl interpreter for coverage testing
Packit Service e7ed00
TCL_DLSRC := http://downloads.sourceforge.net/tcl/
Packit Service e7ed00
TCL_RELEASE83 := tcl8.3.5
Packit Service e7ed00
TCL_DIST83 := $(TCL_RELEASE83)-src.tar.gz
Packit Service e7ed00
TCL_DISTSUM83 := 5cb79f8b90cf1322cb1286b9fe67f7a2
Packit Service e7ed00
TCLSH83 := $(TCL_RELEASE83)/unix/tclsh
Packit Service e7ed00
Packit Service e7ed00
# specific modulecmd script for test
Packit Service e7ed00
MODULECMDTEST := modulecmd-test.tcl
Packit Service e7ed00
Packit Service e7ed00
# definitions for enhanced diff tool (to review test results)
Packit Service e7ed00
ICDIFF_DLSRC := https://raw.githubusercontent.com/jeffkaufman/icdiff/release-1.9.5/
Packit Service e7ed00
ICDIFF_CHECKSUM := fd5825ede4c2853ba1747a8931b077c1
Packit 6a0d22
Packit 6a0d22
# compatibility version-related files
Packit 6a0d22
COMPAT_DIR := compat
Packit 6a0d22
Packit 6a0d22
# source definitions shared across the Makefiles of this project
Packit 6a0d22
ifneq ($(wildcard Makefile.inc),Makefile.inc)
Packit 6a0d22
  $(error Makefile.inc is missing, please run './configure')
Packit 6a0d22
endif
Packit 6a0d22
include Makefile.inc
Packit 6a0d22
Packit Service e7ed00
INSTALL_PREREQ := modulecmd.tcl ChangeLog README script/add.modules \
Packit Service e7ed00
	script/createmodule.py script/modulecmd
Packit Service e7ed00
TEST_PREREQ := $(MODULECMDTEST)
Packit Service e7ed00
Packit 6a0d22
ifeq ($(compatversion),y)
Packit Service e7ed00
INSTALL_PREREQ += $(COMPAT_DIR)/modulecmd$(EXEEXT) $(COMPAT_DIR)/ChangeLog
Packit Service e7ed00
ifeq ($(wildcard $(COMPAT_DIR)),$(COMPAT_DIR))
Packit Service e7ed00
TEST_PREREQ += $(COMPAT_DIR)/modulecmd
Packit Service e7ed00
endif
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(libtclenvmodules),y)
Packit Service e7ed00
INSTALL_PREREQ += lib/libtclenvmodules$(SHLIB_SUFFIX)
Packit Service e7ed00
TEST_PREREQ += lib/libtclenvmodules$(SHLIB_SUFFIX)
Packit Service e7ed00
ifeq ($(COVERAGE),y)
Packit Service e7ed00
TEST_PREREQ += lib/libtestutil-closedir$(SHLIB_SUFFIX)
Packit Service e7ed00
endif
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(COVERAGE),y)
Packit Service e7ed00
TEST_PREREQ += $(NAGELFAR)
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
# install old Tcl interpreters to test coverage
Packit Service e7ed00
ifeq ($(COVERAGE_OLDTCL),y)
Packit Service e7ed00
TEST_PREREQ += tclsh83
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
# define rule prereq when target need to be rebuilt when git repository change
Packit Service e7ed00
ifeq ($(wildcard .git),.git)
Packit Service e7ed00
GIT_REFRESH_PREREQ := .git/index
Packit 6a0d22
else
Packit Service e7ed00
GIT_REFRESH_PREREQ := 
Packit 6a0d22
endif
Packit Service e7ed00
Packit Service e7ed00
all: initdir $(INSTALL_PREREQ)
Packit Service e7ed00
Packit 6a0d22
# skip doc build if no sphinx-build
Packit Service e7ed00
ifneq ($(builddoc),n)
Packit 6a0d22
all: pkgdoc
Packit 6a0d22
endif
Packit 6a0d22
Packit 6a0d22
initdir: version.inc
Packit 6a0d22
	$(MAKE) -C init all
Packit 6a0d22
Packit 6a0d22
pkgdoc: version.inc
Packit 6a0d22
	$(MAKE) -C doc man txt
Packit 6a0d22
Packit 6a0d22
doc: version.inc
Packit 6a0d22
	$(MAKE) -C doc all
Packit 6a0d22
Packit 6a0d22
# build version.inc shared definitions from git repository info
Packit 6a0d22
ifeq ($(wildcard .git) $(wildcard version.inc.in),.git version.inc.in)
Packit 6a0d22
GIT_CURRENT_TAG := $(shell git describe --tags --abbrev=0)
Packit 6a0d22
GIT_CURRENT_DESC := $(shell git describe --tags)
Packit 6a0d22
GIT_CURRENT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
Packit 6a0d22
Packit 6a0d22
MODULES_RELEASE := $(subst v,,$(GIT_CURRENT_TAG))
Packit 6a0d22
MODULES_BUILD_DATE := $(shell git log -1 --format=%cd --date=short)
Packit 6a0d22
ifeq ($(GIT_CURRENT_TAG),$(GIT_CURRENT_DESC))
Packit 6a0d22
MODULES_BUILD :=
Packit 6a0d22
else ifeq ($(GIT_CURRENT_BRANCH),master)
Packit 6a0d22
MODULES_BUILD := +$(subst $(GIT_CURRENT_TAG)-,,$(GIT_CURRENT_DESC))
Packit 6a0d22
else
Packit 6a0d22
MODULES_BUILD := +$(GIT_CURRENT_BRANCH)$(subst $(GIT_CURRENT_TAG),,$(GIT_CURRENT_DESC))
Packit 6a0d22
endif
Packit 6a0d22
Packit Service e7ed00
else
Packit Service e7ed00
# load raw version information
Packit Service e7ed00
include version.inc.in
Packit Service e7ed00
Packit Service e7ed00
# build short date from full date found in raw data
Packit Service e7ed00
ifeq ($(MODULES_BUILD_FDATE),$$Format:%ci$$)
Packit Service e7ed00
MODULES_BUILD_DATE := $(shell date '+%Y-%m-%d')
Packit Service e7ed00
else
Packit Service e7ed00
MODULES_BUILD_DATE := $(firstword $(MODULES_BUILD_FDATE))
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
# set a recognizable build number if one found in version.inc.in is raw data
Packit Service e7ed00
ifeq ($(MODULES_BUILD_HASH),$$Format:%h$$)
Packit Service e7ed00
MODULES_BUILD := +XX-gffffffff
Packit Service e7ed00
# or compute it from these information as if working from git repository
Packit Service e7ed00
else
Packit Service e7ed00
comma := ,
Packit Service e7ed00
MODULES_BUILD_REFS := $(subst $(comma),,$(MODULES_BUILD_REFS))
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(filter v$(MODULES_RELEASE),$(MODULES_BUILD_REFS)),v$(MODULES_RELEASE))
Packit Service e7ed00
MODULES_BUILD :=
Packit Service e7ed00
else ifeq ($(filter master,$(MODULES_BUILD_REFS)),master)
Packit Service e7ed00
MODULES_BUILD := +XX-g$(MODULES_BUILD_HASH)
Packit Service e7ed00
else ifeq ($(MODULES_BUILD_REFS),%D)
Packit Service e7ed00
MODULES_BUILD := +XX-g$(MODULES_BUILD_HASH)
Packit Service e7ed00
else
Packit Service e7ed00
MODULES_BUILD := +$(lastword $(MODULES_BUILD_REFS))-XX-g$(MODULES_BUILD_HASH)
Packit Service e7ed00
endif
Packit Service e7ed00
endif
Packit Service e7ed00
endif
Packit Service e7ed00
Packit 6a0d22
# determine RPM release
Packit 6a0d22
# use last release if we currently sat on tag, append build number to it elsewhere
Packit 6a0d22
MODULES_LAST_RPM_VERSREL := $(shell sed -n '/^%changelog/ {n;s/^\*.* - //p;q;}' \
Packit 6a0d22
	contrib/rpm/environment-modules.spec.in)
Packit 6a0d22
MODULES_LAST_RPM_RELEASE := $(lastword $(subst -, ,$(MODULES_LAST_RPM_VERSREL)))
Packit 6a0d22
MODULES_RPM_RELEASE := $(MODULES_LAST_RPM_RELEASE)$(subst +,.,$(subst -,.,$(MODULES_BUILD)))
Packit 6a0d22
Packit Service e7ed00
# define init configs location
Packit Service e7ed00
ifeq ($(initconfin),etcdir)
Packit Service e7ed00
  modulespath := $(etcdir)/modulespath
Packit Service e7ed00
  initrc := $(etcdir)/initrc
Packit 6a0d22
else
Packit Service e7ed00
  modulespath := $(initdir)/.modulespath
Packit Service e7ed00
  initrc := $(initdir)/modulerc
Packit 6a0d22
endif
Packit 6a0d22
Packit 6a0d22
# comment entries if feature not enabled
Packit 6a0d22
ifeq ($(versioning),y)
Packit 6a0d22
  setversioning :=
Packit 6a0d22
  setnotversioning := \#
Packit 6a0d22
else
Packit 6a0d22
  setversioning := \#
Packit 6a0d22
  setnotversioning :=
Packit 6a0d22
endif
Packit 6a0d22
Packit Service e7ed00
ifeq ($(silentshdbgsupport),y)
Packit Service e7ed00
  setsilentshdbgsupport :=
Packit Service e7ed00
else
Packit Service e7ed00
  setsilentshdbgsupport := \#
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(quarantinesupport),y)
Packit Service e7ed00
  setquarantinesupport :=
Packit Service e7ed00
  setnotquarantinesupport := \#
Packit Service e7ed00
else
Packit Service e7ed00
  setquarantinesupport := \#
Packit Service e7ed00
  setnotquarantinesupport :=
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(libtclenvmodules),y)
Packit Service e7ed00
  setlibtclenvmodules :=
Packit Service e7ed00
else
Packit Service e7ed00
  setlibtclenvmodules := \#
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifneq ($(pageropts),)
Packit Service e7ed00
  pagercmd := $(pager) $(pageropts)
Packit Service e7ed00
else
Packit Service e7ed00
  pagercmd := $(pager)
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(color),y)
Packit Service e7ed00
  setcolor := auto
Packit Service e7ed00
else
Packit Service e7ed00
  setcolor := never
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(autohandling),y)
Packit Service e7ed00
  setautohandling := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setautohandling := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(availindepth),y)
Packit Service e7ed00
  setavailindepth := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setavailindepth := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(implicitdefault),y)
Packit Service e7ed00
  setimplicitdefault := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setimplicitdefault := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(extendeddefault),y)
Packit Service e7ed00
  setextendeddefault := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setextendeddefault := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(advversspec),y)
Packit Service e7ed00
  setadvversspec := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setadvversspec := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(ml),y)
Packit Service e7ed00
  setml := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setml := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(setshellstartup),y)
Packit Service e7ed00
  setsetshellstartup := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setsetshellstartup := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
ifeq ($(wa277),y)
Packit Service e7ed00
  setwa277 := 1
Packit Service e7ed00
else
Packit Service e7ed00
  setwa277 := 0
Packit Service e7ed00
endif
Packit Service e7ed00
Packit 6a0d22
define translate-in-script
Packit 6a0d22
sed -e 's|@prefix@|$(prefix)|g' \
Packit 6a0d22
	-e 's|@baseprefix@|$(baseprefix)|g' \
Packit Service e7ed00
	-e 's|@libdir@|$(libdir)|g' \
Packit 6a0d22
	-e 's|@libexecdir@|$(libexecdir)|g' \
Packit 6a0d22
	-e 's|@initdir@|$(initdir)|g' \
Packit 6a0d22
	-e 's|@etcdir@|$(etcdir)|g' \
Packit 6a0d22
	-e 's|@modulefilesdir@|$(modulefilesdir)|g' \
Packit Service e7ed00
	-e 's|@moduleshome@|$(moduleshome)|g' \
Packit 6a0d22
	-e 's|@VERSION@|$(VERSION)|g' \
Packit 6a0d22
	-e 's|@TCLSHDIR@/tclsh|$(TCLSH)|g' \
Packit 6a0d22
	-e 's|@TCLSH@|$(TCLSH)|g' \
Packit Service e7ed00
	-e 's|@PYTHON@|$(PYTHON)|g' \
Packit Service e7ed00
	-e 's|@pagercmd@|$(pagercmd)|g' \
Packit Service e7ed00
	-e 's|@verbosity@|$(verbosity)|g' \
Packit Service e7ed00
	-e 's|@color@|$(setcolor)|g' \
Packit Service e7ed00
	-e 's|@darkbgcolors@|$(darkbgcolors)|g' \
Packit Service e7ed00
	-e 's|@lightbgcolors@|$(lightbgcolors)|g' \
Packit Service e7ed00
	-e 's|@termbg@|$(termbg)|g' \
Packit Service e7ed00
	-e 's|@lockedconfigs@|$(lockedconfigs)|g' \
Packit Service e7ed00
	-e 's|@unloadmatchorder@|$(unloadmatchorder)|g' \
Packit Service e7ed00
	-e 's|@implicitdefault@|$(setimplicitdefault)|g' \
Packit Service e7ed00
	-e 's|@extendeddefault@|$(setextendeddefault)|g' \
Packit Service e7ed00
	-e 's|@advversspec@|$(setadvversspec)|g' \
Packit Service e7ed00
	-e 's|@searchmatch@|$(searchmatch)|g' \
Packit Service e7ed00
	-e 's|@wa277@|$(setwa277)|g' \
Packit Service e7ed00
	-e 's|@icase@|$(icase)|g' \
Packit Service e7ed00
	-e 's|@autohandling@|$(setautohandling)|g' \
Packit Service e7ed00
	-e 's|@availindepth@|$(setavailindepth)|g' \
Packit Service e7ed00
	-e 's|@silentshdbgsupport@|$(setsilentshdbgsupport)|g' \
Packit Service e7ed00
	-e 's|@ml@|$(setml)|g' \
Packit Service e7ed00
	-e 's|@setshellstartup@|$(setsetshellstartup)|g' \
Packit Service e7ed00
	-e 's|@quarantinesupport@|$(setquarantinesupport)|g' \
Packit Service e7ed00
	-e 's|@notquarantinesupport@|$(setnotquarantinesupport)|g' \
Packit Service e7ed00
	-e 's|@libtclenvmodules@|$(setlibtclenvmodules)|g' \
Packit Service e7ed00
	-e 's|@SHLIB_SUFFIX@|$(SHLIB_SUFFIX)|g' \
Packit 6a0d22
	-e 's|@VERSIONING@|$(setversioning)|g' \
Packit 6a0d22
	-e 's|@NOTVERSIONING@|$(setnotversioning)|g' \
Packit 6a0d22
	-e 's|@MODULES_RELEASE@|$(MODULES_RELEASE)|g' \
Packit 6a0d22
	-e 's|@MODULES_BUILD@|$(MODULES_BUILD)|g' \
Packit 6a0d22
	-e 's|@MODULES_RPM_RELEASE@|$(MODULES_RPM_RELEASE)|g' \
Packit 6a0d22
	-e 's|@MODULES_BUILD_DATE@|$(MODULES_BUILD_DATE)|g' $< > $@
Packit 6a0d22
endef
Packit 6a0d22
Packit Service e7ed00
DIST_PREFIX := modules-$(MODULES_RELEASE)$(MODULES_BUILD)
Packit Service e7ed00
DIST_WIN_PREFIX := $(DIST_PREFIX)-win
Packit 6a0d22
Packit 6a0d22
# avoid shared definitions to be rebuilt by make
Packit Service e7ed00
Makefile.inc: ;
Packit 6a0d22
Packit Service e7ed00
version.inc: version.inc.in $(GIT_REFRESH_PREREQ)
Packit Service e7ed00
	$(translate-in-script)
Packit 6a0d22
Packit Service e7ed00
# source version definitions shared across the Makefiles of this project
Packit Service e7ed00
include version.inc
Packit 6a0d22
Packit Service e7ed00
contrib/rpm/environment-modules.spec: contrib/rpm/environment-modules.spec.in $(GIT_REFRESH_PREREQ)
Packit Service e7ed00
	$(translate-in-script)
Packit 6a0d22
Packit 6a0d22
modulecmd.tcl: modulecmd.tcl.in version.inc
Packit 6a0d22
	$(translate-in-script)
Packit 6a0d22
	chmod +x $@
Packit 6a0d22
Packit Service e7ed00
# generate an empty changelog file if not working from git repository
Packit Service e7ed00
ifeq ($(wildcard .git),.git)
Packit Service e7ed00
ChangeLog: script/gitlog2changelog.py
Packit Service e7ed00
	script/gitlog2changelog.py
Packit Service e7ed00
else
Packit 6a0d22
ChangeLog:
Packit Service e7ed00
	echo "Please refer to the NEWS document to learn about main changes" >$@
Packit Service e7ed00
endif
Packit 6a0d22
Packit 6a0d22
README:
Packit 6a0d22
	sed -e '/^\[\!\[.*\].*/d' $@.md > $@
Packit 6a0d22
Packit Service e7ed00
script/add.modules: script/add.modules.in
Packit 6a0d22
	$(translate-in-script)
Packit Service e7ed00
	chmod +x $@
Packit 6a0d22
Packit Service e7ed00
script/createmodule.py: script/createmodule.py.in
Packit 6a0d22
	$(translate-in-script)
Packit Service e7ed00
	chmod +x $@
Packit Service e7ed00
Packit Service e7ed00
script/gitlog2changelog.py: script/gitlog2changelog.py.in
Packit Service e7ed00
	$(translate-in-script)
Packit Service e7ed00
	chmod +x $@
Packit Service e7ed00
Packit Service e7ed00
script/modulecmd: script/modulecmd.in
Packit Service e7ed00
	$(translate-in-script)
Packit Service e7ed00
	chmod +x $@
Packit 6a0d22
Packit 6a0d22
# compatibility version-related rules
Packit 6a0d22
$(COMPAT_DIR)/modulecmd$(EXEEXT) $(COMPAT_DIR)/ChangeLog:
Packit 6a0d22
	$(MAKE) -C $(COMPAT_DIR) $(@F)
Packit 6a0d22
Packit Service e7ed00
# Tcl extension library-related rules
Packit Service e7ed00
lib/libtclenvmodules$(SHLIB_SUFFIX):
Packit Service e7ed00
	$(MAKE) -C lib $(@F)
Packit Service e7ed00
Packit Service e7ed00
lib/libtestutil-closedir$(SHLIB_SUFFIX):
Packit Service e7ed00
	$(MAKE) -C lib $(@F)
Packit Service e7ed00
Packit 6a0d22
# example configs for test rules
Packit 6a0d22
testsuite/example/.modulespath: testsuite/example/.modulespath.in
Packit 6a0d22
	$(translate-in-script)
Packit 6a0d22
Packit 6a0d22
testsuite/example/modulerc: testsuite/example/modulerc.in
Packit 6a0d22
	$(translate-in-script)
Packit 6a0d22
Packit Service e7ed00
testsuite/example/modulerc-1: testsuite/example/modulerc-1.in
Packit Service e7ed00
	$(translate-in-script)
Packit Service e7ed00
Packit Service e7ed00
testsuite/example/initrc: testsuite/example/initrc.in
Packit Service e7ed00
	$(translate-in-script)
Packit Service e7ed00
Packit 6a0d22
install-testsiteconfig: testsuite/example/siteconfig.tcl
Packit 6a0d22
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit 6a0d22
	cp $^ $(DESTDIR)$(etcdir)/
Packit 6a0d22
Packit 6a0d22
install-testsiteconfig-1: testsuite/example/siteconfig.tcl-1
Packit 6a0d22
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit 6a0d22
	cp $^ $(DESTDIR)$(etcdir)/siteconfig.tcl
Packit 6a0d22
Packit 6a0d22
install-testmodulerc: testsuite/example/modulerc
Packit 6a0d22
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit Service e7ed00
	cp $^ $(DESTDIR)$(initrc)
Packit Service e7ed00
Packit Service e7ed00
install-testmodulerc-1: testsuite/example/modulerc-1
Packit Service e7ed00
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit Service e7ed00
	cp $^ $(DESTDIR)$(initrc)
Packit Service e7ed00
Packit Service e7ed00
install-testinitrc: testsuite/example/initrc
Packit Service e7ed00
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit Service e7ed00
	cp $^ $(DESTDIR)$(initrc)
Packit 6a0d22
Packit 6a0d22
install-testetcrc: testsuite/etc/empty
Packit 6a0d22
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit Service e7ed00
	cp $^ $(DESTDIR)$(etcdir)/rc
Packit 6a0d22
Packit 6a0d22
install-testmodspath: testsuite/example/.modulespath
Packit 6a0d22
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit Service e7ed00
	cp $^ $(DESTDIR)$(modulespath)
Packit 6a0d22
Packit 6a0d22
install-testmodspath-empty: testsuite/example/.modulespath-empty
Packit 6a0d22
	$(MAKE) -C init install-testconfig DESTDIR=$(DESTDIR)
Packit Service e7ed00
	cp $^ $(DESTDIR)$(modulespath)
Packit 6a0d22
Packit 6a0d22
uninstall-testconfig:
Packit Service e7ed00
	rm -f $(DESTDIR)$(etcdir)/rc
Packit 6a0d22
	rm -f $(DESTDIR)$(etcdir)/siteconfig.tcl
Packit Service e7ed00
	rm -f $(DESTDIR)$(initrc)
Packit Service e7ed00
	rm -f $(DESTDIR)$(modulespath)
Packit 6a0d22
	$(MAKE) -C init uninstall-testconfig DESTDIR=$(DESTDIR)
Packit 6a0d22
Packit Service e7ed00
install: $(INSTALL_PREREQ)
Packit 6a0d22
	mkdir -p $(DESTDIR)$(libexecdir)
Packit 6a0d22
	mkdir -p $(DESTDIR)$(bindir)
Packit Service e7ed00
	mkdir -p $(DESTDIR)$(etcdir)
Packit 6a0d22
	cp modulecmd.tcl $(DESTDIR)$(libexecdir)/
Packit 6a0d22
	chmod +x $(DESTDIR)$(libexecdir)/modulecmd.tcl
Packit 6a0d22
ifeq ($(compatversion),y)
Packit 6a0d22
	cp $(COMPAT_DIR)/modulecmd$(EXEEXT) $(DESTDIR)$(libexecdir)/modulecmd-compat$(EXEEXT)
Packit 6a0d22
	chmod +x $(DESTDIR)$(libexecdir)/modulecmd-compat$(EXEEXT)
Packit 6a0d22
endif
Packit Service e7ed00
ifeq ($(libtclenvmodules),y)
Packit Service e7ed00
	mkdir -p $(DESTDIR)$(libdir)
Packit Service e7ed00
	cp lib/libtclenvmodules$(SHLIB_SUFFIX) $(DESTDIR)$(libdir)/libtclenvmodules$(SHLIB_SUFFIX)
Packit Service e7ed00
	chmod +x $(DESTDIR)$(libdir)/libtclenvmodules$(SHLIB_SUFFIX)
Packit Service e7ed00
endif
Packit Service e7ed00
	cp script/envml $(DESTDIR)$(bindir)/
Packit 6a0d22
	chmod +x $(DESTDIR)$(bindir)/envml
Packit Service e7ed00
	cp script/add.modules $(DESTDIR)$(bindir)/
Packit 6a0d22
	chmod +x $(DESTDIR)$(bindir)/add.modules
Packit Service e7ed00
	cp script/createmodule.py $(DESTDIR)$(bindir)/
Packit Service e7ed00
	chmod +x $(DESTDIR)$(bindir)/createmodule.py
Packit Service e7ed00
	cp script/modulecmd $(DESTDIR)$(bindir)/
Packit 6a0d22
	chmod +x $(DESTDIR)$(bindir)/modulecmd
Packit Service e7ed00
	cp script/mkroot $(DESTDIR)$(bindir)/
Packit 6a0d22
	chmod +x $(DESTDIR)$(bindir)/mkroot
Packit Service e7ed00
ifeq ($(windowssupport),y)
Packit Service e7ed00
	cp script/module.cmd $(DESTDIR)$(bindir)/
Packit Service e7ed00
	chmod +x $(DESTDIR)$(bindir)/module.cmd
Packit Service e7ed00
	cp script/ml.cmd $(DESTDIR)$(bindir)/
Packit Service e7ed00
	chmod +x $(DESTDIR)$(bindir)/ml.cmd
Packit Service e7ed00
	cp script/envml.cmd $(DESTDIR)$(bindir)/
Packit Service e7ed00
	chmod +x $(DESTDIR)$(bindir)/envml.cmd
Packit Service e7ed00
endif
Packit Service e7ed00
ifneq ($(wildcard $(DESTDIR)$(etcdir)/siteconfig.tcl),$(DESTDIR)$(etcdir)/siteconfig.tcl)
Packit Service e7ed00
	cp siteconfig.tcl $(DESTDIR)$(etcdir)/siteconfig.tcl
Packit Service e7ed00
endif
Packit 6a0d22
ifeq ($(docinstall),y)
Packit 6a0d22
	mkdir -p $(DESTDIR)$(docdir)
Packit 6a0d22
	cp COPYING.GPLv2 $(DESTDIR)$(docdir)/
Packit 6a0d22
	cp ChangeLog $(DESTDIR)$(docdir)/
Packit 6a0d22
	cp README $(DESTDIR)$(docdir)/
Packit 6a0d22
ifeq ($(compatversion),y)
Packit 6a0d22
	cp $(COMPAT_DIR)/ChangeLog $(DESTDIR)$(docdir)/ChangeLog-compat
Packit 6a0d22
	cp $(COMPAT_DIR)/NEWS $(DESTDIR)$(docdir)/NEWS-compat
Packit 6a0d22
endif
Packit 6a0d22
endif
Packit Service e7ed00
ifeq ($(vimaddons),y)
Packit Service e7ed00
	mkdir -p $(DESTDIR)$(vimdatadir)/ftdetect
Packit Service e7ed00
	mkdir -p $(DESTDIR)$(vimdatadir)/ftplugin
Packit Service e7ed00
	mkdir -p $(DESTDIR)$(vimdatadir)/syntax
Packit Service e7ed00
	cp  contrib/vim/ftdetect/modulefile.vim  $(DESTDIR)$(vimdatadir)/ftdetect
Packit Service e7ed00
	cp  contrib/vim/ftplugin/modulefile.vim  $(DESTDIR)$(vimdatadir)/ftplugin
Packit Service e7ed00
	cp  contrib/vim/syntax/modulefile.vim    $(DESTDIR)$(vimdatadir)/syntax
Packit Service e7ed00
endif
Packit 6a0d22
	$(MAKE) -C init install DESTDIR=$(DESTDIR)
Packit Service e7ed00
ifneq ($(builddoc),n)
Packit 6a0d22
	$(MAKE) -C doc install DESTDIR=$(DESTDIR)
Packit 6a0d22
else
Packit 6a0d22
	@echo
Packit Service e7ed00
	@echo "WARNING: Documentation not built nor installed" >&2
Packit 6a0d22
endif
Packit 6a0d22
	@echo
Packit Service e7ed00
	@echo "NOTICE: Modules installation is complete." >&2
Packit Service e7ed00
	@echo "        Please read the 'Configuration' section in INSTALL guide to learn" >&2
Packit 6a0d22
	@echo "        how to adapt your installation and make it fit your needs." >&2
Packit 6a0d22
	@echo
Packit 6a0d22
Packit 6a0d22
uninstall:
Packit 6a0d22
	rm -f $(DESTDIR)$(libexecdir)/modulecmd.tcl
Packit 6a0d22
ifeq ($(compatversion),y)
Packit 6a0d22
	rm -f $(DESTDIR)$(libexecdir)/modulecmd-compat$(EXEEXT)
Packit 6a0d22
endif
Packit Service e7ed00
ifeq ($(libtclenvmodules),y)
Packit Service e7ed00
	rm -f $(DESTDIR)$(libdir)/libtclenvmodules$(SHLIB_SUFFIX)
Packit Service e7ed00
endif
Packit 6a0d22
	rm -f $(DESTDIR)$(bindir)/envml
Packit 6a0d22
	rm -f $(DESTDIR)$(bindir)/add.modules
Packit Service e7ed00
	rm -f $(DESTDIR)$(bindir)/createmodule.py
Packit 6a0d22
	rm -f $(DESTDIR)$(bindir)/modulecmd
Packit 6a0d22
	rm -f $(DESTDIR)$(bindir)/mkroot
Packit Service e7ed00
ifeq ($(windowssupport),y)
Packit Service e7ed00
	rm -f $(DESTDIR)$(bindir)/module.cmd
Packit Service e7ed00
	rm -f $(DESTDIR)$(bindir)/ml.cmd
Packit Service e7ed00
	rm -f $(DESTDIR)$(bindir)/envml.cmd
Packit Service e7ed00
endif
Packit Service e7ed00
ifeq ($(vimaddons),y)
Packit Service e7ed00
	rm -f $(DESTDIR)$(vimdatadir)/ftdetect/modulefile.vim
Packit Service e7ed00
	rm -f $(DESTDIR)$(vimdatadir)/ftplugin/modulefile.vim
Packit Service e7ed00
	rm -f $(DESTDIR)$(vimdatadir)/syntax/modulefile.vim
Packit Service e7ed00
	-rmdir $(DESTDIR)$(vimdatadir)/ftdetect
Packit Service e7ed00
	-rmdir $(DESTDIR)$(vimdatadir)/ftplugin
Packit Service e7ed00
	-rmdir $(DESTDIR)$(vimdatadir)/syntax
Packit Service e7ed00
	-rmdir -p $(DESTDIR)$(vimdatadir)
Packit Service e7ed00
endif
Packit 6a0d22
ifeq ($(docinstall),y)
Packit 6a0d22
	rm -f $(addprefix $(DESTDIR)$(docdir)/,ChangeLog README COPYING.GPLv2)
Packit 6a0d22
ifeq ($(compatversion),y)
Packit 6a0d22
	rm -f $(addprefix $(DESTDIR)$(docdir)/,ChangeLog-compat NEWS-compat)
Packit 6a0d22
endif
Packit Service e7ed00
ifeq ($(builddoc),n)
Packit 6a0d22
	rmdir $(DESTDIR)$(docdir)
Packit 6a0d22
endif
Packit 6a0d22
endif
Packit 6a0d22
	$(MAKE) -C init uninstall DESTDIR=$(DESTDIR)
Packit Service e7ed00
ifneq ($(builddoc),n)
Packit 6a0d22
	$(MAKE) -C doc uninstall DESTDIR=$(DESTDIR)
Packit 6a0d22
endif
Packit 6a0d22
	rmdir $(DESTDIR)$(libexecdir)
Packit Service e7ed00
ifeq ($(libtclenvmodules),y)
Packit Service e7ed00
	rmdir $(DESTDIR)$(libdir)
Packit Service e7ed00
endif
Packit 6a0d22
	rmdir $(DESTDIR)$(bindir)
Packit 6a0d22
	rmdir $(DESTDIR)$(datarootdir)
Packit 6a0d22
	$(RMDIR_IGN_NON_EMPTY) $(DESTDIR)$(prefix) || true
Packit 6a0d22
Packit 6a0d22
# include pre-generated documents not to require documentation build
Packit 6a0d22
# tools when installing from dist tarball
Packit Service e7ed00
dist-tar: ChangeLog contrib/rpm/environment-modules.spec pkgdoc
Packit 6a0d22
	git archive --prefix=$(DIST_PREFIX)/ --worktree-attributes \
Packit 6a0d22
		-o $(DIST_PREFIX).tar HEAD
Packit 6a0d22
	tar -rf $(DIST_PREFIX).tar --transform 's,^,$(DIST_PREFIX)/,' \
Packit Service e7ed00
		lib/configure lib/config.h.in ChangeLog doc/build/MIGRATING.txt \
Packit Service e7ed00
		doc/build/diff_v3_v4.txt doc/build/INSTALL.txt doc/build/INSTALL-win.txt \
Packit Service e7ed00
		doc/build/NEWS.txt doc/build/CONTRIBUTING.txt doc/build/module.1.in \
Packit Service e7ed00
		doc/build/ml.1 doc/build/modulefile.4 contrib/rpm/environment-modules.spec
Packit 6a0d22
ifeq ($(compatversion) $(wildcard $(COMPAT_DIR)),y $(COMPAT_DIR))
Packit 6a0d22
	$(MAKE) -C $(COMPAT_DIR) distdir
Packit 6a0d22
	mv $(COMPAT_DIR)/modules-* compatdist
Packit 6a0d22
	tar -cf compatdist.tar --transform 's,^compatdist,$(DIST_PREFIX)/compat,' compatdist
Packit 6a0d22
	tar --concatenate -f $(DIST_PREFIX).tar compatdist.tar
Packit 6a0d22
	rm -rf compatdist
Packit 6a0d22
	rm compatdist.tar
Packit 6a0d22
endif
Packit 6a0d22
Packit 6a0d22
dist-gzip: dist-tar
Packit 6a0d22
	gzip -f -9 $(DIST_PREFIX).tar
Packit 6a0d22
Packit 6a0d22
dist-bzip2: dist-tar
Packit 6a0d22
	bzip2 -f $(DIST_PREFIX).tar
Packit 6a0d22
Packit 6a0d22
dist: dist-gzip
Packit 6a0d22
Packit Service e7ed00
# dist zip ball for Windows platform with all pre-generated relevant files
Packit Service e7ed00
dist-win: modulecmd.tcl ChangeLog README pkgdoc
Packit Service e7ed00
	mkdir $(DIST_WIN_PREFIX)
Packit Service e7ed00
	mkdir $(DIST_WIN_PREFIX)/libexec
Packit Service e7ed00
	cp modulecmd.tcl $(DIST_WIN_PREFIX)/libexec/
Packit Service e7ed00
	mkdir $(DIST_WIN_PREFIX)/bin
Packit Service e7ed00
	cp script/module.cmd $(DIST_WIN_PREFIX)/bin/
Packit Service e7ed00
	cp script/ml.cmd $(DIST_WIN_PREFIX)/bin/
Packit Service e7ed00
	cp script/envml.cmd $(DIST_WIN_PREFIX)/bin/
Packit Service e7ed00
	mkdir $(DIST_WIN_PREFIX)/doc
Packit Service e7ed00
	cp COPYING.GPLv2 $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp ChangeLog $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp README $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp doc/build/MIGRATING.txt $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp doc/build/INSTALL-win.txt $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp doc/build/NEWS.txt $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp doc/build/CONTRIBUTING.txt $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp doc/build/module.txt $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	cp doc/build/modulefile.txt $(DIST_WIN_PREFIX)/doc/
Packit Service e7ed00
	$(MAKE) -C init dist-win DIST_WIN_PREFIX=../$(DIST_WIN_PREFIX)
Packit Service e7ed00
	cp script/INSTALL.bat $(DIST_WIN_PREFIX)/
Packit Service e7ed00
	cp script/UNINSTALL.bat $(DIST_WIN_PREFIX)/
Packit Service e7ed00
	cp script/TESTINSTALL.bat $(DIST_WIN_PREFIX)/
Packit Service e7ed00
	zip -r $(DIST_WIN_PREFIX).zip $(DIST_WIN_PREFIX)
Packit Service e7ed00
	rm -rf $(DIST_WIN_PREFIX)
Packit Service e7ed00
Packit 6a0d22
srpm: dist-bzip2
Packit 6a0d22
	rpmbuild -ts $(DIST_PREFIX).tar.bz2
Packit 6a0d22
Packit Service e7ed00
rpm: dist-bzip2
Packit Service e7ed00
	rpmbuild -tb $(DIST_PREFIX).tar.bz2
Packit Service e7ed00
Packit 6a0d22
clean:
Packit 6a0d22
	rm -f *.log *.sum
Packit Service e7ed00
	rm -f $(MODULECMDTEST)_i $(MODULECMDTEST)_log $(MODULECMDTEST)_m
Packit 6a0d22
	rm -rf coverage
Packit Service e7ed00
# do not clean generated docs if not in git repository
Packit Service e7ed00
ifeq ($(wildcard .git),.git)
Packit 6a0d22
	rm -f ChangeLog
Packit 6a0d22
endif
Packit 6a0d22
	rm -f README
Packit 6a0d22
	rm -f modulecmd.tcl
Packit Service e7ed00
	rm -f $(MODULECMDTEST)
Packit Service e7ed00
	rm -f script/add.modules
Packit Service e7ed00
	rm -f script/createmodule.py
Packit Service e7ed00
	rm -f script/gitlog2changelog.py
Packit Service e7ed00
	rm -f script/modulecmd
Packit Service e7ed00
	rm -f testsuite/example/.modulespath testsuite/example/modulerc testsuite/example/modulerc-1 testsuite/example/initrc
Packit 6a0d22
	rm -f modules-*.tar modules-*.tar.gz modules-*.tar.bz2
Packit Service e7ed00
	rm -rf modules-*-win/
Packit Service e7ed00
	rm -f modules-*-win.zip
Packit Service e7ed00
	rm -f environment-modules-*.srpm environment-modules-*.rpm
Packit 6a0d22
	$(MAKE) -C init clean
Packit Service e7ed00
ifneq ($(builddoc),n)
Packit 6a0d22
	$(MAKE) -C doc clean
Packit 6a0d22
endif
Packit 6a0d22
	rm -f version.inc
Packit 6a0d22
	rm -f contrib/rpm/environment-modules.spec
Packit 6a0d22
ifneq ($(wildcard $(COMPAT_DIR)/Makefile),)
Packit Service e7ed00
	$(MAKE) -C $(COMPAT_DIR) clean
Packit Service e7ed00
endif
Packit Service e7ed00
ifneq ($(wildcard lib/Makefile),)
Packit Service e7ed00
	$(MAKE) -C lib clean
Packit 6a0d22
endif
Packit 6a0d22
Packit 6a0d22
distclean: clean
Packit 6a0d22
	rm -f Makefile.inc
Packit 6a0d22
	rm -f site.exp
Packit Service e7ed00
	rm -f icdiff .noicdiff
Packit 6a0d22
	rm -rf $(NAGELFAR_RELEASE)
Packit Service e7ed00
	rm -rf $(TCL_RELEASE83)
Packit Service e7ed00
	rm -f tclsh83
Packit 6a0d22
ifeq ($(wildcard .git) $(wildcard $(COMPAT_DIR)),.git $(COMPAT_DIR))
Packit 6a0d22
	rm -rf $(COMPAT_DIR)
Packit 6a0d22
ifeq ($(gitworktree),y)
Packit 6a0d22
	git worktree prune
Packit 6a0d22
endif
Packit 6a0d22
endif
Packit Service e7ed00
ifneq ($(wildcard lib/Makefile),)
Packit Service e7ed00
	$(MAKE) -C lib distclean
Packit Service e7ed00
endif
Packit 6a0d22
Packit Service e7ed00
# prepare for code coverage run
Packit Service e7ed00
ifeq ($(COVERAGE),y)
Packit Service e7ed00
$(MODULECMDTEST): $(NAGELFAR)
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
# make specific modulecmd script for test to check built extension lib
Packit Service e7ed00
# if coverage asked, instrument script and clear previous coverage log
Packit Service e7ed00
$(MODULECMDTEST): modulecmd.tcl
Packit Service e7ed00
	sed -e 's|$(libdir)|lib|' $< > $@
Packit Service e7ed00
ifeq ($(COVERAGE),y)
Packit Service e7ed00
	rm -f $(MODULECMDTEST)_log
Packit Service e7ed00
	$(NAGELFAR) -instrument $@
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
# if coverage enabled, run tests on instrumented file to create coverage log
Packit Service e7ed00
ifeq ($(COVERAGE),y)
Packit Service e7ed00
export MODULECMD = $(MODULECMDTEST)_i
Packit Service e7ed00
endif
Packit Service e7ed00
Packit Service e7ed00
# specific target to build test dependencies
Packit Service e7ed00
test-deps: $(TEST_PREREQ)
Packit Service e7ed00
Packit Service e7ed00
# if coverage enabled create markup file for better read coverage result
Packit Service e7ed00
test: $(TEST_PREREQ)
Packit 6a0d22
ifeq ($(compatversion) $(wildcard $(COMPAT_DIR)),y $(COMPAT_DIR))
Packit 6a0d22
	$(MAKE) -C $(COMPAT_DIR) test
Packit 6a0d22
endif
Packit 6a0d22
	TCLSH=$(TCLSH); export TCLSH; \
Packit 6a0d22
	OBJDIR=`pwd -P`; export OBJDIR; \
Packit 6a0d22
	TESTSUITEDIR=`cd testsuite;pwd -P`; export TESTSUITEDIR; \
Packit Service e7ed00
	runtest --srcdir $$TESTSUITEDIR --objdir $$OBJDIR $(RUNTESTFLAGS) --tool modules $(RUNTESTFILES)
Packit Service e7ed00
ifeq ($(COVERAGE),y)
Packit Service e7ed00
	$(NAGELFAR) -markup $(MODULECMDTEST)
Packit Service e7ed00
endif
Packit 6a0d22
Packit 6a0d22
testinstall:
Packit 6a0d22
	OBJDIR=`pwd -P`; export OBJDIR; \
Packit 6a0d22
	TESTSUITEDIR=`cd testsuite;pwd -P`; export TESTSUITEDIR; \
Packit Service e7ed00
	runtest --srcdir $$TESTSUITEDIR --objdir $$OBJDIR $(RUNTESTFLAGS) --tool install $(RUNTESTFILES)
Packit 6a0d22
Packit 6a0d22
Packit Service e7ed00
# install enhanced diff tool (to review test results)
Packit Service e7ed00
icdiff:
Packit Service e7ed00
	$(WGET) $(ICDIFF_DLSRC)$@ || true
Packit Service e7ed00
	echo "$(ICDIFF_CHECKSUM)  $@" | md5sum --status -c - || \
Packit Service e7ed00
		md5 -c $(ICDIFF_CHECKSUM) $@
Packit Service e7ed00
	chmod +x $@
Packit Service e7ed00
Packit Service e7ed00
# install old Tcl interpreter (for code coverage purpose)
Packit Service e7ed00
tclsh83:
Packit Service e7ed00
	$(WGET) $(TCL_DLSRC)$(TCL_DIST83) || true
Packit Service e7ed00
	echo "$(TCL_DISTSUM83)  $(TCL_DIST83)" | md5sum --status -c - || \
Packit Service e7ed00
		md5 -c $(TCL_DISTSUM83) $@ || (rm -f $(TCL_DIST83) && false)
Packit Service e7ed00
	tar xzf $(TCL_DIST83)
Packit Service e7ed00
	cd $(TCL_RELEASE83)/unix && bash configure --disable-shared && make
Packit Service e7ed00
	echo '#!/bin/bash' >$@
Packit Service e7ed00
	echo 'exec $(TCLSH83) $${@}' >>$@
Packit Service e7ed00
	chmod +x $@
Packit Service e7ed00
	rm $(TCL_DIST83)
Packit Service e7ed00
Packit 6a0d22
# install code coverage tool
Packit 6a0d22
# download from alt. source if correct tarball not retrieved from primary location
Packit 6a0d22
$(NAGELFAR):
Packit Service e7ed00
	$(WGET) $(NAGELFAR_DLSRC1)$(NAGELFAR_DIST) || true
Packit Service e7ed00
	echo "$(NAGELFAR_DISTSUM)  $(NAGELFAR_DIST)" | md5sum --status -c - || \
Packit Service e7ed00
		(rm -f $(NAGELFAR_DIST) && false)
Packit 6a0d22
	tar xzf $(NAGELFAR_DIST)
Packit 6a0d22
	rm $(NAGELFAR_DIST)
Packit 6a0d22
Packit Service e7ed00
testsyntax: $(MODULECMDTEST) $(NAGELFAR)
Packit Service e7ed00
	$(NAGELFAR) -len 78 $<