Skip to content

Commit

Permalink
Don't use deprecated dllwrap on Cygwin.
Browse files Browse the repository at this point in the history
The preferred method is to use "cc -shared", and this allows binaries
to be rebased if required, unlike dllwrap.

Backpatch to 9.0 where we have buildfarm coverage.

There are still some issues with Cygwin, especially modern Cygwin, but
this helps us get closer to good support.

Marco Atzeri.
  • Loading branch information
adunstan committed Feb 1, 2014
1 parent 59d64e7 commit 1c0bf37
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
12 changes: 12 additions & 0 deletions src/Makefile.shlib
Expand Up @@ -308,6 +308,7 @@ ifeq ($(PORTNAME), unixware)
endif

ifeq ($(PORTNAME), cygwin)
LINK.shared = $(CC) -shared
ifdef SO_MAJOR_VERSION
shlib = cyg$(NAME)$(DLSUFFIX)
endif
Expand Down Expand Up @@ -398,6 +399,16 @@ else # PORTNAME == cygwin || PORTNAME == win32

# If SHLIB_EXPORTS is set, the rules below will build a .def file from
# that. Else we build a temporary one here.
ifeq ($(PORTNAME), cygwin)
$(shlib): $(OBJS) | $(SHLIB_PREREQS)
$(CC) $(CFLAGS) -shared -o $@ $(OBJS) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) $(LDAP_LIBS_BE)

$(stlib): $(OBJS) | $(SHLIB_PREREQS)
$(LINK.static) $@ $^
$(RANLIB) $@


else
ifeq (,$(SHLIB_EXPORTS))
DLL_DEFFILE = lib$(NAME)dll.def
exports_file = $(DLL_DEFFILE)
Expand All @@ -414,6 +425,7 @@ $(shlib): $(OBJS) $(DLL_DEFFILE)
$(stlib): $(shlib) $(DLL_DEFFILE)
$(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib $@

endif # PORTNAME == cygwin
endif # PORTNAME == cygwin || PORTNAME == win32

endif # enable_shared
Expand Down
5 changes: 1 addition & 4 deletions src/makefiles/Makefile.cygwin
@@ -1,6 +1,5 @@
# $PostgreSQL: pgsql/src/makefiles/Makefile.cygwin,v 1.15 2010/07/05 23:15:56 tgl Exp $
DLLTOOL= dlltool
DLLWRAP= dllwrap
ifdef PGXS
BE_DLLLIBS= -L$(libdir) -lpostgres
else
Expand Down Expand Up @@ -40,6 +39,4 @@ endif

# Rule for building a shared library from a single .o file
%.dll: %.o
$(DLLTOOL) --export-all --output-def $*.def $<
$(DLLWRAP) -o $@ --def $*.def $< $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS)
rm -f $*.def
$(CC) $(CFLAGS) -shared -o $@ $< $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS)

0 comments on commit 1c0bf37

Please sign in to comment.