On 07/15/2014 07:44 AM, Jose Fonseca wrote: > On 07/07/14 18:28, Emil Velikov wrote: >> Some of our third_party libraries may be build without it thus we'll >> fail at >> link tim. >> >> Signed-off-by: Emil Velikov <[email protected]> >> --- >> cmake/Modules/WaffleDefineCompilerFlags.cmake | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/cmake/Modules/WaffleDefineCompilerFlags.cmake >> b/cmake/Modules/WaffleDefineCompilerFlags.cmake >> index 4d149c8..96a7a10 100644 >> --- a/cmake/Modules/WaffleDefineCompilerFlags.cmake >> +++ b/cmake/Modules/WaffleDefineCompilerFlags.cmake >> @@ -50,6 +50,8 @@ if(waffle_on_linux) >> waffle_add_c_flag("-Werror=missing-prototypes" >> WERROR_MISSING_PROTOTYPES) >> endif() >> >> +waffle_add_c_flag("-fPIC" WITH_FPIC) >> + >> waffle_check_thread_local_storage() >> >> if(waffle_has_tls) >> > > Another way of fixing this is doing like in Apitrace: > > - > https://github.com/apitrace/apitrace/blob/master/cmak/ConvenienceLibrary.cmake > > > - > https://github.com/apitrace/apitrace/commit/c56b9acc6abcae465b916f6ebafa3a282d1f36fc > > > This gives more control. For example, unlike a blanket -FPIC flag, > executables won't be needlessly compiled with FPIC.
Jose, your add_convenience_library() function may be unneeded. See the manpage quote below. Emil, did you intend to compile *everything*, including executables, with PIC? On master, Waffle is already building shared libraries with PIC. I verified it with: $ ninja clean $ ninja -v libwaffle-1.so | grep -e '-o libwaffle' ... cc -fPIC ... -o lib/libwaffle-1.so.0.3.90 ... CMake's default behavior is to build shared libraries with PIC. From man://cmake(1) : > set_target_properties > ... > POSITION_INDEPENDENT_CODE > Whether to create a position-independent target > > The POSITION_INDEPENDENT_CODE property determines whether posi‐ > tion independent executables or shared libraries will be cre‐ > ated. This property is true by default for SHARED and MODULE > library targets and false otherwise. This property is initial‐ > ized by the value of the variable CMAKE_POSITION_INDEPEN‐ > DENT_CODE if it is set when a target is created. _______________________________________________ waffle mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/waffle

