Michael Maguire created ARROW-6312:
--------------------------------------

             Summary: Declare required Libs.private in arrow.pc package config
                 Key: ARROW-6312
                 URL: https://issues.apache.org/jira/browse/ARROW-6312
             Project: Apache Arrow
          Issue Type: Bug
          Components: C++
    Affects Versions: 0.14.1
            Reporter: Michael Maguire
             Fix For: 0.15.0


The current arrow.pc package config file produced is deficient and doesn't 
properly declare static libraries pre-requisities that must be linked in in 
order to *statically* link in libarrow.a

Currently it just has:

```
Libs: -L${libdir} -larrow

```

But in cases, e.g. where you enabled snappy, brotli or zlib support in arrow, 
our toolchains need to see an arrow.pc file something more like:

```
Libs: -L${libdir} -larrow
Libs.private: -lsnappy -lboost_system -lz -llz4 -lbrotlidec -lbrotlienc 
-lbrotlicommon -lzstd

```

If not, we get linkage errors.  I'm told the convention is that if the .a has 
an UNDEF, the Requires.private plus the Libs.private should resolve all the 
undefs. See [https://linux.die.net/man/1/pkg-config]

 


However, as Sutou Kouhei pointed out in 
[https://github.com/apache/arrow/pull/5123#issuecomment-522771452,] the 
additional Libs.private need to be dynamically generated based on whether 
functionality like snappy, brotli or zlib is enabled..



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to