<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 1 Feb 2019 at 14:49, Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 01/02/2019 10:06, Vijay Kumar Banerjee wrote:<br>><br>> On Fri, 1 Feb 2019 at 12:13, Sebastian Huber <br>> <<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a> <br>> <mailto:<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a>>> wrote:<br>><br>>     Hello,<br>><br>>     how can I check if a function exists in waf (similar to<br>>     AC_CHECK_FUNC)?<br>>     Currently, we get this output from the RTEMS tools waf configure<br>>     (please<br>>     note the "Invalid argument 'function_name' in test"):<br>><br>> Hi,<br>><br>> The support for 'function_name' has been removed since waf 2 as it<br>> was broken ( see <br>> <a href="https://gitlab.com/ita1024/waf/blob/master/waflib/Tools/c_config.py#L420" rel="noreferrer" target="_blank">https://gitlab.com/ita1024/waf/blob/master/waflib/Tools/c_config.py#L420</a>)<br>
<br>Nice.<br>
<br>><br>> I guess the best option is to just use 'header_name' or to use the <br>> 'fragment' parameter to write a fragment that calls the desired function.<br>
<br>So, there is no standard compile and link test for functions? If I use this<br>
<br>     conf.check_cc(fragment = 'int main(void) { strnlen("", 0); return <br>0; }',<br>                   header_name="string.h", features = 'c', mandatory = <br>False)<br>
<br>waf outputs<br>
<br>Checking for header string.h                  : yes<br>
<br>I don't want to test for string.h, I want to test for strnlen(). In <br>config.log we have:<br>
<br></blockquote><div><br></div><div>You can use the msg param like this ... </div><div>============</div><div><div>diff --git a/rtemstoolkit/wscript b/rtemstoolkit/wscript</div><div>index 2c126c8..105869f 100644</div><div>--- a/rtemstoolkit/wscript</div><div>+++ b/rtemstoolkit/wscript</div><div>@@ -374,6 +374,12 @@ def conf_libiberty(conf):</div><div>     conf.check(header_name='process.h',   features = 'c', mandatory = False)</div><div>     conf.check(header_name='stdlib.h',    features = 'c')</div><div>     conf.check(header_name='string.h',    features = 'c')</div><div>+    conf.check_cc( fragment = '''</div><div>+                              #include <string.h></div><div>+                              int main(void) { strnlen("", 0); return 0; }</div><div>+                                 ''',</div><div>+                    features = 'c',</div><div>+                    msg = 'Checking for function strnlen')</div><div>     conf.check(header_name='strings.h',   features = 'c', mandatory = False)</div><div>     conf.check(header_name='sys/file.h',  features = 'c', mandatory = False)</div><div>     conf.check(header_name='sys/stat.h',  features = 'c', mandatory = False)</div></div><div><br></div><div>============ <br></div><div><br></div><div>This gives an output </div><div><br></div><div>Checking for function strnlen            : yes </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">---------------------------------------------<br>Checking for header string.h<br>==><br>int main(void) { strnlen("", 0); return 0; }<br><==<br>[1/1] Compiling <br> [32mbuild/.conf_check_6da1e91772980301eb2528a1d150a7ab/test.c [0m<br>
<br>['/usr/bin/gcc', '../test.c', '-c', <br>'-o/scratch/git-rtems-tools/build/.conf_check_6da1e91772980301eb2528a1d150a7ab/testbuild/test.c.1.o']<br>err: ../test.c: In function ‘main’:<br>../test.c:1:18: warning: implicit declaration of function ‘strnlen’ <br>[-Wimplicit-function-declaration]<br>  int main(void) { strnlen("", 0); return 0; }<br>                   ^~~~~~~<br>
<br>yes<br>---------------------------------------------<br>
<br>So, this test uses already quite some code and still is basically useless.<br>
<br>-- <br>Sebastian Huber, embedded brains GmbH<br>
<br>Address : Dornierstr. 4, D-82178 Puchheim, Germany<br>Phone   : +49 89 189 47 41-16<br>Fax     : +49 89 189 47 41-09<br>E-Mail  : <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a><br>PGP     : Public key available on request.<br>
<br>Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.<br>
<br>
</blockquote></div></div></div></div></div>