Skip to content

Commit 30d3f2f

Browse files
committed
Fix link option
1 parent 60c68f2 commit 30d3f2f

File tree

1 file changed

+214
-0
lines changed

1 file changed

+214
-0
lines changed

patches/swift/04-allow-plugging-in-observer.patch

+214
Original file line numberDiff line numberDiff line change
@@ -212,3 +212,217 @@ index a5dc3ccb845..30667ae51f9 100644
212212
DESTINATION "bin"
213213
COMPONENT editor-integration)
214214
-
215+
diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake
216+
index 6d93e52f1d5..9ab79aeb9d6 100644
217+
--- a/cmake/modules/AddSwift.cmake
218+
+++ b/cmake/modules/AddSwift.cmake
219+
@@ -715,6 +715,7 @@ function(add_swift_host_tool executable)
220+
221+
# Include the abi stable system stdlib in our rpath.
222+
list(APPEND RPATH_LIST "/usr/lib/swift")
223+
+ list(APPEND RPATH_LIST "${SWIFTLIB_DIR}")
224+
225+
elseif(BOOTSTRAPPING_MODE STREQUAL "CROSSCOMPILE-WITH-HOSTLIBS")
226+
227+
@@ -731,6 +732,7 @@ function(add_swift_host_tool executable)
228+
229+
# Include the abi stable system stdlib in our rpath.
230+
list(APPEND RPATH_LIST "/usr/lib/swift")
231+
+ list(APPEND RPATH_LIST "@executable_path/../lib")
232+
233+
elseif(BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS")
234+
# Add the SDK directory for the host platform.
235+
@@ -798,7 +800,7 @@ function(add_swift_host_tool executable)
236+
if(BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS")
237+
set_target_properties(${executable} PROPERTIES
238+
BUILD_WITH_INSTALL_RPATH YES
239+
- INSTALL_RPATH "${host_lib_dir}")
240+
+ INSTALL_RPATH "${host_lib_dir};$ORIGIN/../lib")
241+
else()
242+
set_target_properties(${executable} PROPERTIES
243+
BUILD_WITH_INSTALL_RPATH YES
244+
diff --git a/include/swift/DriverTool/FrontendObserver.h b/include/swift/DriverTool/FrontendObserver.h
245+
new file mode 100644
246+
index 00000000000..4ac9b299a13
247+
--- /dev/null
248+
+++ b/include/swift/DriverTool/FrontendObserver.h
249+
@@ -0,0 +1,10 @@
250+
+#pragma once
251+
+
252+
+#include "llvm/ADT/ArrayRef.h"
253+
+#include "swift/FrontendTool/FrontendTool.h"
254+
+
255+
+namespace swift {
256+
+
257+
+FrontendObserver* getFrontendObserver(llvm::ArrayRef<const char*> argv);
258+
+
259+
+} // namespace swift
260+
diff --git a/include/swift/FrontendTool/FrontendTool.h b/include/swift/FrontendTool/FrontendTool.h
261+
index 184e6196918..ef5c3eafe69 100644
262+
--- a/include/swift/FrontendTool/FrontendTool.h
263+
+++ b/include/swift/FrontendTool/FrontendTool.h
264+
@@ -53,6 +53,9 @@ public:
265+
/// The frontend has executed the SIL optimization and diagnostics pipelines.
266+
virtual void performedSILProcessing(SILModule &module);
267+
268+
+ /// The frontend has finished executing with the given return value
269+
+ virtual void finished(int status);
270+
+
271+
// TODO: maybe enhance this interface to hear about IRGen and LLVM
272+
// progress.
273+
};
274+
diff --git a/lib/AST/CMakeLists.txt b/lib/AST/CMakeLists.txt
275+
index ec3fa2c853b..c4afddc4940 100644
276+
--- a/lib/AST/CMakeLists.txt
277+
+++ b/lib/AST/CMakeLists.txt
278+
@@ -58,7 +58,6 @@ add_swift_host_library(swiftAST STATIC
279+
GenericParamList.cpp
280+
GenericSignature.cpp
281+
GenericSignatureBuilder.cpp
282+
- Identifier.cpp
283+
ImportCache.cpp
284+
IndexSubset.cpp
285+
InlinableText.cpp
286+
@@ -122,6 +121,14 @@ add_swift_host_library(swiftAST STATIC
287+
${SWIFTAST_LLVM_LINK_COMPONENTS}
288+
)
289+
290+
+add_swift_host_library(swiftIdentifier SHARED
291+
+ Identifier.cpp
292+
+ )
293+
+
294+
+if(${SWIFT_HOST_VARIANT_SDK} IN_LIST SWIFT_DARWIN_PLATFORMS)
295+
+ target_link_options(swiftIdentifier PRIVATE "-undefined dynamic_lookup")
296+
+endif()
297+
+
298+
if(SWIFT_FORCE_OPTIMIZED_TYPECHECKER)
299+
if(CMAKE_CXX_COMPILER_ID STREQUAL MSVC OR CMAKE_CXX_SIMULATE_ID STREQUAL MSVC)
300+
target_compile_options(swiftAST PRIVATE /O2 /Ob2)
301+
@@ -152,7 +159,7 @@ if(NOT SWIFT_BUILD_ONLY_SYNTAXPARSERLIB)
302+
endif()
303+
304+
target_link_libraries(swiftAST
305+
- PUBLIC swiftBasic
306+
+ PUBLIC swiftBasic swiftIdentifier
307+
PRIVATE swiftSyntax)
308+
if(SWIFT_BUILD_ONLY_SYNTAXPARSERLIB)
309+
# Remove dependencies from clangBasic to avoid bringing along some llvm
310+
diff --git a/lib/DriverTool/CMakeLists.txt b/lib/DriverTool/CMakeLists.txt
311+
index 869c00fece9..21610d8eb95 100644
312+
--- a/lib/DriverTool/CMakeLists.txt
313+
+++ b/lib/DriverTool/CMakeLists.txt
314+
@@ -14,16 +14,24 @@ set(driver_common_libs
315+
swiftSymbolGraphGen
316+
LLVMBitstreamReader)
317+
318+
+add_swift_host_library(swiftFrontendObserver SHARED
319+
+ swift_frontend_observer.cpp)
320+
+target_link_libraries(swiftFrontendObserver
321+
+ PUBLIC
322+
+ swiftFrontendTool)
323+
+
324+
add_swift_host_library(swiftDriverTool STATIC
325+
${driver_sources_and_options}
326+
)
327+
target_link_libraries(swiftDriverTool
328+
PUBLIC
329+
- ${driver_common_libs})
330+
+ ${driver_common_libs}
331+
+ swiftFrontendObserver)
332+
333+
# If building as part of clang, make sure the headers are installed.
334+
if(NOT SWIFT_BUILT_STANDALONE)
335+
add_dependencies(swiftDriverTool clang-resource-headers)
336+
endif()
337+
338+
+set_swift_llvm_is_available(swiftFrontendObserver)
339+
set_swift_llvm_is_available(swiftDriverTool)
340+
diff --git a/lib/DriverTool/driver.cpp b/lib/DriverTool/driver.cpp
341+
index f71e2de9eae..a500e30827f 100644
342+
--- a/lib/DriverTool/driver.cpp
343+
+++ b/lib/DriverTool/driver.cpp
344+
@@ -31,6 +31,7 @@
345+
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
346+
#include "swift/FrontendTool/FrontendTool.h"
347+
#include "swift/DriverTool/DriverTool.h"
348+
+#include "swift/DriverTool/FrontendObserver.h"
349+
#include "llvm/ADT/SmallVector.h"
350+
#include "llvm/Support/CommandLine.h"
351+
#include "llvm/Support/ConvertUTF.h"
352+
@@ -197,7 +198,8 @@ static int run_driver(StringRef ExecName,
353+
if (FirstArg == "-frontend") {
354+
return performFrontend(llvm::makeArrayRef(argv.data()+2,
355+
argv.data()+argv.size()),
356+
- argv[0], (void *)(intptr_t)getExecutablePath);
357+
+ argv[0], (void *)(intptr_t)getExecutablePath,
358+
+ getFrontendObserver(argv));
359+
}
360+
if (FirstArg == "-modulewrap") {
361+
return modulewrap_main(llvm::makeArrayRef(argv.data()+2,
362+
@@ -211,7 +213,8 @@ static int run_driver(StringRef ExecName,
363+
&& ExecName == "swift-frontend") {
364+
return performFrontend(llvm::makeArrayRef(argv.data()+1,
365+
argv.data()+argv.size()),
366+
- argv[0], (void *)(intptr_t)getExecutablePath);
367+
+ argv[0], (void *)(intptr_t)getExecutablePath,
368+
+ getFrontendObserver(argv));
369+
}
370+
371+
if (FirstArg == "repl") {
372+
diff --git a/lib/DriverTool/swift_frontend_observer.cpp b/lib/DriverTool/swift_frontend_observer.cpp
373+
new file mode 100644
374+
index 00000000000..e16b2f970cd
375+
--- /dev/null
376+
+++ b/lib/DriverTool/swift_frontend_observer.cpp
377+
@@ -0,0 +1,9 @@
378+
+#include "swift/DriverTool/FrontendObserver.h"
379+
+
380+
+namespace swift {
381+
+
382+
+FrontendObserver* getFrontendObserver(llvm::ArrayRef<const char*>) {
383+
+ return nullptr;
384+
+}
385+
+
386+
+} // namespace swift
387+
diff --git a/lib/FrontendTool/FrontendTool.cpp b/lib/FrontendTool/FrontendTool.cpp
388+
index 811fb912f8a..afa2034aa71 100644
389+
--- a/lib/FrontendTool/FrontendTool.cpp
390+
+++ b/lib/FrontendTool/FrontendTool.cpp
391+
@@ -1924,7 +1924,7 @@ public:
392+
};
393+
};
394+
395+
-int swift::performFrontend(ArrayRef<const char *> Args,
396+
+static int performFrontendImpl(ArrayRef<const char *> Args,
397+
const char *Argv0, void *MainAddr,
398+
FrontendObserver *observer) {
399+
INITIALIZE_LLVM();
400+
@@ -2263,8 +2263,19 @@ int swift::performFrontend(ArrayRef<const char *> Args,
401+
return r;
402+
}
403+
404+
+int swift::performFrontend(ArrayRef<const char *> Args,
405+
+ const char *Argv0, void *MainAddr,
406+
+ FrontendObserver *observer) {
407+
+ auto ret = performFrontendImpl(Args, Argv0, MainAddr, observer);
408+
+ if (observer) {
409+
+ observer->finished(ret);
410+
+ }
411+
+ return ret;
412+
+}
413+
+
414+
void FrontendObserver::parsedArgs(CompilerInvocation &invocation) {}
415+
void FrontendObserver::configuredCompiler(CompilerInstance &instance) {}
416+
void FrontendObserver::performedSemanticAnalysis(CompilerInstance &instance) {}
417+
void FrontendObserver::performedSILGeneration(SILModule &module) {}
418+
void FrontendObserver::performedSILProcessing(SILModule &module) {}
419+
+void FrontendObserver::finished(int status) {}
420+
diff --git a/tools/driver/CMakeLists.txt b/tools/driver/CMakeLists.txt
421+
index a5dc3ccb845..30667ae51f9 100644
422+
--- a/tools/driver/CMakeLists.txt
423+
+++ b/tools/driver/CMakeLists.txt
424+
@@ -123,4 +123,3 @@ add_dependencies(editor-integration swift-frontend)
425+
swift_install_in_component(FILES "${SWIFT_RUNTIME_OUTPUT_INTDIR}/swift-indent${CMAKE_EXECUTABLE_SUFFIX}"
426+
DESTINATION "bin"
427+
COMPONENT editor-integration)
428+
-

0 commit comments

Comments
 (0)