mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-09 08:10:09 +08:00
a76200de84
FreeBSD's make, for one, sets the MAKELEVEL environment variable when invoking commands. In the special Makefile we provide to hand off control from a non-GNU make to GNU make, this causes GNU make to think it is a child make invocation rather than top-level. That interferes with the hack added in commitdcae5facc
to cause the temp-install tree to be made only by the top-level invocation of gmake. Unset the variable to prevent that. Likewise unset MAKEFLAGS, which FreeBSD's make also sets, and which could easily confuse gmake. There are no reports of actual trouble from that, but it seems better to be proactive. Back-patch to 9.5 wheredcae5facc
came in. Thomas Munro, hacked a bit more by me Discussion: https://postgr.es/m/CAEepm=1ueww35AXTkt1A3gyzZUqv5XCzh8RUNvJZAQAW=eOhVw@mail.gmail.com
38 lines
1.5 KiB
Makefile
38 lines
1.5 KiB
Makefile
# 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. 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 check install installdirs installcheck installcheck-parallel uninstall clean distclean maintainer-clean dist distcheck world check-world install-world installcheck-world:
|
|
@if [ ! -f GNUmakefile ] ; then \
|
|
echo "You need to run the 'configure' program first. 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 -f /dev/null --version 2>/dev/null | 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}"; \
|
|
unset MAKEFLAGS; unset MAKELEVEL; \
|
|
$${GMAKE} $@ ; \
|
|
else \
|
|
echo "You must use GNU make to build PostgreSQL." ; \
|
|
false; \
|
|
fi
|