From 13f96c4b6bc59f25ce430ad987cd0881284b6e76 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 21 May 2004 20:56:50 +0000 Subject: [PATCH] Put path configuration information into a .h file instead of cluttering several different module Makefiles with it. Also, do any adjustment of installation paths during configure, rather than every time Makefile.global is read. --- configure | 55 +++++++++++++++++++++++++++++++ configure.in | 55 ++++++++++++++++++++++++++++++- src/Makefile.global.in | 42 ++--------------------- src/backend/utils/fmgr/Makefile | 6 +--- src/interfaces/libpq/Makefile | 12 ++----- src/interfaces/libpq/fe-connect.c | 3 +- src/port/Makefile | 22 ++++++++----- src/port/path.c | 11 ++++--- 8 files changed, 138 insertions(+), 68 deletions(-) diff --git a/configure b/configure index 2c26f110b2..12c5147dae 100755 --- a/configure +++ b/configure @@ -17939,6 +17939,59 @@ CFLAGS="$_CFLAGS" LIBS="$_LIBS" fi +# Adjust installation directories. +# +# These are initially set by the equivalent --xxxdir configure options. +# We append "postgresql" to some of them, if the string does not already +# contain "pgsql" or "postgres", in order to avoid directory clutter. + +if echo "$libexecdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + libexecdir="$libexecdir/postgresql" +fi + +if echo "$datadir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + datadir="$datadir/postgresql" +fi + +if echo "$sysconfdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + sysconfdir="$sysconfdir/postgresql" +fi + +pkglibdir="$libdir" +if echo "$pkglibdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + pkglibdir="$pkglibdir/postgresql" +fi + + +pkgincludedir="$includedir" +if echo "$pkgincludedir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + pkgincludedir="$pkgincludedir/postgresql" +fi + + +if echo "$docdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + docdir="$docdir/postgresql" +fi + + # prepare build tree if outside source tree # Note 1: test -ef might not exist, but it's more reliable than `pwd`. # Note 2: /bin/pwd might be better than shell's built-in at getting @@ -18639,6 +18692,8 @@ s,@have_docbook@,$have_docbook,;t t s,@DOCBOOKSTYLE@,$DOCBOOKSTYLE,;t t s,@COLLATEINDEX@,$COLLATEINDEX,;t t s,@SGMLSPL@,$SGMLSPL,;t t +s,@pkglibdir@,$pkglibdir,;t t +s,@pkgincludedir@,$pkgincludedir,;t t s,@vpath_build@,$vpath_build,;t t CEOF diff --git a/configure.in b/configure.in index d535a6ff2d..5c986125c0 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.356 2004/05/21 05:07:54 tgl Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.357 2004/05/21 20:56:47 tgl Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -1202,6 +1202,59 @@ CFLAGS="$_CFLAGS" LIBS="$_LIBS" fi +# Adjust installation directories. +# +# These are initially set by the equivalent --xxxdir configure options. +# We append "postgresql" to some of them, if the string does not already +# contain "pgsql" or "postgres", in order to avoid directory clutter. + +if echo "$libexecdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + libexecdir="$libexecdir/postgresql" +fi + +if echo "$datadir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + datadir="$datadir/postgresql" +fi + +if echo "$sysconfdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + sysconfdir="$sysconfdir/postgresql" +fi + +pkglibdir="$libdir" +if echo "$pkglibdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + pkglibdir="$pkglibdir/postgresql" +fi +AC_SUBST(pkglibdir) + +pkgincludedir="$includedir" +if echo "$pkgincludedir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + pkgincludedir="$pkgincludedir/postgresql" +fi +AC_SUBST(pkgincludedir) + +if echo "$docdir" | egrep 'pgsql|postgres' >/dev/null 2>&1 +then + : +else + docdir="$docdir/postgresql" +fi + + # prepare build tree if outside source tree # Note 1: test -ef might not exist, but it's more reliable than `pwd`. # Note 2: /bin/pwd might be better than shell's built-in at getting diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 6873ea6fa8..ecbd7d6f0b 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -1,5 +1,5 @@ # -*-makefile-*- -# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.185 2004/05/21 05:07:55 tgl Exp $ +# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.186 2004/05/21 20:56:48 tgl Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, @@ -51,53 +51,22 @@ configure_args = @configure_args@ ########################################################################## # # Installation directories -# -# These are set by the equivalent --xxxdir configure options. We -# append "postgresql" to some of them, if the string does not already -# contain "pgsql" or "postgres", in order to avoid directory clutter. prefix := @prefix@ exec_prefix := @exec_prefix@ bindir := @bindir@ sbindir := @sbindir@ - libexecdir := @libexecdir@ -ifeq "$(findstring pgsql, $(libexecdir))" "" -ifeq "$(findstring postgres, $(libexecdir))" "" -override libexecdir := $(libexecdir)/postgresql -endif -endif datadir := @datadir@ -ifeq "$(findstring pgsql, $(datadir))" "" -ifeq "$(findstring postgres, $(datadir))" "" -override datadir := $(datadir)/postgresql -endif -endif - sysconfdir := @sysconfdir@ -ifeq "$(findstring pgsql, $(sysconfdir))" "" -ifeq "$(findstring postgres, $(sysconfdir))" "" -override sysconfdir := $(sysconfdir)/postgresql -endif -endif libdir := @libdir@ -pkglibdir = $(libdir) -ifeq "$(findstring pgsql, $(pkglibdir))" "" -ifeq "$(findstring postgres, $(pkglibdir))" "" -override pkglibdir := $(pkglibdir)/postgresql -endif -endif +pkglibdir := @pkglibdir@ includedir := @includedir@ -pkgincludedir = $(includedir) -ifeq "$(findstring pgsql, $(pkgincludedir))" "" -ifeq "$(findstring postgres, $(pkgincludedir))" "" -override pkgincludedir := $(pkgincludedir)/postgresql -endif -endif +pkgincludedir := @pkgincludedir@ includedir_server = $(pkgincludedir)/server includedir_internal = $(pkgincludedir)/internal @@ -105,11 +74,6 @@ mandir := @mandir@ sqlmansect_dummy = l docdir := @docdir@ -ifeq "$(findstring pgsql, $(docdir))" "" -ifeq "$(findstring postgres, $(docdir))" "" -override docdir := $(docdir)/postgresql -endif -endif localedir := @localedir@ diff --git a/src/backend/utils/fmgr/Makefile b/src/backend/utils/fmgr/Makefile index 37b6d03e23..6fcd0d1a15 100644 --- a/src/backend/utils/fmgr/Makefile +++ b/src/backend/utils/fmgr/Makefile @@ -4,7 +4,7 @@ # Makefile for utils/fmgr # # IDENTIFICATION -# $PostgreSQL: pgsql/src/backend/utils/fmgr/Makefile,v 1.16 2004/05/17 14:35:31 momjian Exp $ +# $PostgreSQL: pgsql/src/backend/utils/fmgr/Makefile,v 1.17 2004/05/21 20:56:49 tgl Exp $ # #------------------------------------------------------------------------- @@ -24,7 +24,3 @@ SUBSYS.o: $(OBJS) clean: rm -f SUBSYS.o $(OBJS) - - -# ensure that changes in PKGLIBDIR propagate to dfmgr.o -dfmgr.o: dfmgr.c $(top_builddir)/src/Makefile.global diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile index 7e2a4097fb..352f61107b 100644 --- a/src/interfaces/libpq/Makefile +++ b/src/interfaces/libpq/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $PostgreSQL: pgsql/src/interfaces/libpq/Makefile,v 1.107 2004/05/19 04:21:49 momjian Exp $ +# $PostgreSQL: pgsql/src/interfaces/libpq/Makefile,v 1.108 2004/05/21 20:56:49 tgl Exp $ # #------------------------------------------------------------------------- @@ -18,14 +18,8 @@ NAME= pq SO_MAJOR_VERSION= 3 SO_MINOR_VERSION= 2 -override CPPFLAGS := -I$(srcdir) $(CPPFLAGS) $(PTHREAD_CFLAGS) -DFRONTEND -DSYSCONFDIR='"$(sysconfdir)"' -override CFLAGS += $(PTHREAD_CFLAGS) \ - -DPGBINDIR=\"$(bindir)\" \ - -DPGDATADIR=\"$(datadir)\" \ - -DSYSCONFDIR='"$(sysconfdir)"' \ - -DINCLUDEDIR=\"$(includedir)\" \ - -DPKGINCLUDEDIR=\"$(pkgincludedir)\" \ - -DPKGLIBDIR=\"$(pkglibdir)\" +override CPPFLAGS := -I$(srcdir) $(CPPFLAGS) -I$(top_builddir)/src/port -DFRONTEND +override CFLAGS += $(PTHREAD_CFLAGS) OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \ fe-protocol2.o fe-protocol3.o pqexpbuffer.o pqsignal.o fe-secure.o \ diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index b94504c03b..828a8452a1 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.269 2004/03/24 03:44:59 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.270 2004/05/21 20:56:49 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -29,6 +29,7 @@ #include "libpq-fe.h" #include "libpq-int.h" #include "fe-auth.h" +#include "pg_config_paths.h" #ifdef WIN32 #include "win32.h" diff --git a/src/port/Makefile b/src/port/Makefile index fc84d57260..a7eafdf8ee 100644 --- a/src/port/Makefile +++ b/src/port/Makefile @@ -7,7 +7,7 @@ # with broken/missing library files. # IDENTIFICATION -# $PostgreSQL: pgsql/src/port/Makefile,v 1.11 2004/05/17 14:35:34 momjian Exp $ +# $PostgreSQL: pgsql/src/port/Makefile,v 1.12 2004/05/21 20:56:50 tgl Exp $ # #------------------------------------------------------------------------- @@ -15,13 +15,6 @@ subdir = src/port top_builddir = ../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS += -DPGBINDIR=\"$(bindir)\" \ - -DPGDATADIR=\"$(datadir)\" \ - -DSYSCONFDIR='"$(sysconfdir)"' \ - -DINCLUDEDIR=\"$(includedir)\" \ - -DPKGINCLUDEDIR=\"$(pkgincludedir)\" \ - -DPKGLIBDIR=\"$(pkglibdir)\" - ifdef LIBOBJS all: libpgport.a endif @@ -32,5 +25,16 @@ libpgport.a: $(LIBOBJS) thread.o: thread.c $(CC) $(CFLAGS) $(CPPFLAGS) $(PTHREAD_CFLAGS) -c $< +path.o: path.c pg_config_paths.h + +# Dependency is to ensure that path changes propagate +pg_config_paths.h: $(top_builddir)/src/Makefile.global + echo "#define PGBINDIR \"$(bindir)\"" >$@ + echo "#define PGSHAREDIR \"$(datadir)\"" >>$@ + echo "#define SYSCONFDIR \"$(sysconfdir)\"" >>$@ + echo "#define INCLUDEDIR \"$(includedir)\"" >>$@ + echo "#define PKGINCLUDEDIR \"$(pkgincludedir)\"" >>$@ + echo "#define PKGLIBDIR \"$(pkglibdir)\"" >>$@ + clean distclean maintainer-clean: - rm -f libpgport.a $(LIBOBJS) + rm -f libpgport.a $(LIBOBJS) pg_config_paths.h diff --git a/src/port/path.c b/src/port/path.c index a8f53bd895..616be999b1 100644 --- a/src/port/path.c +++ b/src/port/path.c @@ -8,14 +8,18 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/path.c,v 1.10 2004/05/19 04:21:49 momjian Exp $ + * $PostgreSQL: pgsql/src/port/path.c,v 1.11 2004/05/21 20:56:50 tgl Exp $ * *------------------------------------------------------------------------- */ #include "c.h" + #include +#include "pg_config_paths.h" + + #ifndef WIN32 #define ISSEP(ch) ((ch) == '/') #else @@ -109,16 +113,15 @@ get_progname(const char *argv0) void get_share_path(const char *my_exec_path, char *ret_path) { - if (relative_path(PGBINDIR, PGDATADIR)) + if (relative_path(PGBINDIR, PGSHAREDIR)) { - /* Autoconf calls our /share 'datadir' */ StrNCpy(ret_path, my_exec_path, MAXPGPATH); trim_directory(ret_path); /* trim off binary */ trim_directory(ret_path); /* trim off /bin */ strcat(ret_path, "/share"); /* add /share */ } else - StrNCpy(ret_path, PGDATADIR, MAXPGPATH); + StrNCpy(ret_path, PGSHAREDIR, MAXPGPATH); }