mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-24 03:37:18 +02:00
305 lines
8.2 KiB
Makefile
305 lines
8.2 KiB
Makefile
#-------------------------------------------------------------------------
|
|
#
|
|
# Makefile--
|
|
# Makefile for the postgres backend (and the postmaster)
|
|
#
|
|
# Copyright (c) 1994, Regents of the University of California
|
|
#
|
|
# Functional notes:
|
|
#
|
|
# Parallel make:
|
|
#
|
|
# This make file is set up so that you can do a parallel make (with
|
|
# the --jobs option of make) and make multiple subdirectories at
|
|
# once.
|
|
#
|
|
# However, the subdirectory make files are not so careful.
|
|
# Normally, the --jobs option would get passed down to those
|
|
# subdirectory makes, like any other make option, and they would
|
|
# fail. But there's a trick: Put a value (max number of
|
|
# processes) on the --jobs option, e.g. --jobs=4. Now, due to a
|
|
# special feature of make, the --jobs option will not get passed
|
|
# to the subdirectory makes. (make does this because if you only
|
|
# want 4 tasks running, then splitting the subdirectory makes into
|
|
# multiple tasks would violate your wishes).
|
|
#
|
|
#
|
|
#
|
|
# Implementation notes:
|
|
#
|
|
# We don't use $(LD) for linking. We use $(CC) instead. This is because
|
|
# the $(CC) program apparently can do linking too, and it has certain
|
|
# thinks like default options and search paths for libraries set up for
|
|
# it that the more primitive $(LD) doesn't have.
|
|
#
|
|
#
|
|
# IDENTIFICATION
|
|
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.15 1996/11/12 06:46:04 bryanh Exp $
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
|
|
SRCDIR = ..
|
|
include ../Makefile.global
|
|
|
|
|
|
##########################################################################
|
|
# Determine linker flags for this platform (mainly, the libraries with
|
|
# which to link).
|
|
##########################################################################
|
|
|
|
# All systems except NEXTSTEP require the math library.
|
|
# Loader flags for system-dependent libraries are appended in
|
|
# src/backend/port/$(PORTNAME)/Makefile.inc
|
|
#
|
|
ifneq ($(PORTNAME), next)
|
|
LDADD+= -lm
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), aix)
|
|
LDADD+= -ll -lld
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), alpha)
|
|
LDADD+= -lln
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), bsdi)
|
|
ifeq ($(PRE_BSDI_2_1), false)
|
|
LDADD+= -ldl -lipc
|
|
else
|
|
LDADD+= -ldld -lipc
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), hpux)
|
|
# HP-UX needs:
|
|
# -W l,-E export symbols for linking with the shared libraries
|
|
# dynamic loader
|
|
# -W p,-H400000 expand cpp #define table size so the Nodes files don't
|
|
# break it
|
|
#
|
|
# -W p,-H400000
|
|
ifeq ($(CC), cc)
|
|
CFLAGS+= -W l,-E
|
|
LDFLAGS+= -W l,-E
|
|
LDADD+= -ll -ldld
|
|
else
|
|
ifeq ($(CC), gcc)
|
|
LDADD+= -ll /usr/lib/libdld.sl
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), i386_solaris)
|
|
LDADD+= -ll -ldl
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), irix5)
|
|
LDADD+= -ll
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), linux)
|
|
ifdef LINUX_ELF
|
|
LDADD+= -ldl
|
|
else
|
|
LDADD+= -ldld
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), sparc)
|
|
LDADD+= -lln -ldl
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), sparc_solaris)
|
|
LDADD+= -ll -ldl
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), svr4)
|
|
LDADD+= -ll -ldl
|
|
# the following is special for Reliant UNIX SVR4 (formerly SINIX)
|
|
LDFLAGS+= -LD-Blargedynsym
|
|
endif
|
|
|
|
ifeq ($(PORTNAME), ultrix4)
|
|
LDADD+= -ldl -lln
|
|
endif
|
|
|
|
#############################################################################
|
|
|
|
OBJS = access/SUBSYS.o bootstrap/SUBSYS.o catalog/SUBSYS.o \
|
|
commands/SUBSYS.o executor/SUBSYS.o \
|
|
lib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o \
|
|
optimizer/SUBSYS.o parser/SUBSYS.o port/SUBSYS.o \
|
|
postmaster/SUBSYS.o regex/SUBSYS.o rewrite/SUBSYS.o \
|
|
storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o \
|
|
../utils/version.o
|
|
|
|
ifdef TIOGA
|
|
OBJS += tioga/SUBSYS.o
|
|
endif
|
|
|
|
all: postgres global1.bki.source local1_template1.bki.source
|
|
|
|
postgres: postgres_group1 postgres_group2 postgres_group3 postgres_group4
|
|
$(CC) $(LDFLAGS) -o postgres $(OBJS) $(LDADD)
|
|
|
|
postgres_group1:
|
|
$(MAKE) -C access all
|
|
$(MAKE) -C bootstrap all
|
|
$(MAKE) -C catalog SUBSYS.o
|
|
$(MAKE) -C commands all
|
|
postgres_group2:
|
|
$(MAKE) -C executor all
|
|
$(MAKE) -C lib all
|
|
$(MAKE) -C libpq all
|
|
$(MAKE) -C main all
|
|
$(MAKE) -C nodes all
|
|
postgres_group3:
|
|
$(MAKE) -C optimizer all
|
|
$(MAKE) -C parser all
|
|
$(MAKE) -C port all PORTNAME=$(PORTNAME)
|
|
$(MAKE) -C postmaster all
|
|
$(MAKE) -C regex all
|
|
postgres_group4:
|
|
$(MAKE) -C rewrite all
|
|
$(MAKE) -C storage all
|
|
$(MAKE) -C tcop all
|
|
$(MAKE) -C utils all
|
|
ifdef TIOGA
|
|
$(MAKE) -C tioga all
|
|
endif
|
|
$(MAKE) -C ../utils version.o
|
|
|
|
global1.bki.source local1_template1.bki.source:
|
|
$(MAKE) -C catalog $@
|
|
cp catalog/$@ .
|
|
|
|
|
|
############################################################################
|
|
# The following targets are specified in make commands that appear in the
|
|
# make files in our subdirectories.
|
|
|
|
parse.h:
|
|
$(MAKE) -C parser parse.h
|
|
cp parser/parse.h .
|
|
|
|
fmgr.h:
|
|
$(MAKE) -C utils fmgr.h
|
|
cp utils/fmgr.h .
|
|
|
|
#############################################################################
|
|
clean:
|
|
rm -f postgres fmgr.h parse.h \
|
|
global1.bki.source local1_template1.bki.source
|
|
$(MAKE) -C access clean
|
|
$(MAKE) -C bootstrap clean
|
|
$(MAKE) -C catalog clean
|
|
$(MAKE) -C commands clean
|
|
$(MAKE) -C executor clean
|
|
$(MAKE) -C lib clean
|
|
$(MAKE) -C libpq clean
|
|
$(MAKE) -C main clean
|
|
$(MAKE) -C nodes clean
|
|
$(MAKE) -C optimizer clean
|
|
$(MAKE) -C parser clean
|
|
$(MAKE) -C port clean PORTNAME=$(PORTNAME)
|
|
$(MAKE) -C postmaster clean
|
|
$(MAKE) -C regex clean
|
|
$(MAKE) -C rewrite clean
|
|
$(MAKE) -C storage clean
|
|
$(MAKE) -C tcop clean
|
|
$(MAKE) -C utils clean
|
|
ifdef TIOGA
|
|
$(MAKE) -C tioga clean
|
|
endif
|
|
|
|
.DEFAULT:
|
|
$(MAKE) -C access $@
|
|
$(MAKE) -C bootstrap $@
|
|
$(MAKE) -C catalog $@
|
|
$(MAKE) -C commands $@
|
|
$(MAKE) -C executor $@
|
|
$(MAKE) -C lib $@
|
|
$(MAKE) -C libpq $@
|
|
$(MAKE) -C main $@
|
|
$(MAKE) -C nodes $@
|
|
$(MAKE) -C optimizer $@
|
|
$(MAKE) -C parser $@
|
|
$(MAKE) -C port $@ PORTNAME=$(PORTNAME)
|
|
$(MAKE) -C postmaster $@
|
|
$(MAKE) -C regex $@
|
|
$(MAKE) -C rewrite $@
|
|
$(MAKE) -C storage $@
|
|
$(MAKE) -C tcop $@
|
|
$(MAKE) -C utils $@
|
|
ifdef TIOGA
|
|
$(MAKE) -C tioga $@
|
|
endif
|
|
|
|
|
|
#############################################################################
|
|
#
|
|
# Installation.
|
|
#
|
|
# Install the backend program (postgres) to the binary directory and
|
|
# make a link as "postmaster". Install the bki files templates and sample
|
|
# files to the library directory.
|
|
#
|
|
# (History: Before Release 2, make install generated a bki.source file
|
|
# and then used build parameters to convert it to a bki file, then installed
|
|
# that bki file in the /files subdirectory of the default data directory.
|
|
# Initdb then used the bki file to generate the database catalog classes.
|
|
# That had to change because (1) there can be more than one database system,
|
|
# and (2) the parameters of a database system should be set at initdb time,
|
|
# not at postgres build time.
|
|
|
|
D_LIBDIR = $(DESTDIR)$(LIBDIR)
|
|
D_BINDIR = $(DESTDIR)$(BINDIR)
|
|
|
|
install: $(D_LIBDIR) $(D_BINDIR) $(HEADERDIR) postgres fmgr.h\
|
|
global1.bki.source local1_template1.bki.source \
|
|
libpq/pg_hba.conf.sample
|
|
|
|
$(INSTALL) $(INSTL_EXE_OPTS) postgres $(D_BINDIR)/postgres
|
|
@rm -f $(D_BINDIR)/postmaster
|
|
cd $(D_BINDIR); ln -s postgres postmaster
|
|
$(INSTALL) $(INSTLOPTS) fmgr.h $(HEADERDIR)/fmgr.h
|
|
$(INSTALL) $(INSTLOPTS) global1.bki.source \
|
|
$(D_LIBDIR)/global1.bki.source
|
|
$(INSTALL) $(INSTLOPTS) local1_template1.bki.source \
|
|
$(D_LIBDIR)/local1_template1.bki.source
|
|
$(INSTALL) $(INSTLOPTS) libpq/pg_hba.conf.sample \
|
|
$(D_LIBDIR)/pg_hba.conf.sample
|
|
|
|
$(D_BINDIR) $(D_LIBDIR) $(HEADERDIR):
|
|
mkdir $@
|
|
|
|
#############################################################################
|
|
#
|
|
# Support for code development.
|
|
#
|
|
# Use target "quick" to build "postgres" when you know all the subsystems
|
|
# are up to date. It saves the time of doing all the submakes.
|
|
.PHONY: quick
|
|
quick: $(OBJS)
|
|
$(CC) $(LDFLAGS) -o postgres $(OBJS) $(LDADD)
|
|
|
|
#
|
|
# Build the file, "./ID", used by the "gid" (grep-for-identifier) tool
|
|
#
|
|
IDFILE= ID
|
|
.PHONY: $(IDFILE)
|
|
$(IDFILE):
|
|
./makeID $(PORTNAME)
|
|
|
|
#
|
|
# Special rule to generate cpp'd version of a .c file. This is
|
|
# especially useful given all the hellish macro processing going on.
|
|
# The cpp'd version has a .C suffix. To create foo.C from foo.c, just
|
|
# type
|
|
# make foo.C
|
|
#
|
|
%.cpp: %.c
|
|
$(CC) -E $(CFLAGS) $(<:.C=.c) | cat -s | cb | tr -s '\012*' '\012' \
|
|
> $(@F)
|