Skip to content

Commit 80466b2

Browse files
committed
Support Swift Package Manager
1 parent 2876ede commit 80466b2

File tree

92 files changed

+254
-73
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+254
-73
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ src/build/
2828
# WCDB
2929
WCDB.framework
3030

31+
# SwiftPM
32+
/.build
33+
Package.resolved
34+
3135
# WeChat
3236
WeChat/conan/*
3337

Package.swift

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// swift-tools-version: 5.5
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "WCDBSwift",
8+
platforms: [
9+
.macOS(.v10_13),
10+
.watchOS(.v4),
11+
.tvOS(.v12),
12+
.iOS(.v12)],
13+
products: [
14+
.library(name: "WCDBSwift", targets: ["WCDBSwift"]),
15+
.library(name: "WCDBSwiftDynamic", type: .dynamic, targets: ["WCDBSwift"]),
16+
],
17+
dependencies: [
18+
.package(url: "https://github.com/Tencent/sqlcipher", revision: "d154965f2684332402ad49531c90ea9d3c21938d")
19+
],
20+
targets: [
21+
.target(
22+
name: "objc-core",
23+
path: "src/objc/core",
24+
sources: ["WCTFileManager.mm", "WCTFoundation.mm", "WCTFTSTokenizerUtil.mm"],
25+
publicHeadersPath:"",
26+
cSettings: [
27+
.headerSearchPath("../../**"),
28+
]
29+
),
30+
.target(
31+
name: "objc-no-arc",
32+
path: "src/objc/operationqueue",
33+
sources: ["WCTOperationQueue.mm"],
34+
publicHeadersPath:"",
35+
cSettings: [
36+
.headerSearchPath("../../**"),
37+
.unsafeFlags(["-fno-objc-arc"])
38+
],
39+
linkerSettings: [
40+
.linkedFramework("UIKit", .when(platforms: [.iOS])),
41+
]
42+
),
43+
.target(
44+
name: "common",
45+
dependencies: ["sqlcipher", .target(name: "objc-core"), .target(name: "objc-no-arc")],
46+
path: "src/common",
47+
exclude: [
48+
"repair/sqlite",
49+
"platform/WCTFileManager.cpp",
50+
"platform/WCTOperationQueue.cpp",
51+
],
52+
publicHeadersPath:"",
53+
cSettings: [
54+
.define("SQLITE_WCDB", to: "1"),
55+
.define("SQLITE_WCDB_LOCK_HOOK", to: "1"),
56+
.define("SQLITE_WCDB_CHECKPOINT_HANDLER", to: "1"),
57+
.define("SQLITE_WCDB_SUSPEND", to: "1"),
58+
.define("SQLITE_WCDB_IMPROVED_CHECKPOINT", to: "1"),
59+
.define("SQLITE_HAS_CODEC"),
60+
.define("SQLITE_DEFAULT_PAGE_SIZE", to: "4096"),
61+
.define("SQLITE_DEFAULT_SYNCHRONOUS", to: "1"),
62+
.define("SQLITE_DEFAULT_WAL_SYNCHRONOUS", to: "1"),
63+
.define("SQLITE_DEFAULT_LOCKING_MODE", to: "0"),
64+
.define("SQLITE_DEFAULT_WAL_AUTOCHECKPOINT", to: "0"),
65+
.headerSearchPath("**")
66+
],
67+
linkerSettings: [
68+
.linkedLibrary("z"),
69+
]
70+
),
71+
.target(
72+
name: "bridge",
73+
dependencies: [.target(name: "common")],
74+
path: "src/bridge",
75+
exclude: [
76+
"tests",
77+
"objcbridge/WCTBridgeProperty+CPP.h",
78+
"objcbridge/WCTBridgeProperty.mm"
79+
],
80+
cSettings: [
81+
.headerSearchPath("../**")
82+
]
83+
),
84+
.target(
85+
name: "WCDBSwift",
86+
dependencies: [.target(name: "bridge")],
87+
path: "src/swift",
88+
exclude: [
89+
"tests"
90+
],
91+
publicHeadersPath: ".",
92+
cSettings: [
93+
.headerSearchPath("../bridge/**")
94+
]
95+
)
96+
],
97+
cLanguageStandard: .c11,
98+
cxxLanguageStandard: .cxx14
99+
)

WCDB.cpp.podspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ Pod::Spec.new do |wcdb|
2222
wcdb.tvos.deployment_target = "12.4"
2323
wcdb.source = { :git => "https://github.com/Tencent/wcdb.git", :tag => "v#{wcdb.version}" }
2424
wcdb.public_header_files = "src/cpp/WCDBCpp.h", "src/cpp/**/*.{h,hpp}", "src/common/winq/*.{h,hpp}", "src/common/winq/**/*.{h,hpp}", "src/common/platform/SysTypes.h", "src/common/utility/Shadow.hpp", "src/common/utility/Macro.h", "src/common/utility/CaseInsensitiveList.hpp", "src/common/core/fts/FTSConst.h", "src/common/core/fts/tokenizer/TokenizerModule.hpp", "src/common/core/fts/tokenizer/TokenizerModuleTemplate.hpp", "src/common/core/fts/tokenizer/BaseTokenizerUtil.hpp", "src/common/core/fts/tokenizer/PinyinTokenizer.hpp", "src/common/core/fts/tokenizer/OneOrBinaryTokenizer.hpp", "src/common/core/fts/auxfunction/FTS5AuxiliaryFunctionTemplate.hpp", "src/common/core/fts/auxfunction/AuxiliaryFunctionModule.hpp", "src/common/core/fts/auxfunction/SubstringMatchInfo.hpp", "src/common/core/fts/FTSError.hpp", "src/common/core/RecyclableHandle.hpp", "src/common/core/Tag.hpp", "src/common/base/Recyclable.hpp", "src/common/base/SharedThreadedErrorProne.hpp", "src/common/base/StringView.hpp", "src/common/base/WCDBOptional.hpp", "src/common/base/WCDBError.hpp", "src/common/base/Data.hpp", "src/common/base/UnsafeData.hpp"
25-
wcdb.source_files = "src/common/**/*.{h,hpp,c,cpp}", "src/cpp/**/*.{h,hpp,c,cpp}", "src/objc/core/WCTFileManager.mm", "src/objc/core/WCTOperationQueue.mm", "src/objc/core/WCTFoundation.h", "src/objc/core/WCTFoundation.mm"
26-
wcdb.exclude_files = "src/cpp/tests/**/*.{h,hpp,c,cpp}", "src/common/platform/WCTFileManager.cpp", "src/common/platform/WCTOperationQueue.cpp", "src/objc/core/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp"
25+
wcdb.source_files = "src/common/**/*.{h,hpp,c,cpp}", "src/cpp/**/*.{h,hpp,c,cpp}", "src/objc/core/WCTFileManager.mm", "src/objc/core/WCTFoundation.h", "src/objc/core/WCTFoundation.mm"
26+
wcdb.exclude_files = "src/cpp/tests/**/*.{h,hpp,c,cpp}", "src/common/platform/WCTFileManager.cpp", "src/common/platform/WCTOperationQueue.cpp" "src/common/core/operate/OperationQueueForMemory.cpp"
2727
wcdb.subspec 'no-arc' do |sna|
2828
sna.requires_arc = false
29-
sna.source_files = "src/objc/core/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/common/core/operate/OperationQueueForMemory.hpp"
29+
sna.source_files = "src/objc/operationqueue/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/common/core/operate/OperationQueueForMemory.hpp"
3030
end
3131
wcdb.frameworks = "CoreFoundation", "Security", "Foundation"
3232
wcdb.ios.frameworks = "UIKit"

WCDB.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ Pod::Spec.new do |wcdb|
2424
wcdb.public_header_files = "src/WCDB.h", "src/objc/WCDBObjc.h", "src/objc/Interface.h", "src/objc/core/*.{h,hpp}", "src/objc/builtin/*.{h,hpp}", "src/objc/statement/WCTPreparedStatement.h", "src/objc/migration/WCTDatabase+Migration.h", "src/objc/migration/WCTMigrationInfo.h", "src/objc/compression/WCTDatabase+Compression.h", "src/objc/compression/WCTCompressionInfo.h", "src/objc/transaction/*.{h,hpp}", "src/objc/handle/WCTDatabase+Handle.h", "src/objc/handle/WCTHandle.h", "src/objc/handle/WCTCancellationSignal.h", "src/objc/fts/*.{h,hpp}", "src/objc/monitor/WCTError.h", "src/objc/monitor/WCTDatabase+Monitor.h", "src/objc/chaincall/WCTError.h", "src/objc/chaincall/WCTInsert.h", "src/objc/chaincall/WCTDelete.h", "src/objc/chaincall/WCTUpdate.h", "src/objc/chaincall/WCTSelectable.h", "src/objc/chaincall/WCTSelect.h", "src/objc/chaincall/WCTMultiSelect.h", "src/objc/chaincall/WCTHandle+ChainCall.h", "src/objc/chaincall/WCTTable+ChainCall.h", "src/objc/chaincall/WCTDatabase+ChainCall.h", "src/objc/chaincall/WCTChainCall.h", "src/objc/chaincall/WCTTryDisposeGuard.h", "src/objc/convenient/*.{h,hpp}", "src/objc/database/WCTDatabase.h", "src/objc/database/WCTDatabase+File.h", "src/objc/database/WCTDatabase+Repair.h", "src/objc/database/WCTDatabase+Config.h", "src/objc/database/WCTDatabase+Memory.h", "src/objc/database/WCTTryDisposeGuard.h", "src/objc/orm/*.{h,hpp}", "src/objc/orm/**/*.{h,hpp}", "src/objc/table/WCTTable.h", "src/objc/table/WCTTableProtocol.h", "src/objc/table/WCTTable+Table.h", "src/objc/table/WCTDatabase+Table.h", "src/objc/table/WCTHandle+Table.h", "src/common/winq/*.{h,hpp}", "src/common/winq/**/*.{h,hpp}", "src/common/platform/SysTypes.h", "src/common/utility/Shadow.hpp", "src/common/utility/Macro.h", "src/common/utility/CaseInsensitiveList.hpp", "src/common/core/fts/FTSConst.h", "src/common/core/fts/tokenizer/TokenizerModule.hpp", "src/common/core/fts/tokenizer/TokenizerModuleTemplate.hpp", "src/common/core/fts/tokenizer/BaseTokenizerUtil.hpp", "src/common/core/fts/tokenizer/PinyinTokenizer.hpp", "src/common/core/fts/tokenizer/OneOrBinaryTokenizer.hpp", "src/common/core/fts/auxfunction/FTS5AuxiliaryFunctionTemplate.hpp", "src/common/core/fts/auxfunction/AuxiliaryFunctionModule.hpp", "src/common/core/fts/auxfunction/SubstringMatchInfo.hpp", "src/common/core/fts/FTSError.hpp", "src/common/core/RecyclableHandle.hpp", "src/common/core/Tag.hpp", "src/common/base/Recyclable.hpp", "src/common/base/SharedThreadedErrorProne.hpp", "src/common/base/StringView.hpp", "src/common/base/WCDBOptional.hpp", "src/common/base/WCDBError.hpp", "src/common/base/Data.hpp", "src/common/base/UnsafeData.hpp", "src/cpp/WCDBCpp.h", "src/cpp/**/*.{h,hpp}", "src/bridge/objcbridge/WCTBridgeMacro.h", "src/bridge/objcbridge/WCTBridgeProperty.h", "src/bridge/objcbridge/WCTBridgeProperty.h", "src/bridge/objcbridge/WCTBridgeProperty+CPP.h"
2525
wcdb.private_header_files = "src/bridge/WCDBBridging.h", "src/bridge/base/**/*.{h}", "src/bridge/cppbridge/**/*.{h}", "src/bridge/winqbridge/**/*.{h}", "src/bridge/objcbridge/WCTAPIBridge.h"
2626
wcdb.source_files = "src/WCDB.h", "src/common/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/objc/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/cpp/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/swift/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/bridge/**/*.{swift,h,hpp,c,cpp,m,mm}"
27-
wcdb.exclude_files = "src/common/platform/WCTFileManager.cpp", "src/common/platform/WCTOperationQueue.cpp", "src/objc/core/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/cpp/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/objc/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/swift/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/bridge/tests/**/*.{swift,h,hpp,c,cpp,m,mm}"
27+
wcdb.exclude_files = "src/common/platform/WCTFileManager.cpp", "src/common/platform/WCTOperationQueue.cpp", "src/objc/operationqueue/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/cpp/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/objc/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/swift/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/bridge/tests/**/*.{swift,h,hpp,c,cpp,m,mm}"
2828
wcdb.subspec 'no-arc' do |sna|
2929
sna.requires_arc = false
30-
sna.source_files = "src/objc/core/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/common/core/operate/OperationQueueForMemory.hpp"
30+
sna.source_files = "src/objc/operationqueue/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/common/core/operate/OperationQueueForMemory.hpp"
3131
end
3232
wcdb.preserve_path = "src/support/WCDB.modulemap"
3333
wcdb.module_map = "src/support/WCDB.modulemap"

WCDB.swift.podspec

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Pod::Spec.new do |wcdb|
2222
wcdb.tvos.deployment_target = "12.4"
2323
wcdb.source = { :git => "https://github.com/Tencent/wcdb.git", :tag => "v#{wcdb.version}" }
2424
wcdb.private_header_files = "src/bridge/**/*.{h}"
25-
wcdb.source_files = "src/swift/**/*.{swift}", "src/bridge/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/common/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/objc/core/WCTFileManager.mm", "src/objc/core/WCTFoundation.h", "src/objc/core/WCTFoundation.mm", "src/objc/fts/WCTFTSTokenizerUtil.h", "src/objc/fts/WCTFTSTokenizerUtil.mm", "src/objc/core/WCTDeclaration.h", "src/objc/core/WCTValue.h", "src/objc/orm/coding/WCTColumnCoding.h", "src/objc/orm/macro/WCTPropertyMacro.h", "src/objc/orm/coding/WCTTableCoding.h", "src/objc/core/WCTConvertible.h", "src/objc/core/WCTCommon.h", "src/objc/core/WCTOptional.h", "src/objc/core/WCTTag.h"
25+
wcdb.source_files = "src/swift/**/*.{swift}", "src/bridge/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/common/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/objc/core/WCTFileManager.mm", "src/objc/core/WCTFoundation.h", "src/objc/core/WCTFoundation.mm", "src/objc/core/WCTFTSTokenizerUtil.h", "src/objc/core/WCTFTSTokenizerUtil.mm", "src/objc/core/WCTDeclaration.h", "src/objc/core/WCTValue.h", "src/objc/orm/coding/WCTColumnCoding.h", "src/objc/orm/macro/WCTPropertyMacro.h", "src/objc/orm/coding/WCTTableCoding.h", "src/objc/core/WCTConvertible.h", "src/objc/core/WCTCommon.h", "src/objc/core/WCTOptional.h", "src/objc/core/WCTTag.h"
2626
wcdb.exclude_files = "src/swift/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/bridge/tests/**/*.{swift,h,hpp,c,cpp,m,mm}", "src/common/platform/WCTFileManager.cpp", "src/common/platform/WCTOperationQueue.cpp", "src/common/core/operate/OperationQueueForMemory.cpp", "src/bridge/objcbridge/WCTBridgeProperty+CPP.h", "src/bridge/objcbridge/WCTBridgeProperty.mm"
2727
wcdb.requires_arc = true
2828
wcdb.preserve_path = "src/support/WCDBSwift.modulemap"
@@ -31,19 +31,14 @@ Pod::Spec.new do |wcdb|
3131
wcdb.libraries = "z", "c++"
3232
wcdb.subspec 'no-arc' do |sna|
3333
sna.requires_arc = false
34-
sna.source_files = "src/objc/core/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/common/core/operate/OperationQueueForMemory.hpp"
34+
sna.source_files = "src/objc/operationqueue/WCTOperationQueue.mm", "src/common/core/operate/OperationQueueForMemory.cpp", "src/common/core/operate/OperationQueueForMemory.hpp"
3535
end
3636
wcdb.pod_target_xcconfig = {
3737
"GCC_PREPROCESSOR_DEFINITIONS" => "SQLITE_WCDB=1 SQLITE_WCDB_LOCK_HOOK=1 SQLITE_WCDB_CHECKPOINT_HANDLER=1 SQLITE_WCDB_SUSPEND=1 SQLITE_WCDB_IMPROVED_CHECKPOINT=1 SQLITE_HAS_CODEC SQLITE_DEFAULT_PAGE_SIZE=4096 SQLITE_DEFAULT_SYNCHRONOUS=1 SQLITE_DEFAULT_WAL_SYNCHRONOUS=1 SQLITE_DEFAULT_LOCKING_MODE=0 SQLITE_DEFAULT_WAL_AUTOCHECKPOINT=0",
3838
'SWIFT_WHOLE_MODULE_OPTIMIZATION' => 'YES',
3939
'APPLICATION_EXTENSION_API_ONLY' => 'YES',
4040
"HEADER_SEARCH_PATHS" => "${PODS_ROOT}/WCDBSwift",
4141
"LIBRARY_SEARCH_PATHS[sdk=macosx*]" => "$(SDKROOT)/usr/lib/system",
42-
"OTHER_SWIFT_FLAGS[config=Release][sdk=iphonesimulator*]" => "-D WCDB_IOS",
43-
"OTHER_SWIFT_FLAGS[config=Release][sdk=iphoneos*]" => "-D WCDB_IOS",
44-
"OTHER_SWIFT_FLAGS[config=Debug]" => "-D DEBUG",
45-
"OTHER_SWIFT_FLAGS[config=Debug][sdk=iphonesimulator*]" => "-D WCDB_IOS -D DEBUG",
46-
"OTHER_SWIFT_FLAGS[config=Debug][sdk=iphoneos*]" => "-D WCDB_IOS -D DEBUG",
4742
"CLANG_CXX_LANGUAGE_STANDARD" => "gnu++14",
4843
"CLANG_CXX_LIBRARY" => "libc++",
4944
"GCC_C_LANGUAGE_STANDARD" => "gnu11",

0 commit comments

Comments
 (0)