# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.92 2000/08/31 16:09:22 petere Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, # which in turn are put here by the configure script. There is no need for # users to edit this file -- if it turns out to be necessary then that's a # bug. # # A makefile that includes this file needs to set the variable `subdir' to # the relative path from the top to itself and `top_builddir' to the relative # path from itself to the top before including this file. (The "top" is the # parent directory of the directory this file is in.) #------------------------------------------------------------------------------ # PostgreSQL version number VERSION = @VERSION@ # This should be changed once we have separate build dirs. top_srcdir = $(top_builddir) ifeq ($(top_builddir), $(top_srcdir)) srcdir = . else srcdir = $(top_srcdir)/$(subdir) endif VPATH = $(srcdir) ############################################################################## # # CONFIGURATION SECTION # # Following are settings pertaining to the postgres build and # installation. # of the port. # # Ignore BSD_SHLIB if you're not using one of the BSD ports. But if you # are, and it's one that doesn't have shared libraries (NetBSD/vax is an # example of this), set BSD_SHLIB to null in Makefile.custom. BSD_SHLIB= true # This is mainly for use on FreeBSD, where we have both a.out and elf # systems now. May be applicable to other systems to? ELF_SYSTEM= @ELF_SYS@ libpq_srcdir = $(top_srcdir)/src/interfaces/libpq libpq_builddir = $(top_builddir)/src/interfaces/libpq libpq = -L$(libpq_builddir) -lpq libpgeasy_srcdir = $(top_srcdir)/src/interfaces/libpgeasy libpgeasy_builddir = $(top_builddir/src/interfaces/libpgeasy libpgeasy = -L$(libpgeasy_builddir) -lpgeasy # installation directories prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ includedir = @includedir@ mandir = @mandir@ docdir = @docdir@ odbcinst_ini_dir = @odbcinst_ini_dir@ ############################################################################## # # FEATURES # # To disable a feature, comment out the entire definition # (that is, prepend '#', don't set it to "0" or "no"). # Comment out PROFILE to generate a profile version of the binaries #PROFILE= -p -non_shared with_CXX = @with_CXX@ with_perl = @with_perl@ enable_odbc = @enable_odbc@ with_python = @with_python@ PYTHON = @PYTHON@ python_extmakefile = @python_extmakefile@ python_moduledir = @python_moduledir@ krb_srvtab = @krb_srvtab@ # # Please do not edit USE_TCL and USE_TK by hand. # USE_TCL= @USE_TCL@ USE_TK= @USE_TK@ WISH= @WISH@ TCL_CONFIG_SH = @TCL_CONFIG_SH@ TK_CONFIG_SH = @TK_CONFIG_SH@ X_CFLAGS= @X_CFLAGS@ X_LIBS= @X_LIBS@ X11_LIBS= -lX11 @X_EXTRA_LIBS@ # flag whether multibyte is on/off MULTIBYTE=@MULTIBYTE@ ############################################################################## # # Installation. # INSTALL= @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SHLIB = @INSTALL_SHLIB@ mkinstalldirs = @mkinstalldirs@ missing = $(top_srcdir)/config/missing RANLIB= @RANLIB@ #------------------------------------------------------------- # See the subdirectory template for default settings for these #------------------------------------------------------------- CC= @CC@ CPP= @CPP@ YACC= @YACC@ YFLAGS = @YFLAGS@ FLEX = @FLEX@ FLEXFLAGS = @FLEXFLAGS@ $(LFLAGS) AROPT= @AROPT@ CPPFLAGS = @CPPFLAGS@ CFLAGS = -I$(top_srcdir)/src/include $(CPPFLAGS) @CFLAGS@ CFLAGS_SL= @SHARED_LIB@ LIBS= @LIBS@ LDFLAGS= @LDFLAGS@ $(LIBS) KRB_LIBS = @KRB_LIBS@ LDREL= -r LDOUT= -o DLSUFFIX= @DLSUFFIX@ LN_S= @LN_S@ TAR= @tar@ PERL = @PERL@ AWK = @AWK@ CXX=@CXX@ CXXFLAGS=@CXXFLAGS@ @INCLUDES@ GCC = @GCC@ ############################################################################## # # Additional platform-specific settings # # Name of the target platform. PORTNAME= @PORTNAME@ CPU= @CPU@ # Various grungy items needed to configure some platforms. HAVE_POSIX_SIGNALS= @HAVE_POSIX_SIGNALS@ HPUXMATHLIB= @HPUXMATHLIB@ include $(top_builddir)/src/Makefile.port ############################################################################## # # Customization. # # This includes your local customizations if Makefile.custom exists # in the source directory. This file doesn't exist in the original # distribution so that it doesn't get overwritten when you upgrade. -include $(top_srcdir)/src/Makefile.custom # This goes here so that customization in Makefile.custom is effective ############################################################################## ifneq ($(CUSTOM_INSTALL),) INSTALL= $(CUSTOM_INSTALL) endif # # Flags for CC and LD. ############################################################################## # COPT # # COPT is for options that the sophisticated builder might want to vary # from one build to the next, like options to build Postgres with debugging # information included. COPT is meant to be set on the make command line, # for example with the command "make COPT=-g". The value you see set here # is the default that gets used if the builder does not give a value for # COPT on his make command. # # There is a nonobvious relationship between -O (optimization) and # -Werror (consider all warnings fatal). On some systems, if you don't # optimize, you will always get some warnings because the system header # files will include some unreferenced functions in the code. These are # functions that are supposed to be inline, so there wouldn't ordinarily # be an "unreferenced" problem, but if you don't enable optimization, no # inlining can happen, and hence the problem. Therefore, we include # if you override -O, you override -Werror as well. # # CUSTOM_COPT is something the user may set in Makefile.custom # Common values for COPT are: -g for debuggable binaries, -m486 if you are # using a i486 or better. ifneq ($(CUSTOM_CC),) CC= $(CUSTOM_CC) endif ifneq ($(CUSTOM_COPT),) COPT= $(CUSTOM_COPT) endif ifdef COPT CFLAGS+= $(COPT) LDFLAGS+= $(COPT) endif ifdef PROFILE CFLAGS+= $(PROFILE) LDFLAGS+= $(PROFILE) endif # substitute implementations of the C library INET_ATON = @INET_ATON@ STRERROR = @STRERROR@ STRERROR2 = @STRERROR2@ SNPRINTF = @SNPRINTF@ STRDUP = @STRDUP@ .PHONY: all install installdirs uninstall dep depend clean distclean maintainer-clean distprep .SILENT: installdirs # make `all' the default target all: # Remake Makefile.global from Makefile.global.in if the latter # changed. In order to trigger this rule, the including file must # write `include $(top_builddir)/src/Makefile.global', not some # shortcut thereof. $(top_builddir)/src/Makefile.global: $(top_srcdir)/src/Makefile.global.in $(top_builddir)/config.status cd $(top_builddir) && CONFIG_FILES=src/Makefile.global CONFIG_HEADERS= ./config.status # Remake config.h from config.h.in if the latter changed. # config.status will not change the timestamp on config.h if it # doesn't change, so as to avoid recompiling the entire tree # unnecessarily. Therefore config.status will update a timestamp file # everytime it runs so that we don't trigger this rule everytime. # # Of course you need to turn on dependency tracking to get any # dependencies on config.h $(top_builddir)/src/include/config.h: $(top_builddir)/src/include/stamp-h $(top_builddir)/src/include/stamp-h: $(top_srcdir)/src/include/config.h.in $(top_builddir)/config.status cd $(top_builddir) && CONFIG_FILES= CONFIG_HEADERS=src/include/config.h ./config.status # When configure changes, rerun configure with the same options as # last time. To change configure, you need to run autoconf manually. $(top_builddir)/config.status: $(top_srcdir)/configure cd $(top_builddir) && ./config.status --recheck COMPILE.c = $(CC) -c $(CPPFLAGS) $(CFLAGS) # Automatic dependency generation # ------------------------------- # When we configure with --enable-depend then we override the default # compilation rule with the magic below. While or after creating the # actual output file we also create a dependency list for the .c file. # Next time we invoke make we will have top-notch information about # whether this file needs to be updated. The dependency files are kept # in the .deps subdirectory of each directory. # # The sed command is necessary to post-process the dependency file: # Each dependency file becomes a target of its own, without # dependencies or commands. This is because if you happen to remove a # file that is a dependency (say, you rename a header file) the # dependency would point to a non-existing file and make would fail. # But if the file is listed as a target of its own, without # prerequisites and commands, and doesn't exist then make will # consider it updated. (That in turn also has the nice side effect # that make will update all files that depended on the now removed # file.) autodepend = @autodepend@ ifdef autodepend DEPDIR = .deps df = $(DEPDIR)/$(*F) ifeq ($(GCC), yes) # GCC allows us to create object and dependency file in one invocation. %.o : %.c $(COMPILE.c) -MMD $< -o $@ @if test ! -d $(DEPDIR); then mkdir $(DEPDIR); fi; \ cp $*.d $(df).P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $(df).P; \ rm -f $*.d endif # GCC # Include all the dependency files generated for the current # directory. List /dev/null as dummy because if the wildcard expands # to nothing then make would complain. -include $(wildcard $(DEPDIR)/*.P) /dev/null # hook for clean-up clean distclean maintainer-clean: clean-deps .PHONY: clean-deps clean-deps: @rm -rf $(DEPDIR) endif # autodepend