System target library: How to use them?

Hello,

While trying to prepare a package to wrap a system library (libxml2), I noticed the following warning:

warning: system packages are deprecated; use system library targets instead

I could not find much documentation on how to use it, except the Swift evolution proposal: https://github.com/apple/swift-evolution/blob/master/proposals/0208-package-manager-system-library-targets.md

Any tips on how to get started ? Where should I place my modulemap file ?

I would like to add the target system library in my package to avoid exposing an extra wrapper repository. It seems exactly what this features is about.

Thanks !

There is an updated howto here: https://github.com/apple/swift-package-manager/blob/263171977ebcd47f4aaca1202cff5a96c5158a64/Documentation/Usage.md#import-system-libraries

4 Likes

Thanks, I confirm this is working fine.

Why then master branch has changed the document. This section has been deleted from the document. Confused.

Thanks for the link.

It works with my own .so shared library [1] written in C which is not a system library. It works without pkg-config, dnf, yum, apt, ..

Hope it won't break and continues to work in the future swift releases.

[1] https://github.com/lijhello/swift-c

Hi, I tried without umbrella and the extra header files. I specified all header files and .so libraries in .modulemap file. It worked.
But is it guaranteed to be correct?

module.modulemap:
module clib {
header "/usr/include/stdio.h"
header "../../../hello/hello.h"
link "c"
link "hello"
}

Terms of Service

Privacy Policy

Cookie Policy