[Buildroot] [PATCH] yajl: fix static linking in a parallel build

Jörg Krause joerg.krause at embedded.rocks
Sat Apr 2 17:11:20 UTC 2016


On Sa, 2016-04-02 at 19:05 +0200, Samuel Martin wrote:
> On Sat, Apr 2, 2016 at 6:29 PM, Jörg Krause <joerg.krause at embedded.ro
> cks> wrote:
> > 
> > On Sa, 2016-04-02 at 17:13 +0200, Thomas Petazzoni wrote:
> > > 
> > > Hello,
> > > 
> > > On Fri,  1 Apr 2016 21:18:12 +0200, Jörg Krause wrote:
> > > 
> > > > 
> > > > 
> > > > + FOREACH (test ${TESTS})
> > > > +   GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
> > > > +   ADD_EXECUTABLE(${testProg} ${test})
> > > > +-  TARGET_LINK_LIBRARIES(${testProg} yajl m)
> > > > ++  TARGET_LINK_LIBRARIES(${testProg} yajl_s m)
> > > I am not sure to understand why this would fix the parallel build
> > > issue. The parallel build problem comes from the fact that the
> > > library
> > > and tests sit in different directories, and that they are built
> > > in
> > > parallel with each other. Both the yajl and yajl_s libraries are
> > > built
> > > in the same directory, separate from the tests directory. So I
> > > don't
> > > quite see how changing from using yajl to yajl_s is going to make
> > > a
> > > difference here. But maybe I'm missing something.
> > The issue is that we patch yajl (#0002) to build only the static
> > library in a static build. So there is no shared library target for
> > CMake to use as a dependency.
> hmm... with that explaination, I nack this.
> IMHO, the correct way to fix this would rather be:
> 
> IF(BUILD_SHARED_LIBS)
>   TARGET_LINK_LIBRARIES(${testProg} yajl m)
> ELSE()
>   TARGET_LINK_LIBRARIES(${testProg} yajl_s m)
> ENDIF()
> 

Yes, this would probably be best. However, the static library is build
in shared and static builds.

Jörg


More information about the buildroot mailing list