From 65b0b461ab9b39843978bf9168a08cc3b5da5dce Mon Sep 17 00:00:00 2001 From: Serhii Mumriak Date: Sat, 5 Sep 2020 20:39:12 -0700 Subject: [PATCH 1/3] Added simple swiftpm package file with module map and empty C file to trick the compiler to build the empty C target. --- Package.swift | 45 ++++++++++++++++++++++++++++++++++++++++ dummySrcForSwift/empty.c | 0 include/module.modulemap | 14 +++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 Package.swift create mode 100644 dummySrcForSwift/empty.c create mode 100644 include/module.modulemap diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..74198ff --- /dev/null +++ b/Package.swift @@ -0,0 +1,45 @@ +// swift-tools-version:5.2 + +import PackageDescription + +let package = Package( + name: "cglm", + products: [ + .library(name: "cglm", type: .static, targets: ["cglmHeader"]), + .library(name: "cglmc", targets: ["cglmCompiled"]), + ], + dependencies: [], + targets: [ + .target( + name: "cglmCompiled", + path: "./", + exclude: [ + "./docs", + "./dummySrcForSwift", + "./include", + "./test", + "./win", + ], + sources: [ + "./src", + ], + publicHeadersPath: "./include" + ), + .target( + name: "cglmHeader", + path: "./", + exclude: [ + "./docs", + "./include", + "./src", + "./test", + "./win", + ], + sources: [ + "./dummySrcForSwift", + ], + publicHeadersPath: "./include" + ), + ], + cLanguageStandard: .c11 +) diff --git a/dummySrcForSwift/empty.c b/dummySrcForSwift/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/include/module.modulemap b/include/module.modulemap new file mode 100644 index 0000000..40b8b9f --- /dev/null +++ b/include/module.modulemap @@ -0,0 +1,14 @@ +module cglm { + header "cglm/cglm.h" + header "cglm/struct.h" + + export * +} + +module cglmc { + header "cglm/cglm.h" + header "cglm/struct.h" + header "cglm/call.h" + + export * +} From 2e5257bcc1b43eda0bd97e47c42e8ddd9eadd64f Mon Sep 17 00:00:00 2001 From: Serhii Mumriak Date: Mon, 7 Sep 2020 17:09:37 -0700 Subject: [PATCH 2/3] Updated 160 PR according review comments. --- Package.swift | 5 ++--- dummySrcForSwift/empty.c | 0 src/swift/empty.c | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 dummySrcForSwift/empty.c create mode 100644 src/swift/empty.c diff --git a/Package.swift b/Package.swift index 74198ff..ac0f7e4 100644 --- a/Package.swift +++ b/Package.swift @@ -15,7 +15,7 @@ let package = Package( path: "./", exclude: [ "./docs", - "./dummySrcForSwift", + "./src/swift", "./include", "./test", "./win", @@ -31,12 +31,11 @@ let package = Package( exclude: [ "./docs", "./include", - "./src", "./test", "./win", ], sources: [ - "./dummySrcForSwift", + "./src/swift", ], publicHeadersPath: "./include" ), diff --git a/dummySrcForSwift/empty.c b/dummySrcForSwift/empty.c deleted file mode 100644 index e69de29..0000000 diff --git a/src/swift/empty.c b/src/swift/empty.c new file mode 100644 index 0000000..7c27d40 --- /dev/null +++ b/src/swift/empty.c @@ -0,0 +1 @@ +// This empty file is needed to trick swiftpm to build the header-only version of cglm as swiftpm itself does not support C targets that have no source code files \ No newline at end of file From 73f32b9ef7e927f399a27a6ad8efe78368dda5d0 Mon Sep 17 00:00:00 2001 From: Serhii Mumriak Date: Mon, 7 Sep 2020 17:26:33 -0700 Subject: [PATCH 3/3] Updated README.md with swift configuration information --- README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/README.md b/README.md index aceb123..595812e 100644 --- a/README.md +++ b/README.md @@ -212,6 +212,38 @@ cglm_dep = dependency('cglm', fallback : 'cglm', 'cglm_dep') executable('exe', 'src/main.c', dependencies : cglm_dep) ``` +### Swift (Swift Package Manager) + +Currently only default build options are supported. Add **cglm** dependency to your project: + +```swift +... +Package( + ... + dependencies: [ + ... + .package(url: "https://github.com/recp/cglm", .branch("master")), + ] + ... +) +``` + +Now add **cgml** as a dependency to your target. Product choices are: +- **cglm** for inlined version of the library which can be linked only statically +- **cglmc** for a compiled version of the library with no linking limitation + +```swift +... +.target( + ... + dependencies: [ + ... + .product(name: "cglm", package: "cglm"), + ] + ... +) +... +``` ### Unix (Autotools)