Skip to content

Commit 53e53db

Browse files
committed
[Dependency Scanning] Factor the shared library libSwiftScan into tools and add exports file.
This library now relires on a static compiler library called `swiftDependencyScan`, which is also common to being used by `swift-frontend` for its dependency scanner invocations.
1 parent d017fd4 commit 53e53db

File tree

10 files changed

+112
-21
lines changed

10 files changed

+112
-21
lines changed

include/swift-c/DependencyScan/DependencyScan.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ swiftscan_swift_binary_detail_get_module_doc_path(
160160

161161
SWIFTSCAN_PUBLIC swiftscan_string_t
162162
swiftscan_swift_binary_detail_get_module_source_info_path(
163-
swiftscan_module_details_t *details);
163+
swiftscan_module_details_t details);
164164

165165
//=== Swift Placeholder Module Details query APIs -------------------------===//
166166

include/swift/DependencyScan/DependencyScanImpl.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
#define SWIFT_C_DEPENDENCY_SCAN_IMPL_H
1818

1919
#include "swift-c/DependencyScan/DependencyScan.h"
20-
#include "swift/DependencyScan/DependencyScanningTool.h"
20+
21+
namespace swift {
22+
namespace dependencies {
23+
class DependencyScanningTool;
24+
}
25+
}
2126

2227
struct swiftscan_dependency_result_s {
2328
/// The name of the main module for this dependency graph (root node)

lib/DependencyScan/CMakeLists.txt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
1-
set_swift_llvm_is_available()
2-
add_swift_host_library(SwiftScan STATIC
3-
DependencyScanImpl.cpp
1+
#set_swift_llvm_is_available()
2+
3+
add_swift_host_library(swiftDependencyScan STATIC
44
DependencyScanningTool.cpp
55
ScanDependencies.cpp
6-
DSStringImpl.cpp
7-
c-include-check.c)
8-
9-
add_dependencies(SwiftScan
10-
swift-syntax-generated-headers
11-
SwiftOptions)
6+
DSString.cpp)
127

13-
target_link_libraries(SwiftScan INTERFACE
14-
clangAPINotes
8+
target_link_libraries(swiftDependencyScan INTERFACE
159
clangBasic)
1610

17-
target_link_libraries(SwiftScan PRIVATE
11+
target_link_libraries(swiftDependencyScan PRIVATE
1812
swiftClangImporter
19-
swiftDemangling
2013
swiftFrontend)
File renamed without changes.

lib/FrontendTool/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,14 @@ add_swift_host_library(swiftFrontendTool STATIC
77
TBD.cpp)
88
add_dependencies(swiftFrontendTool
99
swift-syntax-generated-headers
10-
SwiftScan
1110
SwiftOptions)
1211
target_link_libraries(swiftFrontendTool INTERFACE
1312
clangAPINotes
14-
SwiftScan
1513
clangBasic)
1614
target_link_libraries(swiftFrontendTool PRIVATE
1715
swiftClangImporter
1816
swiftDemangling
19-
SwiftScan
17+
swiftDependencyScan
2018
swiftFrontend
2119
swiftIDE
2220
swiftImmediate

tools/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ add_swift_tool_subdirectory(swift-llvm-opt)
2828
add_swift_tool_subdirectory(swift-api-digester)
2929
add_swift_tool_subdirectory(swift-ast-script)
3030
add_swift_tool_subdirectory(swift-refactor)
31+
add_swift_tool_subdirectory(libSwiftScan)
3132
if(SWIFT_BUILD_SYNTAXPARSERLIB)
3233
add_swift_tool_subdirectory(libSwiftSyntaxParser)
3334
if(SWIFT_INCLUDE_TESTS)

tools/libSwiftScan/CMakeLists.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
include(SwiftWindowsSupport)
2+
swift_swap_compiler_if_needed("libSwiftScan")
3+
4+
# Use an 'internal' name, this is primarily intended for SwiftDriver to import.
5+
set(SWIFT_SCAN_LIB_NAME "_InternalSwiftScan")
6+
7+
set(LLVM_EXPORTED_SYMBOL_FILE
8+
${CMAKE_CURRENT_SOURCE_DIR}/libSwiftScan.exports)
9+
10+
add_swift_host_library(libSwiftScan SHARED
11+
libSwiftScan.cpp
12+
c-include-check.c)
13+
14+
add_dependencies(libSwiftScan
15+
clang
16+
swiftDependencyScan)
17+
18+
target_link_libraries(libSwiftScan PRIVATE
19+
swiftDependencyScan)
20+
21+
set_target_properties(libSwiftScan
22+
PROPERTIES
23+
OUTPUT_NAME ${SWIFT_SCAN_LIB_NAME})
24+
25+
add_llvm_symbol_exports(libSwiftScan ${LLVM_EXPORTED_SYMBOL_FILE})
26+
27+
# Adds -dead_strip option
28+
add_link_opts(libSwiftScan)

lib/DependencyScan/DependencyScanImpl.cpp renamed to tools/libSwiftScan/libSwiftScan.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//===----------------------------------------------------------------------===//
1616

1717
#include "swift/DependencyScan/DependencyScanImpl.h"
18+
#include "swift/DependencyScan/DependencyScanningTool.h"
1819

1920
using namespace swift::dependencies;
2021

@@ -29,7 +30,7 @@ void swiftscan_scanner_dispose(swiftscan_scanner_t c_scanner) {
2930
}
3031

3132
swiftscan_dependency_result_t
32-
swiftscan_scan_dependencies(swiftscan_scanner_t *scanner,
33+
swiftscan_scan_dependencies(swiftscan_scanner_t scanner,
3334
swiftscan_scan_invocation_t invocation) {
3435
DependencyScanningTool *ScanningTool = unwrap_scanner(scanner);
3536
int argc = invocation->argv->count;
@@ -46,7 +47,7 @@ swiftscan_scan_dependencies(swiftscan_scanner_t *scanner,
4647
}
4748

4849
swiftscan_batch_scan_result_t *
49-
swiftscan_batch_scan_dependencies(swiftscan_scanner_t *scanner,
50+
swiftscan_batch_scan_dependencies(swiftscan_scanner_t scanner,
5051
swiftscan_batch_scan_input_t *batch_input,
5152
swiftscan_scan_invocation_t invocation) {
5253
DependencyScanningTool *ScanningTool = unwrap_scanner(scanner);
@@ -81,7 +82,7 @@ swiftscan_batch_scan_dependencies(swiftscan_scanner_t *scanner,
8182
}
8283

8384
swiftscan_prescan_result_t
84-
swiftscan_prescan_dependencies(swiftscan_scanner_t *scanner,
85+
swiftscan_prescan_dependencies(swiftscan_scanner_t scanner,
8586
swiftscan_scan_invocation_t invocation) {
8687
DependencyScanningTool *ScanningTool = unwrap_scanner(scanner);
8788
int argc = invocation->argv->count;
@@ -97,6 +98,18 @@ swiftscan_prescan_dependencies(swiftscan_scanner_t *scanner,
9798
return ImportSet;
9899
}
99100

101+
//=== Dependency Result Functions -----------------------------------------===//
102+
103+
swiftscan_string_t swiftscan_dependency_result_get_main_module_name(
104+
swiftscan_dependency_result_t result) {
105+
return result->main_module_name;
106+
}
107+
108+
swiftscan_dependency_set_t *swiftscan_dependency_result_get_module_set(
109+
swiftscan_dependency_result_t result) {
110+
return result->module_set;
111+
}
112+
100113
//=== Module Dependency Info query APIs -----------------------------------===//
101114

102115
swiftscan_string_t
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
swiftscan_dependency_result_get_main_module_name
2+
swiftscan_dependency_result_get_module_set
3+
swiftscan_module_info_get_module_name
4+
swiftscan_module_info_get_module_path
5+
swiftscan_module_info_get_source_files
6+
swiftscan_module_info_get_direct_dependencies
7+
swiftscan_module_info_get_details
8+
swiftscan_module_detail_get_kind
9+
swiftscan_swift_textual_detail_get_module_interface_path
10+
swiftscan_swift_textual_detail_get_compiled_module_candidates
11+
swiftscan_swift_textual_detail_get_bridging_header_path
12+
swiftscan_swift_textual_detail_get_bridging_source_files
13+
swiftscan_swift_textual_detail_get_bridging_module_dependencies
14+
swiftscan_swift_textual_detail_get_command_line
15+
swiftscan_swift_textual_detail_get_extra_pcm_args
16+
swiftscan_swift_textual_detail_get_context_hash
17+
swiftscan_swift_textual_detail_get_is_framework
18+
swiftscan_swift_binary_detail_get_compiled_module_path
19+
swiftscan_swift_binary_detail_get_module_doc_path
20+
swiftscan_swift_binary_detail_get_module_source_info_path
21+
swiftscan_swift_placeholder_detail_get_compiled_module_path
22+
swiftscan_swift_placeholder_detail_get_module_doc_path
23+
swiftscan_swift_placeholder_detail_get_module_source_info_path
24+
swiftscan_clang_detail_get_module_map_path
25+
swiftscan_clang_detail_get_context_hash
26+
swiftscan_clang_detail_get_command_line
27+
swiftscan_batch_scan_entry_get_module_name
28+
swiftscan_batch_scan_entry_get_arguments
29+
swiftscan_batch_scan_entry_get_is_swift
30+
swiftscan_prescan_result_get_import_set
31+
swiftscan_scan_invocation_create
32+
swiftscan_scan_invocation_set_working_directory
33+
swiftscan_scan_invocation_set_argv
34+
swiftscan_scan_invocation_get_working_directory
35+
swiftscan_scan_invocation_get_argc
36+
swiftscan_scan_invocation_get_argv
37+
swiftscan_dependency_info_details_dispose
38+
swiftscan_dependency_info_dispose
39+
swiftscan_dependency_set_dispose
40+
swiftscan_dependency_result_dispose
41+
swiftscan_prescan_result_dispose
42+
swiftscan_batch_scan_entry_dispose
43+
swiftscan_batch_scan_input_dispose
44+
swiftscan_batch_scan_result_dispose
45+
swiftscan_scan_invocation_dispose
46+
swiftscan_scanner_create
47+
swiftscan_scanner_dispose
48+
swiftscan_scan_dependencies
49+
swiftscan_batch_scan_dependencies
50+
swiftscan_prescan_dependencies
51+
swiftscan_get_C_string
52+
swiftscan_string_dispose
53+
swiftscan_string_set_dispose

0 commit comments

Comments
 (0)