summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2015-03-01 13:05:23 -0500
committerNoah Misch <noah@leadboat.com>2015-03-01 13:07:00 -0500
commitc3b0baf910f3428df8b30144c1e4034c04ebe495 (patch)
tree685ad18e10a4c47aab4365facae0f6a49c04c08c /src
parent6f419958a61119c2f17e0a84a30e920050c843db (diff)
Unlink static libraries before rebuilding them.
When the library already exists in the build directory, "ar" preserves members not named on its command line. This mattered when, for example, a "configure" rerun dropped a file from $(LIBOBJS). libpgport carried the obsolete member until "make clean". Back-patch to 9.0 (all supported versions).
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.shlib3
-rw-r--r--src/port/Makefile2
2 files changed, 5 insertions, 0 deletions
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 21ae9b37a11..e728801f5fc 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -318,6 +318,7 @@ all-shared-lib: $(shlib)
ifndef haslibarule
$(stlib): $(OBJS) | $(SHLIB_PREREQS)
+ rm -f $@
$(LINK.static) $@ $^
$(RANLIB) $@
endif #haslibarule
@@ -360,6 +361,7 @@ else # PORTNAME == aix
# AIX case
$(shlib) $(stlib): $(OBJS) | $(SHLIB_PREREQS)
+ rm -f $(stlib)
$(LINK.static) $(stlib) $^
$(RANLIB) $(stlib)
$(MKLDEXPORT) $(stlib) >$(exports_file)
@@ -380,6 +382,7 @@ $(shlib): $(OBJS) | $(SHLIB_PREREQS)
$(CC) $(CFLAGS) -shared -o $@ $(OBJS) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) $(LDAP_LIBS_BE)
$(stlib): $(OBJS) | $(SHLIB_PREREQS)
+ rm -f $@
$(LINK.static) $@ $^
$(RANLIB) $@
diff --git a/src/port/Makefile b/src/port/Makefile
index bace576d803..67677ae8937 100644
--- a/src/port/Makefile
+++ b/src/port/Makefile
@@ -50,6 +50,7 @@ uninstall:
rm -f '$(DESTDIR)$(libdir)/libpgport.a'
libpgport.a: $(OBJS)
+ rm -f $@
$(AR) $(AROPT) $@ $^
# thread.o needs PTHREAD_CFLAGS (but thread_srv.o does not)
@@ -60,6 +61,7 @@ thread.o: CFLAGS+=$(PTHREAD_CFLAGS)
#
libpgport_srv.a: $(OBJS_SRV)
+ rm -f $@
$(AR) $(AROPT) $@ $^
# Because this uses its own compilation rule, it doesn't use the