1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-19 13:42:17 +03:00

Improved parallel make support

Replace for loops in makefiles with proper dependencies.  Parallel
make can now span across directories.  Also, make -k and make -q work
properly.

GNU make 3.80 or newer is now required.
This commit is contained in:
Peter Eisentraut
2010-11-12 22:15:16 +02:00
parent d6754f67b0
commit 19e231bbda
30 changed files with 156 additions and 179 deletions

View File

@@ -14,5 +14,4 @@ include $(top_builddir)/src/Makefile.global
SUBDIRS = libpq ecpg
all install installdirs uninstall distprep clean distclean maintainer-clean:
@for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
$(recurse)

View File

@@ -2,19 +2,13 @@ subdir = src/interfaces/ecpg
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
all install installdirs uninstall distprep:
$(MAKE) -C include $@
$(MAKE) -C pgtypeslib $@
$(MAKE) -C ecpglib $@
$(MAKE) -C compatlib $@
$(MAKE) -C preproc $@
SUBDIRS = include pgtypeslib ecpglib compatlib preproc
$(recurse)
all-compatlib-recursive: all-ecpglib-recursive
clean distclean maintainer-clean:
$(MAKE) -C include $@
$(MAKE) -C pgtypeslib $@
$(MAKE) -C ecpglib $@
$(MAKE) -C compatlib $@
$(MAKE) -C preproc $@
$(MAKE) -C test clean
check checktcp installcheck: all

View File

@@ -23,6 +23,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) \
$(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
SHLIB_PREREQS = submake-ecpglib submake-pgtypeslib
SHLIB_EXPORTS = exports.txt
@@ -33,6 +34,14 @@ OBJS= informix.o $(filter snprintf.o, $(LIBOBJS))
all: all-lib
.PHONY: submake-ecpglib submake-pgtypeslib
submake-ecpglib:
$(MAKE) -C $(top_builddir)/src/interfaces/ecpg/ecpglib all
submake-pgtypeslib:
$(MAKE) -C $(top_builddir)/src/interfaces/ecpg/pgtypeslib all
# Shared library stuff
include $(top_srcdir)/src/Makefile.shlib

View File

@@ -34,6 +34,7 @@ OBJS += thread.o
endif
SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
SHLIB_PREREQS = submake-libpq submake-pgtypeslib
SHLIB_EXPORTS = exports.txt
@@ -42,12 +43,10 @@ ifeq ($(PORTNAME), win32)
SHLIB_LINK += -lshfolder
endif
all: libpq pgtypeslib all-lib
all: all-lib
libpq:
$(MAKE) -C $(top_builddir)/src/interfaces/libpq all
pgtypeslib:
.PHONY: submake-pgtypeslib
submake-pgtypeslib:
$(MAKE) -C $(top_builddir)/src/interfaces/ecpg/pgtypeslib all
# Shared library stuff

View File

@@ -30,11 +30,14 @@ OBJS= preproc.o type.o ecpg.o output.o parser.o \
keywords.o c_keywords.o ecpg_keywords.o kwlookup.o ../ecpglib/typename.o descriptor.o variable.o \
$(WIN32RES)
all: submake-libpgport ecpg
all: ecpg
ecpg: $(OBJS)
ecpg: $(OBJS) | submake-libpgport
$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $^ $(LIBS) $(PTHREAD_LIBS) -o $@$(X)
../ecpglib/typename.o: ../ecpglib/typename.c
$(MAKE) -C $(dir $@) $(notdir $@)
# pgc is compiled as part of preproc
preproc.o: pgc.c