summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2014-02-11 12:10:52 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2014-02-11 12:10:52 -0500
commitcba6ffaef3987211fb31ba869eb2a476bad6f6d3 (patch)
tree2ec0ab52588aebf60627d4dc062ed787892c8bbc /src
parentd3c4c471553265e7517be24bae64b81967f6df40 (diff)
Cygwin build fixes.
Get rid of use of dlltool for linking the main postgres executable. dlltool is obsolete and we'd prefer to stop depending on it. Also, include $(LDAP_LIBS_FE) in $(libpq_pgport). (It's not clear that this is really needed, or why it's not a linker bug if it is needed. But reports are that it's needed on current Cygwin.) We might want to back-patch this if it works, but first let's see what the buildfarm thinks. Marco Atzeri
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.global.in7
-rw-r--r--src/backend/Makefile20
2 files changed, 15 insertions, 12 deletions
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index e0e9b793a25..209d1bdf4dc 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -415,7 +415,12 @@ else
libpq_pgport = -L$(top_builddir)/src/common -lpgcommon -L$(top_builddir)/src/port -lpgport $(libpq)
endif
-# If PGXS is not defined, build libpq and libpgport dependancies as required.
+# Cygwin seems to need ldap libraries to be mentioned here, too
+ifeq ($(PORTNAME),cygwin)
+libpq_pgport += $(LDAP_LIBS_FE)
+endif
+
+# If PGXS is not defined, build libpq and libpgport dependencies as required.
# If the build is with PGXS, then these are supposed to be already built and
# installed, and we just ensure that the expected files exist.
ifndef PGXS
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 356890df3eb..8afb1893fd1 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -62,18 +62,16 @@ endif
ifeq ($(PORTNAME), cygwin)
-postgres: $(OBJS) postgres.def libpostgres.a
- $(DLLTOOL) --dllname $@$(X) --output-exp $@.exp --def postgres.def
- $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(call expand_subsys,$(OBJS)) $(LIBS)
- $(DLLTOOL) --dllname $@$(X) --base-file $@.base --output-exp $@.exp --def postgres.def
- $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -Wl,--stack,$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(call expand_subsys,$(OBJS)) $(LIBS)
- rm -f $@.exp $@.base
+postgres: $(OBJS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(export_dynamic) -Wl,--stack,$(WIN32_STACK_RLIMIT) -Wl,--export-all-symbols -Wl,--out-implib=libpostgres.a $(call expand_subsys,$^) $(LIBS) -o $@
-postgres.def: $(OBJS)
- $(DLLTOOL) --export-all --output-def $@ $(call expand_subsys,$^)
+# There is no correct way to write a rule that generates two files.
+# Rules with two targets don't have that meaning, they are merely
+# shorthand for two otherwise separate rules. To be safe for parallel
+# make, we must chain the dependencies like this. The semicolon is
+# important, otherwise make will choose some built-in rule.
-libpostgres.a: postgres.def
- $(DLLTOOL) --dllname postgres.exe --def postgres.def --output-lib $@
+libpostgres.a: postgres ;
endif # cygwin
@@ -295,7 +293,7 @@ clean:
$(top_builddir)/src/include/utils/fmgroids.h \
$(top_builddir)/src/include/utils/probes.h
ifeq ($(PORTNAME), cygwin)
- rm -f postgres.dll postgres.def libpostgres.a
+ rm -f postgres.dll libpostgres.a
endif
ifeq ($(PORTNAME), win32)
rm -f postgres.dll postgres.def libpostgres.a $(WIN32RES)