Skip to content

Commit cd12dcb

Browse files
authored
Merge pull request #209 from weissi/jw-fix-libdispatch.a
fix libdispatch.a to include Swift overlay symbols
2 parents 7974138 + eaa77e9 commit cd12dcb

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/Makefile.am

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,22 @@ SWIFT_SRC_FILES=\
150150

151151
SWIFT_ABS_SRC_FILES = $(SWIFT_SRC_FILES:%=$(abs_srcdir)/%)
152152
SWIFT_OBJ_FILES = $(abs_builddir)/swift/swift_overlay.o
153+
SWIFT_LIBTOOL_OBJ_FILES = $(abs_builddir)/swift/swift_overlay.lo
153154

154155
SWIFTC_FLAGS+= -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.modulemap -I$(abs_top_srcdir) -Xcc -fblocks
155156
if DISPATCH_ENABLE_OPTIMIZATION
156157
SWIFTC_FLAGS+=-O
157158
endif
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)
165175
libdispatch_la_SOURCES+=swift/DispatchStubs.cc
166176
EXTRA_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

171181
SWIFT_GEN_FILES= \
172182
$(abs_builddir)/swift/Dispatch.swiftmodule \

0 commit comments

Comments
 (0)