aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.global.in12
-rw-r--r--src/bin/Makefile6
-rw-r--r--src/pl/Makefile7
-rw-r--r--src/pl/plpython/Makefile28
4 files changed, 39 insertions, 14 deletions
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index ba0822383f2..3bf658d6b0c 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -19,6 +19,8 @@
# Meta configuration
standard_targets = all install installdirs uninstall distprep clean distclean maintainer-clean coverage check installcheck maintainer-check
+# these targets should recurse even into subdirectories not being built:
+standard_always_targets = distprep clean distclean maintainer-clean
.PHONY: $(standard_targets) install-strip html man installcheck-parallel
@@ -603,6 +605,16 @@ endef
# $3: target to run in subdir (defaults to current element of $1)
recurse = $(foreach target,$(if $1,$1,$(standard_targets)),$(foreach subdir,$(if $2,$2,$(SUBDIRS)),$(eval $(call _create_recursive_target,$(target),$(subdir),$(if $3,$3,$(target))))))
+# If a makefile's list of SUBDIRS varies depending on configuration, then
+# any subdirectories excluded from SUBDIRS should instead be added to
+# ALWAYS_SUBDIRS, and then it must call recurse_always as well as recurse.
+# This ensures that distprep, distclean, etc will apply to all subdirectories.
+# In the normal case all arguments will be defaulted.
+# $1: targets to make recursive (defaults to standard_always_targets)
+# $2: list of subdirs (defaults to ALWAYS_SUBDIRS variable)
+# $3: target to run in subdir (defaults to current element of $1)
+recurse_always = $(foreach target,$(if $1,$1,$(standard_always_targets)),$(foreach subdir,$(if $2,$2,$(ALWAYS_SUBDIRS)),$(eval $(call _create_recursive_target,$(target),$(subdir),$(if $3,$3,$(target))))))
+
##########################################################################
#
diff --git a/src/bin/Makefile b/src/bin/Makefile
index 3809412a2d0..c333a489f1a 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -15,8 +15,12 @@ include $(top_builddir)/src/Makefile.global
SUBDIRS = initdb pg_ctl pg_dump \
psql scripts pg_config pg_controldata pg_resetxlog pg_basebackup
+
ifeq ($(PORTNAME), win32)
-SUBDIRS+=pgevent
+SUBDIRS += pgevent
+else
+ALWAYS_SUBDIRS += pgevent
endif
$(recurse)
+$(recurse_always)
diff --git a/src/pl/Makefile b/src/pl/Makefile
index ef630fe8d2e..c4a0d1cd07a 100644
--- a/src/pl/Makefile
+++ b/src/pl/Makefile
@@ -16,14 +16,21 @@ SUBDIRS = plpgsql
ifeq ($(with_perl), yes)
SUBDIRS += plperl
+else
+ALWAYS_SUBDIRS += plperl
endif
ifeq ($(with_python), yes)
SUBDIRS += plpython
+else
+ALWAYS_SUBDIRS += plpython
endif
ifeq ($(with_tcl), yes)
SUBDIRS += tcl
+else
+ALWAYS_SUBDIRS += tcl
endif
$(recurse)
+$(recurse_always)
diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile
index 2c0575501a4..56e06d74f12 100644
--- a/src/pl/plpython/Makefile
+++ b/src/pl/plpython/Makefile
@@ -95,16 +95,8 @@ PSQLDIR = $(bindir)
include $(top_srcdir)/src/Makefile.shlib
-# Force this dependency to be known even without dependency info built:
-plpython.o: spiexceptions.h
-
-spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl
- $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@
-
all: all-lib
-distprep: spiexceptions.h
-
install: all install-lib install-data
@@ -151,13 +143,13 @@ installcheck: submake prep3
$(pg_regress_installcheck) --inputdir=./python3 --outputdir=./python3 $(REGRESS_OPTS) $(REGRESS)
clean: clean3
-else
+else # not Python 3
check: submake
$(pg_regress_check) $(REGRESS_OPTS) $(REGRESS)
installcheck: submake
$(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS)
-endif
+endif # not Python 3
.PHONY: submake
submake:
@@ -170,9 +162,6 @@ ifeq ($(PORTNAME), win32)
rm -f python${pytverstr}.def
endif
-maintainer-clean: distclean
- rm -f spiexceptions.h
-
else # can't build
all:
@@ -183,3 +172,16 @@ all:
echo ""
endif # can't build
+
+# distprep and maintainer-clean rules should be run even if we can't build.
+
+# Force this dependency to be known even without dependency info built:
+plpython.o: spiexceptions.h
+
+spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl
+ $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@
+
+distprep: spiexceptions.h
+
+maintainer-clean: distclean
+ rm -f spiexceptions.h