Skip to content

Commit c6a964b

Browse files
committed
build: migrate to the new ELF registration scheme
The new ELF registration scheme uses linker tables and only requires a single object to be added to the link.
1 parent f962c37 commit c6a964b

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

lib/product.py

+4-7
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ def project_headers_path(self):
7171
return Path.path(Configuration.current.build_directory.path_by_appending(self.name).absolute() + "/" + self.PROJECT_HEADERS_FOLDER_PATH)
7272

7373
class Library(Product):
74-
conformance_begin = ""
75-
conformance_end = ""
74+
runtime_object = ''
7675
rule = None
7776
def __init__(self, name):
7877
Product.__init__(self, name)
@@ -91,7 +90,7 @@ def generate(self, flags, objects = []):
9190
product_flags += " -lstdc++"
9291

9392
generated += """
94-
build """ + self.product.relative() + """: """ + self.rule + """ """ + self.conformance_begin + """ """ + " ".join(objects) + """ """ + self.conformance_end + """ """ + self.generate_dependencies() + """
93+
build """ + self.product.relative() + """: """ + self.rule + """ """ + self.runtime_object + """ """ + " ".join(objects) + """ """ + self.generate_dependencies() + """
9594
flags = """ + product_flags
9695
if self.needs_objc:
9796
generated += """
@@ -119,8 +118,7 @@ def generate(self, objects = []):
119118
self.rule = "Link"
120119
self.product_name = Configuration.current.target.dynamic_library_prefix + self.name + Configuration.current.target.dynamic_library_suffix
121120
if Configuration.current.target.sdk == OSType.Linux or Configuration.current.target.sdk == OSType.FreeBSD:
122-
self.conformance_begin = '${SDKROOT}/lib/swift/${OS}/${ARCH}/swift_begin.o'
123-
self.conformance_end = '${SDKROOT}/lib/swift/${OS}/${ARCH}/swift_end.o'
121+
self.runtime_object = '${SDKROOT}/lib/swift/${OS}/${ARCH}/swiftrt.o'
124122
return Library.generate(self, ["-shared", "-Wl,-soname," + self.product_name, "-Wl,--no-undefined"], objects)
125123
else:
126124
return Library.generate(self, ["-shared"], objects)
@@ -182,8 +180,7 @@ def __init__(self, name):
182180
def generate(self, objects = []):
183181
self.rule = "Archive"
184182
self.product_name = Configuration.current.target.static_library_prefix + self.name + Configuration.current.target.static_library_suffix
185-
self.conformance_begin = ''
186-
self.conformance_end = ''
183+
self.runtime_object = ''
187184
return Library.generate(self, [], objects)
188185

189186
class StaticAndDynamicLibrary(StaticLibrary, DynamicLibrary):

0 commit comments

Comments
 (0)