@@ -77,11 +77,12 @@ class Library(Product):
77
77
def __init__ (self , name ):
78
78
Product .__init__ (self , name )
79
79
80
- def generate (self , flags ):
81
- generated = Product .generate (self )
82
- objects = []
83
- for phase in self .phases :
84
- objects += phase .objects
80
+ def generate (self , flags , objects = []):
81
+ generated = ""
82
+ if len (objects ) == 0 :
83
+ generated = Product .generate (self )
84
+ for phase in self .phases :
85
+ objects += phase .objects
85
86
86
87
product_flags = " " .join (flags )
87
88
if self .LDFLAGS is not None :
@@ -106,23 +107,23 @@ def generate(self, flags):
106
107
107
108
"""
108
109
109
- return generated
110
+ return objects , generated
110
111
111
112
112
113
class DynamicLibrary (Library ):
113
114
def __init__ (self , name ):
114
115
Library .__init__ (self , name )
115
116
self .name = name
116
117
117
- def generate (self ):
118
+ def generate (self , objects = [] ):
118
119
self .rule = "Link"
119
120
self .product_name = Configuration .current .target .dynamic_library_prefix + self .name + Configuration .current .target .dynamic_library_suffix
120
121
if Configuration .current .target .sdk == OSType .Linux or Configuration .current .target .sdk == OSType .FreeBSD :
121
122
self .conformance_begin = '${SDKROOT}/lib/swift/${OS}/${ARCH}/swift_begin.o'
122
123
self .conformance_end = '${SDKROOT}/lib/swift/${OS}/${ARCH}/swift_end.o'
123
- return Library .generate (self , ["-shared" , "-Wl,-soname," + self .product_name , "-Wl,--no-undefined" ])
124
+ return Library .generate (self , ["-shared" , "-Wl,-soname," + self .product_name , "-Wl,--no-undefined" ], objects )
124
125
else :
125
- return Library .generate (self , ["-shared" ])
126
+ return Library .generate (self , ["-shared" ], objects )
126
127
127
128
128
129
class Framework (Product ):
@@ -189,7 +190,9 @@ def __init__(self, name):
189
190
DynamicLibrary .__init__ (self , name )
190
191
191
192
def generate (self ):
192
- return StaticLibrary .generate (self ) + DynamicLibrary .generate (self )
193
+ objects , generatedForStatic = StaticLibrary .generate (self )
194
+ _ , generatedForDynamic = DynamicLibrary .generate (self , objects )
195
+ return generatedForStatic + generatedForDynamic
193
196
194
197
class Executable (Product ):
195
198
def __init__ (self , name ):
0 commit comments