<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 22, 2022 at 10:12 AM DAVE ERICKSON <<a href="mailto:daveerickson@shaw.ca">daveerickson@shaw.ca</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"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div> Thanks for stepping on my point, Joel.  :)<br></div></div></div></blockquote><div><br></div><div>Sorry if I said something that contradicted you. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div></div><div><br></div><div>( I attended the RTEMS Open course instructed by Joel many years ago...  )<br></div></div></div></blockquote><div><br></div><div>Thanks. :)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div></div><div><br></div><div>Joel's comments on <br></div><div><br></div><div><div>CFLAGS += -Og -g -Wall</div><div>CXXFLAGS +=  -Og -g -Wall</div><div><br></div><div>will NOT solve your gcc "can't find library problem" since these are tangential to your problem and are compiler flags. Compiler flags don't affect linking which is the stage where gcc/ar/ld programs create the code archive. <br></div></div><div><br></div><div>If you want to express exactly which library to use then specify in the LDFLAGS environment variable  in the folder where gcc is configured to "build from" in   bsps/arm/tms570/config/xxx.cfg<br></div><div><br></div><div>LDFLAGS += ~/ ...rest of explicit path... /arm-rtems5/lib/libm.a<br></div><div><br></div><div>(NOTICE NO FLAG PREFIX ON EXPLICIT PATH)<br></div></div></div></blockquote><div><br></div><div>libm.a should be implicitly along the search path. If it isn't, then something isn't right with the tool chain.</div><div><br></div><div>Test case based on /tmp/t.c with the sparvc/leon3 bsp on the master:</div><div><br></div><div>============</div><div>int main(void)<br>{<br>  return 0;<br>}</div><div>===========</div><div><br></div><div>===============================</div><div>BSPDIR=/home/joel/rtems-work/tools/6/bsp-install/sparc-rtems6/leon3/<br>ABI_FLAGS=-mcpu=leon3<br>CFLAGS="-Og -g -Wall"<br><br>sparc-rtems6-gcc ${ABI_FLAGS} ${CFLAGS} \<br>  -B ${BSPDIR}/lib/ -qrtems t.c -o t \<br>  -lrtemsdefaultconfig -lm<br></div><div>===============================</div><div><br></div><div>Since t.c is a stub main(), there is no RTEMS configuration and you need the  -lrtemsdefaultconfig.</div><div><br></div><div>-lm is in the same directory as libc.a and implicitly part of the library search path. Every library provided by gcc, newlib, or RTEMS will be on the search path.</div><div><br></div><div>If you follow the normal instructions for libbsd or lwip, they will be laid into the BSP install directory and also available.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div></div><div><br></div><div>Will instruct gcc/ar/ld to do exactly what you want, which is include EXACTLY that library at EXACTLY that location.<br></div></div></div></blockquote><div><br></div><div>If you do it manually, you have to be careful to pick the right multilib variant. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div></div><div><br></div><div>The explicit library path can be used to check and see if it's a location problem before a library internals problem.  </div><div><br></div><div>nm -D   or nm to find the missing symbol inside a library.<br></div><div><br></div><div><br></div><div>BTW  RTEMS uses GNU autotools differently in that it configures in one folder/directory and the builds targets into another folder is a very rare way of using autotools. I know this because I have downloaded and reviewed over 5000 open source projects for my new book.<br></div></div></div></blockquote><div><br></div><div>Funny because the core GNU tools like gcc, binutils, gdb plus newlib all allow out of tree builds. </div><div><br></div><div>It may be rare to use it this way but it works and leaves your source directory with no build artifacts. </div><div><br></div><div>It also allows having multiple builds from the same source tree simultaneously.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div></div><div><br></div><div>Most GNU autotools projects configure IN THE FOLDER that they want to compile and archive source code.  That's one reason why the problems of diagnosing RTEMS build configurations are harder.<br></div></div></div></blockquote><div><br></div><div>This is not required for autotools. It is just the default instructions. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div></div><div><br></div><div>Setting explicit file locations with absolute directories is a way to workaround the problems. <br></div><div><br></div><div><br></div><div>Cheers!<br></div><div><br></div><div>Daemondave on github<br></div><div><br></div><div>Check out my new book  Untrapped Value on LeanPub: <a href="https://leanpub.com/untrappedvalue" target="_blank">https://leanpub.com/untrappedvalue</a><br></div><div><br></div><div><br></div><div><br></div><div><br></div><hr id="gmail-m_-7146595691902673429zwchr"><div><b>From: </b>"Joel Sherrill" <<a href="mailto:joel@rtems.org" target="_blank">joel@rtems.org</a>><br><b>To: </b>"DAVE ERICKSON" <<a href="mailto:daveerickson@shaw.ca" target="_blank">daveerickson@shaw.ca</a>><br><b>Cc: </b>"Y. HB" <<a href="mailto:sprhawk@gmail.com" target="_blank">sprhawk@gmail.com</a>>, "<a href="mailto:rtems-users@rtems.org" target="_blank">rtems-users@rtems.org</a>" <<a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a>><br><b>Sent: </b>Friday, July 22, 2022 8:42:49 AM<br><b>Subject: </b>Re: How can I add LDFLAGS for bsp build?<br></div><div><br></div><div><div dir="ltr">This is an application matter and it all depends on what build system you are using.<br><div>If your build system is make, then something like this will probably work.<br><br><div>LDFLAGS += -lm </div></div><br><div>You may also want to ensure that the CFLAGS has the desired optimization, debug, and warning levels selected:</div><br><div>CFLAGS += -Og -g -Wall</div><div>CXXFLAGS +=  -Og -g -Wall</div><br><div>If using waf, cmake, etc, etc, you ultimately want to produce the same invocations of gcc but the mechanics are different.</div><br><div>--joel</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 22, 2022 at 9:09 AM DAVE ERICKSON <<a href="mailto:daveerickson@shaw.ca" rel="nofollow noopener noreferrer" target="_blank">daveerickson@shaw.ca</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"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div>Hi Y.HB<br></div><br><div>LDFLAGS sets both the library kind to include in the archive build but it also uses the -L flags to know where to look for it. The -lm can mean the libm.a. libm.so <a href="http://libm.la" rel="nofollow noopener noreferrer" target="_blank">libm.la</a> so it searches the LD_LIBRARY_PATH environment variable to find one that fits. If you want expressly to include the libm.a you should specify it instead of -lm. The first thing I recommend is find the symbols inside the Makefile configured for the .  Look for the LDFLAGS and then your LD_LIBRARY_PATH to see if it matches where that arm-rtems5/lib/libm.a is.<br></div><br><div>You can even use the flag argument:  arm-rtems5/lib/libm.a or ./arm-rtems5/lib/libm.a to express the precise library and location to use. <br></div><br><div>This is one important distinction that many people confuse about how automake and autoconf work: There is no "internal logic" in the autotools way of creating recipes for Makefiles. m4 is used for pattern processing. You must express what you want it to make, it won't go looking anywhere else than what is specified. <br></div><br><div>It's not cmake, scons, or raw make. GNU Autotools creates recipe files, like config.status, that just hold environmental variables.<br></div><br><div>DaemonDave on github.<br></div><br><hr id="gmail-m_-7146595691902673429gmail-m_-2544163645520673777zwchr"><div><b>From: </b>"Y. HB" <<a href="mailto:sprhawk@gmail.com" rel="nofollow noopener noreferrer" target="_blank">sprhawk@gmail.com</a>><br><b>To: </b>"<a href="mailto:rtems-users@rtems.org" rel="nofollow noopener noreferrer" target="_blank">rtems-users@rtems.org</a>" <<a href="mailto:users@rtems.org" rel="nofollow noopener noreferrer" target="_blank">users@rtems.org</a>><br><b>Sent: </b>Friday, July 22, 2022 12:11:38 AM<br><b>Subject: </b>Re: How can I add LDFLAGS for bsp build?<br></div><br><div><div dir="ltr"><div>I added -lm in LDFLAGS in my custom bsps/arm/tms570/config/xxx.cfg</div><br><div>the flag is added to compiling arguments, but it still reported undefined reference to 'floor', but I see there is floor symbols in the arm-rtems5/lib/libm.a</div><br><div>Why is it?</div><br><div>Thanks<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 22, 2022 at 1:43 PM Y. HB <<a href="mailto:sprhawk@gmail.com" rel="nofollow noopener noreferrer nofollow noopener noreferrer nofollow noopener noreferrer" target="_blank">sprhawk@gmail.com</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"><div dir="ltr"><div>Hello</div><br><div>I'm working on a custom tms570 bsp upon RTEMS 5.1, but it depends on math lib (-lm), how can I add this flag to the bsp build?</div><br><div>Shall I add LDFLAGS="-lm" during configure or shall I change some variables in c/src/lib/libbsp/arm/xxxx/Makefile.am?</div><br><div>Thanks<br></div></div>
</blockquote></div>
<br>_______________________________________________<br>users mailing list<br><a href="mailto:users@rtems.org" rel="nofollow noopener noreferrer" target="_blank">users@rtems.org</a><br><a href="http://lists.rtems.org/mailman/listinfo/users" rel="nofollow noopener noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/users</a><br></div></div><br></div></div></div>_______________________________________________<br>
users mailing list<br>
<a href="mailto:users@rtems.org" rel="nofollow noopener noreferrer" target="_blank">users@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/users" rel="noreferrer nofollow noopener noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/users</a><br></blockquote></div><br></div></div></div></blockquote></div></div>