[waffle] [PATCH 10/33] cmake: build with fPIC when possible

Jose Fonseca jfonseca at vmware.com
Thu Jul 17 05:42:15 PDT 2014


On 17/07/14 05:22, Chad Versace wrote:
> 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 <emil.l.velikov at gmail.com>
>>> ---
>>>    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://urldefense.proofpoint.com/v1/url?u=https://github.com/apitrace/apitrace/blob/master/cmak/ConvenienceLibrary.cmake&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=ZXpgDERxJiJIOkLmgiWyvvdFCmOYeacV64waeZuyXto%3D%0A&s=550e80c43976ae6b7767b413f4500e1b92725f7ba8c82a921682e3c4913c2e04
>>
>>
>> -
>> https://urldefense.proofpoint.com/v1/url?u=https://github.com/apitrace/apitrace/commit/c56b9acc6abcae465b916f6ebafa3a282d1f36fc&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=ZXpgDERxJiJIOkLmgiWyvvdFCmOYeacV64waeZuyXto%3D%0A&s=3c0e0609776f678836fd6485f5485299a1ae228c092c74abfbecdbb67c434c5d
>>
>>
>> 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.

You're right.  Setting POSITION_INDEPENDENT_CODE property is much 
simpler/cleaner.  (Though I still find it convienent to have a 
add_convenience_library for the time being, as there are a bunch of such 
libraries in apitrace so it provides me a centralized place for these 
tweaks):

 
https://github.com/apitrace/apitrace/commit/d99553937cc53b82965421da1ca950c17f16a324

Jose



More information about the waffle mailing list