Re: [swift-users] how to ``swift build`` C library cleanly without using -Xcc -Xlinker and -Xswiftc

2016-10-20 Thread Martin Man via swift-users
Hi Dan,

thanks for your comments… I have prepared a simple module here: 
https://github.com/mman/cmod1.

``git clone`` and ``swift build`` it and you will see the problem I’m talking 
about… 

please let me know if you need any help, I’ll prepare a more complex project 
showing the problem with this module being used as a dependency of another more 
complex module soon…

thanks,
Martin

> On 20 Oct 2016, at 17:34, Daniel Dunbar  wrote:
> 
>> 
>> On Oct 20, 2016, at 7:25 AM, Martin Man via swift-users 
>> > wrote:
>> 
>> Hi guys,
>> 
>> I’m wrapping three little native C libraries using SPM to a nice swifty 
>> modules. Say cmod1, cmod2, and cmod3. They all in the and are dependencies 
>> of a bigger project.
>> 
>> Since these legacy C libraries have headers in various ways incompatible 
>> with SPM I’m also providing my own custom module.modulemap inside of 
>> Sources/cmod1/include folder which exports only certain headers.
>> 
>> The module.modulemap is in pretty standard form with relative path to the 
>> header
>> 
>> module cmod1 {
>> header “cmod1/header1.h”
>> export “*”
>> link “cmod1"
>> } 
>> 
>> When using ``swift build`` to build the module, C sources compile fine but 
>> switc bails out when parsing modulemap because it can not find headers 
>> referenced from header1.h with an error message like this
>> 
>> :1:10: note: in file included from :1:
>> #include “/projects/something/Sources/cmod1/include/cmod/header1.h"
> 
> Is this misspelled? cmod/header1.h vs cmod1/header1.h?
> 
> Can you show the exact include style used in the module.modulemap and in the 
> project?
> 
>>  ^
>> /projects/something/Sources/cmod1/include/cmod1/header1.h:18:10: error: 
>> ‘cmod1/header2.h' file not found
>> 
>> Now I know that I can give swiftc correct -Xswiftc -Ipath switch and then it 
>> builds cleanly, but this means that plain ``swift build`` never succeeds…
>> 
>> Q1: Is my assumption correct that the ultimate goal of mine is to make the 
>> swift package build cleanly using just ``swift build`` without providing any 
>> commandline flags?
> 
> Yes.
> 
>> Q2: When build of a certain package cmod1 requires command line flags -Xcc 
>> -Xlinker and -Xswiftc, what’s the correct way to pass them in when such 
>> package is a dependency of bigger project and which gets git pulled and 
>> compiled as part of outer package build?
> 
> We don't have a solution for this yet, eventually we want to find a way that 
> all that data has a proper home in the manifest.
> 
>  - Daniel
> 
>> 
>> thanks for your time, unfortunately the sources of these packages can not be 
>> made public yet but I think I can generate a simple broken project on github 
>> if anyone wants to take a look...
>> 
>> thanks,
>> Martin
>> 
>> 
>> ___
>> swift-users mailing list
>> swift-users@swift.org 
>> https://lists.swift.org/mailman/listinfo/swift-users 
>> 
___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] how to ``swift build`` C library cleanly without using -Xcc -Xlinker and -Xswiftc

2016-10-20 Thread Daniel Dunbar via swift-users

> On Oct 20, 2016, at 7:25 AM, Martin Man via swift-users 
>  wrote:
> 
> Hi guys,
> 
> I’m wrapping three little native C libraries using SPM to a nice swifty 
> modules. Say cmod1, cmod2, and cmod3. They all in the and are dependencies of 
> a bigger project.
> 
> Since these legacy C libraries have headers in various ways incompatible with 
> SPM I’m also providing my own custom module.modulemap inside of 
> Sources/cmod1/include folder which exports only certain headers.
> 
> The module.modulemap is in pretty standard form with relative path to the 
> header
> 
> module cmod1 {
> header “cmod1/header1.h”
> export “*”
> link “cmod1"
> } 
> 
> When using ``swift build`` to build the module, C sources compile fine but 
> switc bails out when parsing modulemap because it can not find headers 
> referenced from header1.h with an error message like this
> 
> :1:10: note: in file included from :1:
> #include “/projects/something/Sources/cmod1/include/cmod/header1.h"

Is this misspelled? cmod/header1.h vs cmod1/header1.h?

Can you show the exact include style used in the module.modulemap and in the 
project?

>  ^
> /projects/something/Sources/cmod1/include/cmod1/header1.h:18:10: error: 
> ‘cmod1/header2.h' file not found
> 
> Now I know that I can give swiftc correct -Xswiftc -Ipath switch and then it 
> builds cleanly, but this means that plain ``swift build`` never succeeds…
> 
> Q1: Is my assumption correct that the ultimate goal of mine is to make the 
> swift package build cleanly using just ``swift build`` without providing any 
> commandline flags?

Yes.

> Q2: When build of a certain package cmod1 requires command line flags -Xcc 
> -Xlinker and -Xswiftc, what’s the correct way to pass them in when such 
> package is a dependency of bigger project and which gets git pulled and 
> compiled as part of outer package build?

We don't have a solution for this yet, eventually we want to find a way that 
all that data has a proper home in the manifest.

 - Daniel

> 
> thanks for your time, unfortunately the sources of these packages can not be 
> made public yet but I think I can generate a simple broken project on github 
> if anyone wants to take a look...
> 
> thanks,
> Martin
> 
> 
> ___
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users