@@ -150,12 +150,22 @@ SWIFT_SRC_FILES=\
150150
151151SWIFT_ABS_SRC_FILES = $(SWIFT_SRC_FILES:%=$(abs_srcdir ) /% )
152152SWIFT_OBJ_FILES = $(abs_builddir ) /swift/swift_overlay.o
153+ SWIFT_LIBTOOL_OBJ_FILES = $(abs_builddir ) /swift/swift_overlay.lo
153154
154155SWIFTC_FLAGS+ = -Xcc -fmodule-map-file=$(abs_top_srcdir ) /dispatch/module.modulemap -I$(abs_top_srcdir ) -Xcc -fblocks
155156if DISPATCH_ENABLE_OPTIMIZATION
156157SWIFTC_FLAGS+ =-O
157158endif
158159
160+ # this saves the object file, then tricks libtool into generating a .lo file and
161+ # then moves the object file back in the places libtool expects them to be for
162+ # the PIC and non-PIC case.
163+ $(abs_builddir ) /swift/swift_overlay.lo : $(abs_builddir ) /swift/swift_overlay.o
164+ mv $(abs_builddir ) /swift/swift_overlay.o $(abs_builddir ) /swift/.libs/swift_overlay.o.save
165+ $(LIBTOOL ) --mode=compile --tag=CC true -o $< -c /dev/null
166+ cp $(abs_builddir ) /swift/.libs/swift_overlay.o.save $(abs_builddir ) /swift/.libs/swift_overlay.o
167+ mv $(abs_builddir ) /swift/.libs/swift_overlay.o.save $(abs_builddir ) /swift/swift_overlay.o
168+
159169$(abs_builddir ) /swift/swift_overlay.o : $(SWIFT_ABS_SRC_FILES ) $(SWIFTC )
160170 @rm -f $@
161171 $(SWIFTC ) -whole-module-optimization -emit-library -c $(SWIFT_ABS_SRC_FILES ) \
@@ -165,8 +175,8 @@ $(abs_builddir)/swift/swift_overlay.o: $(SWIFT_ABS_SRC_FILES) $(SWIFTC)
165175libdispatch_la_SOURCES+ =swift/DispatchStubs.cc
166176EXTRA_libdispatch_la_SOURCES+ =$(SWIFT_SRC_FILES )
167177
168- EXTRA_libdispatch_la_DEPENDENCIES+ =$(SWIFT_OBJ_FILES ) $(abs_builddir ) /swift/Dispatch.swiftmodule
169- libdispatch_la_LIBADD+ =$(SWIFT_OBJ_FILES )
178+ EXTRA_libdispatch_la_DEPENDENCIES+ =$(SWIFT_OBJ_FILES ) $(SWIFT_LIBTOOL_OBJ_FILES ) $( abs_builddir ) /swift/Dispatch.swiftmodule
179+ libdispatch_la_LIBADD+ =$(SWIFT_LIBTOOL_OBJ_FILES )
170180
171181SWIFT_GEN_FILES = \
172182 $(abs_builddir ) /swift/Dispatch.swiftmodule \
0 commit comments