Skip to content

Commit bb3d3a5

Browse files
authored
Merge pull request swiftlang#77724 from compnerd/inspection
swift-inspect: add initial CMake based build system
2 parents 25252cd + 22a014b commit bb3d3a5

File tree

3 files changed

+75
-1
lines changed

3 files changed

+75
-1
lines changed

tools/swift-inspect/CMakeLists.txt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
cmake_minimum_required(VERSION 3.28)
2+
3+
project(swift-inspect
4+
LANGUAGES CXX Swift)
5+
6+
# Set C++ standard
7+
set(CMAKE_CXX_STANDARD 17)
8+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
9+
set(CMAKE_CXX_EXTENSIONS OFF)
10+
11+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
12+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
13+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
14+
15+
find_package(ArgumentParser CONFIG REQUIRED)
16+
17+
add_library(SymbolicationShims INTERFACE)
18+
target_include_directories(SymbolicationShims INTERFACE
19+
Sources/SymbolicationShims)
20+
21+
if(WIN32)
22+
add_library(SwiftInspectClientInterface INTERFACE)
23+
target_include_directories(SwiftInspectClientInterface INTERFACE
24+
Sources/SwiftInspectClientInterface)
25+
26+
add_library(SwiftInspectClient SHARED
27+
Sources/SwiftInspectClient/SwiftInspectClient.cpp)
28+
target_link_libraries(SwiftInspectClient PRIVATE
29+
SwiftInspectClientInterface)
30+
endif()
31+
32+
add_executable(swift-inspect
33+
Sources/swift-inspect/Operations/DumpArray.swift
34+
Sources/swift-inspect/Operations/DumpCacheNodes.swift
35+
Sources/swift-inspect/Operations/DumpConcurrency.swift
36+
Sources/swift-inspect/Operations/DumpConformanceCache.swift
37+
Sources/swift-inspect/Operations/DumpGenericMetadata.swift
38+
Sources/swift-inspect/Operations/DumpRawMetadata.swift
39+
Sources/swift-inspect/Backtrace.swift
40+
Sources/swift-inspect/DarwinRemoteProcess.swift
41+
Sources/swift-inspect/main.swift
42+
Sources/swift-inspect/Process.swift
43+
Sources/swift-inspect/RemoteMirror+Extensions.swift
44+
Sources/swift-inspect/RemoteProcess.swift
45+
Sources/swift-inspect/String+Extensions.swift
46+
Sources/swift-inspect/Symbolication+Extensions.swift
47+
Sources/swift-inspect/WindowsRemoteProcess.swift
48+
Sources/swift-inspect/WinSDK+Extentions.swift)
49+
target_compile_options(swift-inspect PRIVATE
50+
-parse-as-library)
51+
target_link_libraries(swift-inspect PRIVATE
52+
ArgumentParser
53+
swiftRemoteMirror)
54+
if(WIN32)
55+
target_link_libraries(swift-inspect PRIVATE
56+
SwiftInspectClientInterface)
57+
endif()
58+
59+
install(TARGETS swift-inspect
60+
DESTINATION bin)
61+
if(WIN32)
62+
install(TARGETS SwiftInspectClient
63+
RUNTIME DESTINATION bin)
64+
endif()

tools/swift-inspect/README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,22 @@ swift-inspect uses the reflection APIs to introspect the live process. It relie
88

99
swift-inspect can be built using [swift-package-manager](https://github.com/swiftlang/swift-package-manager).
1010

11-
##### Windows
11+
#### Windows
1212

1313
In order to build on Windows, some additional parameters must be passed to the build tool to locate the necessary libraries.
1414

1515
~~~
1616
swift build -Xcc -I%SDKROOT%\usr\include\swift\SwiftRemoteMirror -Xlinker %SDKROOT%\usr\lib\swift\windows\x86_64\swiftRemoteMirror.lib
1717
~~~
1818

19+
#### CMake
20+
21+
In order to build on Windows with CMake, some additional parameters must be passed to the build tool to locate the necessary Swift modules.
22+
23+
~~~
24+
cmake -B out -G Ninja -S . -D ArgumentParser_DIR=... -D CMAKE_Swift_FLAGS="-Xcc -I%SDKROOT%\usr\include\swift\SwiftRemoteMirror"
25+
~~~
26+
1927
### Using
2028

2129
The following inspection operations are available currently.

tools/swift-inspect/Sources/SwiftInspectClient/SwiftInspectClient.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212

1313
#if defined(_WIN32)
1414

15+
#if SWIFT_PACKAGE
1516
#pragma comment(lib, "swiftCore.lib")
17+
#endif
1618

1719
#include "../SwiftInspectClientInterface/SwiftInspectClientInterface.h"
1820
#include <assert.h>

0 commit comments

Comments
 (0)