<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>I followed whatever procedure had been posted on the System Modules page on the Package Manager repo at GitHub. So yes, and I tried about 3 times :-)<br>
<br>
<div class="acompli_signature">Sent from <a href="https://aka.ms/qtex0l">Outlook Mobile</a></div>
<br>
</div>
<br>
<br>
<br>
<div class="gmail_quote">On Tue, Dec 8, 2015 at 9:24 PM -0800, &quot;Harlan Haskins&quot; <span dir="ltr">
&lt;<a href="mailto:harlan@harlanhaskins.com" target="_blank">harlan@harlanhaskins.com</a>&gt;</span> wrote:<br>
<br>
</div>
<div class="BodyFragment">
<div class="PlainText">Just covering all the bases here: did you commit and add Package.swift before making the tag?<br>
<br>
Sent from my iPhone<br>
<br>
&gt; On Dec 8, 2015, at 11:08 PM, Jason Dusek via swift-users &lt;swift-users@swift.org&gt; wrote:<br>
&gt; <br>
&gt; Gage,<br>
&gt; <br>
&gt; For what it's worth, after running `git init` and `git tag -f 1.0.0`<br>
&gt; in `CCairo` to get something importable, I run into this error:<br>
&gt; <br>
&gt; :;&nbsp; swift build<br>
&gt; Cloning Packages/CCairo<br>
&gt; &lt;unknown&gt;:0: error: no such file or directory:<br>
&gt; '/Users/solidsnack/Downloads/Sources/example/Packages/CCairo/Package.swift'<br>
&gt; <br>
&gt; <br>
&gt; On Tue, 8 Dec 2015 at 18:22 Gage Morgan via swift-users<br>
&gt; &lt;swift-users@swift.org&gt; wrote:<br>
&gt;&gt; <br>
&gt;&gt; Okay, I've filed a report. To make it easier, the thing's code is SR-152.<br>
&gt;&gt; <br>
&gt;&gt; <a href="https://bugs.swift.org/browse/SR-152">https://bugs.swift.org/browse/SR-152</a><br>
&gt;&gt; <br>
&gt;&gt; ________________________________<br>
&gt;&gt; From: gagemorgan@outlook.com<br>
&gt;&gt; To: mawadah@apple.com; gagemorgan@outlook.com<br>
&gt;&gt; <br>
&gt;&gt; Subject: RE: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>
&gt;&gt; Date: Tue, 8 Dec 2015 18:11:03 -0500<br>
&gt;&gt; <br>
&gt;&gt; What I'd like to know is, what is the &quot;link: &quot; part of the module.modulemap for? I pasted in the cairo.so part, but this only said that after doing so. I'd honestly just like to make sure this works.<br>
&gt;&gt; <br>
&gt;&gt; ________________________________<br>
&gt;&gt; To: mawadah@apple.com; swift-users@swift.org<br>
&gt;&gt; Date: Tue, 8 Dec 2015 18:07:25 -0500<br>
&gt;&gt; <br>
&gt;&gt; Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>
&gt;&gt; From: swift-users@swift.org<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; ________________________________<br>
&gt;&gt; From: gagemorgan@outlook.com<br>
&gt;&gt; To: mawadah@apple.com<br>
&gt;&gt; Subject: RE: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>
&gt;&gt; Date: Tue, 8 Dec 2015 18:03:42 -0500<br>
&gt;&gt; <br>
&gt;&gt; So...including cairo in an app returns this:<br>
&gt;&gt; <br>
&gt;&gt; Linking Executable:&nbsp; .build/debug/example<br>
&gt;&gt; /usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libcairo.so<br>
&gt;&gt; clang: error: linker command failed with exit code 1 (use -v to see invocation)<br>
&gt;&gt; &lt;unknown&gt;:0: error: link command failed with exit code 1 (use -v to see invocation)<br>
&gt;&gt; &lt;unknown&gt;:0: error: build had 1 command failures<br>
&gt;&gt; swift-build: exit(1): [&quot;/home/mgage/Downloads/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu15.10/usr/bin/swift-build-tool&quot;, &quot;-f&quot;, &quot;/home/mgage/Sources/example/.build/debug/example.o/llbuild.yaml&quot;]<br>
&gt;&gt; <br>
&gt;&gt; What went amiss?<br>
&gt;&gt; <br>
&gt;&gt; ________________________________<br>
&gt;&gt; From: mawadah@apple.com<br>
&gt;&gt; Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>
&gt;&gt; Date: Mon, 7 Dec 2015 19:27:56 -0800<br>
&gt;&gt; To: gagemorgan@outlook.com<br>
&gt;&gt; <br>
&gt;&gt; Once you have followed the instructions to create a system package, your own package declares a dependency on that package. This is also covered in those steps.<br>
&gt;&gt; <br>
&gt;&gt; To use the C APIs in your code, simply import the name of the module (as defined by the modulemap entry) in your swift file. It should just work.<br>
&gt;&gt; <br>
&gt;&gt; For instance, in the example from the sysmodules doc link I sent, you just<br>
&gt;&gt; <br>
&gt;&gt; import CJPEG<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; The C functions will have the same name in Swift as their C counterparts. The types might adjust to UnsafePointer etc.. For a list of those Swift bindings, run the REPL and import your module, then perform “:type lookup Module” to get a printout of available
 APIs.<br>
&gt;&gt; <br>
&gt;&gt; - mish<br>
&gt;&gt; <br>
&gt;&gt; On Dec 7, 2015, at 6:40 PM, Gage Morgan &lt;gagemorgan@outlook.com&gt; wrote:<br>
&gt;&gt; <br>
&gt;&gt; I read that. What I want to know is how to bind the functions themselves after creating a system package. How to use the c functions that got imported, if you will.<br>
&gt;&gt; <br>
&gt;&gt; Sent from Outlook<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; On Mon, Dec 7, 2015 at 6:39 PM -0800, &quot;Mish Awadah&quot; &lt;mawadah@apple.com&gt; wrote:<br>
&gt;&gt; <br>
&gt;&gt; Please see the reference at <a href="https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md">
https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md</a><br>
&gt;&gt; <br>
&gt;&gt; - mish<br>
&gt;&gt; <br>
&gt;&gt; On Dec 7, 2015, at 6:33 PM, Gage Morgan via swift-users &lt;swift-users@swift.org&gt; wrote:<br>
&gt;&gt; <br>
&gt;&gt; For any project: How is a C to Swift function binding created? I'd like to know how to import C functions to Swift. Once I can do this successfully, I'll be all set.<br>
&gt;&gt; <br>
&gt;&gt; Sent from Outlook<br>
&gt;&gt; <br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-users mailing list<br>
&gt;&gt; swift-users@swift.org<br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-users">https://lists.swift.org/mailman/listinfo/swift-users</a><br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; _______________________________________________ swift-users mailing list swift-users@swift.org
<a href="https://lists.swift.org/mailman/listinfo/swift-users">https://lists.swift.org/mailman/listinfo/swift-users</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-users mailing list<br>
&gt;&gt; swift-users@swift.org<br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-users">https://lists.swift.org/mailman/listinfo/swift-users</a><br>
&gt; _______________________________________________<br>
&gt; swift-users mailing list<br>
&gt; swift-users@swift.org<br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-users">https://lists.swift.org/mailman/listinfo/swift-users</a><br>
</div>
</div>
</body>
</html>