On Tuesday 12 October 2010 17:27:31 David Cole wrote: > On Tue, Oct 12, 2010 at 5:21 PM, Brad King <brad.k...@kitware.com> wrote: > > On 10/12/2010 03:32 PM, Alexander Neundorf wrote: > > > On Tuesday 12 October 2010, Bill Hoffman wrote: > > >> Anyway, in the short term, we are going to go with FPHSA2, Alex do you > > >> have time to do that? > > > > > > FPHSA2 would have been my last choice. > > > > > In staging there is already the branch AddCMAKE_CURRENT_LIST_DIR: > > http://cmake.org/gitweb?p=stage/cmake.git;a=log;h=refs/heads/AddCMAKE_CUR > > RENT_LIST_DIR > > > > > where I implemented the option with the hardcoded paths: > > The original FPHSA floated around outside of CMake in many projects > > before it was distributed with CMake. It is a long-established API > > that has been re-implemented (via copying) in many projects. Therefore > > it is too late to change. See James Bigler's comment earlier in this > > thread about ABI compatibility approaches. No one proposes changing > > the ABI of "malloc" in C because many custom allocation libraries > > override it at link time. > > > > Currently projects have the option to override it with CMAKE_MODULE_PATH > > to providing a module with the same API but a tweaked implementation. > > With the CURRENT_LIST_DIR approach that option goes away, and any > > project that does it already will break. > > > > > macro with a new name ... which we then have to maintain forever > > > > It's not too bad. The new name has the new API. The original FPHSA > > module can just include the new one and forward calls appropriately. > > Any call to the original FPHSA will either go through the CMake version > > of it and forward to FPHSA2 or go through a project-overridden one. > > Any call to the FPHSA2 will either go through the CMake version or > > through one overridden by a project aware of the new API. > > > > This isn't perfect but it is 100% compatible with current project > > releases and will get us through this CMake rc cycle safely. Future > > enhancements to FPHSA2 may need yet another new module, but I think > > that is in the nature of this particular function. > > > I really think a second function is the way to go here. It is the least > risky and maintains full compatibility with existing module overrides. It > does not have to be named FPHSA2 (I am not a big fan of "2" named > functions...) but I do think it needs to be a newly-named function, and > keep the old function as is. > > We can come up with better solutions moving forward, but for now, to keep > *everything* working well without breaking anything *else*... I think a > second function is our only realistic option. > I like the malloc analogy, and think it holds here. We do have a certain responsibility to maintain API compatibility, and having a new function seems like the best way to achieve that for the release. Going forward, versioned include files, or preference towards local files might be the way to go.
Marcus _______________________________________________ cmake-developers mailing list cmake-developers@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers