summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2000-06-10 18:02:12 +0000
committerPeter Eisentraut <peter_e@gmx.net>2000-06-10 18:02:12 +0000
commit6de89c9ab78a557f98dc02dca97795d27a4112d2 (patch)
tree4b1a26308ed5013424b39847f0c7b2aad355e606 /Makefile
parent2ae20ef98a94c6a0f77e6358ae756cc02f29e921 (diff)
downloadpostgresql-6de89c9ab78a557f98dc02dca97795d27a4112d2.tar.gz
Moved the intricacies of the perl interface build into its own makefile
that now functions as a wrapper around the MakeMaker stuff. It might even behave sensically when we have separate build dirs. Same for plperl, which of course still doesn't work very well. Made sure that plperl respects the choice of --libdir. Added --with-python to automatically build and install the Python interface. Works similarly to the Perl5 stuff. Moved the burden of the distclean targets lower down into the source tree. Eventually, each make file should have its own. Added automatic remaking of makefiles and configure. Currently only for the top-level because of a bug(?) in Autoconf. Use GNU `missing' to work around missing autoconf and aclocal. Start factoring out macros into their own config/*.m4 files to increase readability and organization.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile48
1 files changed, 34 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 8fbbcbdac2..3091774d74 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,36 @@
-# The Postgres make files exploit features of GNU make that other makes
-# do not have. Because it is a common mistake for users to try to build
-# Postgres with a different make, we have this make file that does nothing
-# but tell the user to use GNU make.
+# The PostgreSQL make files exploit features of GNU make that other
+# makes do not have. Because it is a common mistake for users to try
+# to build Postgres with a different make, we have this make file
+# that, as a service, will look for a GNU make and invoke it, or show
+# an error message if none could be found.
-# If the user were using GNU make now, this file would not get used because
-# GNU make uses a make file named "GNUmakefile" in preference to "Makefile"
-# if it exists. Postgres is shipped with a "GNUmakefile".
+# If the user were using GNU make now, this file would not get used
+# because GNU make uses a make file named "GNUmakefile" in preference
+# to "Makefile" if it exists. PostgreSQL is shipped with a
+# "GNUmakefile". If the user hasn't run the configure script yet, the
+# GNUmakefile won't exist yet, so we catch that case as well.
-all install clean dep depend distclean:
- @echo "You must use GNU make to use Postgres. It may be installed"
- @echo "on your system with the name 'gmake'."
- @echo
- @echo "NOTE: If you are sure that you are using GNU make and you are"
- @echo " still getting this message, you may simply need to run"
- @echo " the configure program."
+
+all install clean dep depend distclean maintainer-clean:
+ @if ! [ -f GNUmakefile ] ; then \
+ echo "You need to run the \`configure' program fist. See the file"; \
+ echo "\`INSTALL' for installation instructions." ; \
+ false ; \
+ fi
+ @IFS=':' ; \
+ for dir in $$PATH; do \
+ for prog in gmake gnumake make; do \
+ if [ -f $$dir/$$prog ] && ( $$dir/$$prog --version | grep GNU >/dev/null 2>&1 ) ; then \
+ GMAKE=$$dir/$$prog; \
+ break 2; \
+ fi; \
+ done; \
+ done; \
+ \
+ if [ x"$${GMAKE+set}" = xset ]; then \
+ echo "Using GNU make found at $${GMAKE}"; \
+ $${GMAKE} ; \
+ else \
+ echo "You must use GNU make to build PostgreSQL." ; \
+ false; \
+ fi