2013/7/3 Brad King <brad.k...@kitware.com>:
> On 7/3/2013 11:09 AM, Vadim Zhukov wrote:
>> I'm an OpenBSD developer, working mostly on porting software. Most of
>> my work is related to CMake-based land, including modern KDE and some
>> other Qt4-based stuff.
>
> Great, thanks for coming to us.
>
>> Here is a module I constructed a few months ago. It's helpful for
>> programs that want to use GNU-style backtrace(3) routine, which could
>> be found in different libraries and be declared in different headers
>> across OSes outta there.
>
> Thanks for working on this.  It looks similar to FindThreads in that
> the results could be builtin to the system libraries or in one of
> several other vendor-specific libraries.  Don't model the module after
> FindThreads though as that is one of the oldest modules and does not
> fully use modern conventions.
>
> The BACKTRACE_INCLUDE_DIR and BACKTRACE_LIBRARY variables should
> not be documented as results that consuming projects should use
> directly.  They are inputs to the module that end users edit in
> the cache.  The results go in BACKTRACE_INCLUDE_DIRS and
> BACKTRACE_LIBRARIES.  Look at how FindProtobuf.cmake separates
> the list of variables in its documentation, for example.

Thank you, that was exactly info I was looking for!

> The line
>
>  set(BACKTRACE_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
>
> looks a bit strange to me.  The CMAKE_REQUIRED_LIBRARIES variable
> is an input to the check_* APIs and should not be depended upon
> or used by a find module.  When calling check_symbol_exists you
> should set CMAKE_REQUIRED_* to known values not depending on the
> calling context.  In the case that some non-standard/non-system
> library is needed to provide the symbol it should be set by the
> user through the BACKTRACE_LIBRARY code path.

Yes, I was not sure if this should be done this way either. Other variants are:

1. find_library("c") - not as stupid as it looks from the first time,
because C++ compiler could be called with -nostdlib, for example (and
this was the reason for inclusion of CMAKE_REQUIRED_LIBRARIES
initially);

2. Just make sure BACKTRACE_LIBRARIES is empty: if the developer wants
to shoot himself in the foot with -nostdlib, then he's responsible for
the all consequences; and if he wants to avoid -lc, well, he'll
successfully avoid it.

I'd go with either way. For this try I choosed (2).

> Otherwise, the module looks like a great start!

Thank you for review. I'm sending updated module now. Aside tweaks
based on your input, I realized that there should be a way for the
user to specify BACKTRACE_HEADER, too. I hope that I did not
overcomplicate things.

Checked with the Clementine on OpenBSD-CURRENT.

--
  WBR,
  Vadim Zhukov

Attachment: FindBacktrace.cmake
Description: Binary data

--

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

Reply via email to