Brad King wrote:
> On 05/13/2012 04:24 PM, Stephen Kelly wrote:
>> I've added a 'WIP: Experiment with backwards compatibility.' patch to my
>> gitorious clone.
>>
>> + // TODO: Is there a 'not set' state for properties?
>> + // We should handle that differently to boolean False.
>
> There is a "not set" state for properties. Use the raw "GetProperty"
> method. If it returns a NULL pointer then the property is not set.
Good to know, thanks.
>
>> I think it should be possible to do this by either setting
>> a default in the CMake files, or handling the setting of properties of
>> names matching CMAKE_SHARED_LIBRARY_${lang}_FLAGS specially to also store
>> a default on first call (which will come from the CMake internal files, I
>> guess?)
>
> That gives me an idea on how to add a policy for this without triggering
> on every shared library. Trigger it on projects that change the flags.
> Since POSITION_INDEPENDENT_CODE's default behavior is the same as the
> current default CMAKE_SHARED_LIBRARY_${lang}_FLAGS there is no problem
> for projects that do not change the flags.
>
> Start by implementing POSITION_INDEPENDENT_CODE and initialize it to
> true for shared libraries just as in your original proposal. There is
> no need for special "not set" behavior as in my previous suggestion.
>
> After each language is enabled (cmGlobalGenerator::EnableLanguage)
> save the initial CMAKE_SHARED_LIBRARY_${lang}_FLAGS in a C++ structure.
> <snip>
> For executables CMake can first look for PIE and then for PIC.
Done and re-pushed to my clone. I still have to write the unit tests, but I
think it can be reviewed again at this point.
Thanks,
Steve.
--
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers