[swift-evolution] [swift-build-dev] [swiftpm] Add proposal for C language support
Drew Crawford
drew at sealedabstract.com
Sat Jan 2 15:57:15 CST 2016
Thanks for directing me to this, I missed it.
> Most projects will not conform to these conventions.
Giggle. Kind of an understatement, no?
Like, okay. Here is a project I'd like to package. (Read: I do package it, with features not in mainline swiftPM.) https://github.com/jedisct1/libsodium <https://github.com/jedisct1/libsodium>
Let's take a look at how this package realistically builds:
* It has tests ("make check")
* It has various --enable-foo flags
* It swaps in special implementations depending on if you have AMD64 <https://github.com/jedisct1/libsodium/blob/master/src/libsodium/Makefile.am#L162> or AVX instructions <https://github.com/jedisct1/libsodium/blob/master/src/libsodium/Makefile.am#L145> or SSE2 <https://github.com/jedisct1/libsodium/blob/master/src/libsodium/Makefile.am#L229> etc.
* The optimization level is tuned on a per-architecture basis <https://github.com/jedisct1/libsodium/blob/master/dist-build/android-armv7-a.sh#L3>
* They build (also) on Windows. They're not changing how they're packaged for "SwiftPM, the Mac/Linux build system".
* Oh and this is cryptography code. Do you *really* want to touch it?
I think an important feature of any C target proposal is that there will actually exist C targets which can be built under the proposal. Until there are C people coming out of the woodwork saying "sure, I will repackage my software this way" I think the entire value is debatable.
Getting signoff from libdispatch/CoreFoundation is necessary but not sufficient to clear that hurdle. I would think getting the other C deps in our own project family to repackage would be "table stakes" for any new C build system. The real test are projects that are third-party and less friendly.
And I do not see realistically how we are ever going to support a project like libsodium, except calling out to automake. An automake solution coincidentally supports both libdispatch and CoreFoundation right now. IMO something like that is a much, much better direction in the short-term, and once we have done the first step of "packaging" those software via automake we will have "real" C projects in our package manager and we can design our C support around the concerns of real projects instead of imaginary ones.
> On Jan 2, 2016, at 11:00 AM, Daniel Dunbar via swift-build-dev <swift-build-dev at swift.org> wrote:
>
> Happy 2016!
>
> I am working on an initial proposal for adding support for C language targets to the Swift package manager, and am interested in feedback:
> https://github.com/ddunbar/swift-evolution/blob/master/proposals/NNNN-swiftpm-c-language-targets.md
>
> Some TL;DR:
> - The proposal defines a basic convention for pure C language targets (no Swift/C mix and match, but other Swift targets can use the C targets).
> - This is just intended to be the minimal initial feature, there will be a lot of add on work which I expect should be tackled in follow on PRs/proposals.
> - The proposal doesn't try and outline every single nitty detail (e.g., exactly what C++ standard we will compile with). My intention is to pick a sensible default at implementation time and refine incrementally.
>
> Unless there are serious objections, I am hoping to hope to land this proposal soon and start work on the feature shortly after.
>
> Cheers,
> - Daniel
>
>
> _______________________________________________
> swift-build-dev mailing list
> swift-build-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-build-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160102/58766af5/attachment.html>
More information about the swift-evolution
mailing list