diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..ac0f7e4 --- /dev/null +++ b/Package.swift @@ -0,0 +1,44 @@ +// 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", + "./src/swift", + "./include", + "./test", + "./win", + ], + sources: [ + "./src", + ], + publicHeadersPath: "./include" + ), + .target( + name: "cglmHeader", + path: "./", + exclude: [ + "./docs", + "./include", + "./test", + "./win", + ], + sources: [ + "./src/swift", + ], + publicHeadersPath: "./include" + ), + ], + cLanguageStandard: .c11 +) 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) 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 * +} 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