On 07/07, Dan Kegel wrote: > On Tue, Jul 7, 2015 at 2:25 PM, Steve Borho <st...@borho.org> wrote: > > We're already adding -fPIC to the compile flags for the two object > > libraries. This way one set of objects can be used to output the shared > > library and the static library. So the C++ files are already compiled > > with -fPIC. It is only a problem when we need to link a static library > > from one build into the shared library of another build. The static > > library itself no longer supports PIC. > > Really? I didn't think ar was in the habit of modifying machine code like > that. > > At this point maybe the thing to do is make a toy example that reproduces > the problem. (Ideally something truly stipped down, like > https://github.com/dankegel/winezeug/tree/master/cmake_examples/ex7 )
This rings a bell for me. We encountered this link failure once before. A little back history: Our project has two main source folders, common/ and encoder/, each with its own CMakeLists file. Originally we built each folder into a static library and then the root level CMakeLists file linked them into a shared library, static library, or executable. This broke when we introduced yasm-compiled assembly objects into the common/ folder. We begain getting these same exact PIC errors when trying to link the static common.lib and encoder.lib into libx265.so. And this is when we were forced to use cmake's object libraries. Now common/ and encoder/ generate object libraries and the root level CMakeLists links those objects into the final targets and this seemed to work ok. So the yasm objects are somehow the root cause. -- Steve Borho -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake