From: Albert C. <rub...@ml...> - 2006-04-06 05:28:31
|
ruby-fltk uses the same compiler used to build ruby. However, if fltk was built with a C++ compiler, ruby-fltk should use it in extconf.rb, especially if a non-GCC compiler was used. How about addition an option, --with-cxx=<compiler> to use for the compile tests in extconf.rb? How would I do this? -- albert chin (ch...@th...) |
From: Jeremy H. <je...@ch...> - 2006-04-12 08:04:35
|
On Thu, Apr 06, 2006 at 12:28:30AM -0500, Albert Chin wrote: > ruby-fltk uses the same compiler used to build ruby. However, if > fltk was built with a C++ compiler, ruby-fltk should use it in > extconf.rb, especially if a non-GCC compiler was used. I'm not sure I understand. Both FLTK and Ruby-FLTK are written in C++ so they are *always* built with a C++ compiler. Ruby-FTLK uses a hack: extconf.rb loads cxx.rb , which goes through the configuration and replaces gcc for g++ . Do you need something like this to happen for non-gcc compilers too? > How about addition an option, --with-cxx=<compiler> to use for the > compile tests in extconf.rb? How would I do this? I don't know, I'm not an extconf.rb hacker. I've just looked through mkmf.rb but I can't make much sense of it. It seems to automatically parse all arguments of the form --foo=bar, but I can't find an argument that affects the value of cc_command . On Unix FLTK installs a fltk-config script, so the ideal solution there is to set the compiler to `fltk-config --cxx`. I've no idea if this would work on other platforms. What OS are you running? I'll take this to the FLTK mailing list and the Ruby newsgroup. Hopefully they can turn up something useful. I haven't had much luck with Google so far. Sorry I can't be more help at the moment. I'll get back to you when I find out more. Cheers, Jeremy Henty |
From: Jeremy H. <je...@ch...> - 2006-04-13 14:52:35
|
On Wed, Apr 12, 2006 at 09:03:16AM +0100, Jeremy Henty wrote: > On Thu, Apr 06, 2006 at 12:28:30AM -0500, Albert Chin wrote: > > > ruby-fltk uses the same compiler used to build ruby. However, if > > fltk was built with a C++ compiler, ruby-fltk should use it in > > extconf.rb, especially if a non-GCC compiler was used. > > I'm not sure I understand. Both FLTK and Ruby-FLTK are written in > C++ so they are *always* built with a C++ compiler. Ruby-FTLK uses > a hack: extconf.rb loads cxx.rb , which goes through the > configuration and replaces gcc for g++ . Do you need something like > this to happen for non-gcc compilers too? OK, I've investigated a little more. It turns out that Ruby-FTLK's cxx.rb hack is clunky and overkill. The Makefile correctly specifies $(CXX) for *.cc files, so the library gets built with g++ (at least on my GNU/Linux system it does). The real need for the cxx.rb hack is so that feature tests for C++ code are compiled with g++ . However you can do that much more easily simply by setting CONFTEST_C = "conftest.cc", so that the .cc extension tells gcc that the test source is C++ . I have committed this change to CVS. > > How about addition an option, --with-cxx=<compiler> to use for the > > compile tests in extconf.rb? How would I do this? You know, I just reread this passage of yours more carefully and noticed you referred specifically to "the compile tests in extconf.rb". If that's your problem then the change I just committed may help. Can you check out the latest CVS[1] and see if it works? It would be really useful for me to know how this works on a non-GNU system. (What is your system, by the way?) Cheers, Jeremy Henty [1] cvs -d :pserver:ano...@cv...:/cvsroot/ruby-fltk login cvs -d :pserver:ano...@cv...:/cvsroot/ruby-fltk checkout -P ruby-fltk |
From: Albert C. <rub...@ml...> - 2006-04-20 17:08:13
|
On Thu, Apr 13, 2006 at 03:51:17PM +0100, Jeremy Henty wrote: > > On Wed, Apr 12, 2006 at 09:03:16AM +0100, Jeremy Henty wrote: > > On Thu, Apr 06, 2006 at 12:28:30AM -0500, Albert Chin wrote: > > > > > ruby-fltk uses the same compiler used to build ruby. However, if > > > fltk was built with a C++ compiler, ruby-fltk should use it in > > > extconf.rb, especially if a non-GCC compiler was used. > > > > I'm not sure I understand. Both FLTK and Ruby-FLTK are written in > > C++ so they are *always* built with a C++ compiler. Ruby-FTLK uses > > a hack: extconf.rb loads cxx.rb , which goes through the > > configuration and replaces gcc for g++ . Do you need something like > > this to happen for non-gcc compilers too? > > OK, I've investigated a little more. It turns out that Ruby-FTLK's > cxx.rb hack is clunky and overkill. The Makefile correctly specifies > $(CXX) for *.cc files, so the library gets built with g++ (at least on > my GNU/Linux system it does). The real need for the cxx.rb hack is so > that feature tests for C++ code are compiled with g++ . However you > can do that much more easily simply by setting CONFTEST_C = > "conftest.cc", so that the .cc extension tells gcc that the test > source is C++ . I have committed this change to CVS. What if you wish to build with the OS vendor C++ compiler? For Solaris, it's CC. For HP-UX, it's aCC. > > > How about addition an option, --with-cxx=<compiler> to use for the > > > compile tests in extconf.rb? How would I do this? > > You know, I just reread this passage of yours more carefully and > noticed you referred specifically to "the compile tests in > extconf.rb". If that's your problem then the change I just committed > may help. Can you check out the latest CVS[1] and see if it works? > It would be really useful for me to know how this works on a non-GNU > system. (What is your system, by the way?) The systems are HP-UX and Solaris. I checked out CVS but don't see any changes relative to 0.9.3. I browsed CVS on sf.net but don't see any recent changes there either. I used the checkout method on the ruby-fltk web page: $ cvs -d :pserver:ano...@cv...:/cvsroot/ruby-fltk login $ cvs -d :pserver:ano...@cv...:/cvsroot/ruby-fltk checkout -P ruby-fltk -- albert chin (ch...@th...) |
From: Jeremy H. <je...@ch...> - 2006-04-21 06:51:41
|
On Thu, Apr 20, 2006 at 12:08:10PM -0500, Albert Chin wrote: > On Thu, Apr 13, 2006 at 03:51:17PM +0100, Jeremy Henty wrote: > > The real need for the cxx.rb hack is so that feature tests for C++ > > code are compiled with g++ . However you can do that much more > > easily simply by setting CONFTEST_C = "conftest.cc", so that the > > .cc extension tells gcc that the test source is C++ . I have > > committed this change to CVS. > > What if you wish to build with the OS vendor C++ compiler? I am hoping these changes will make that happen automatically. On GNU/Linux the Makefile compiles *.cc to *.c using $(CXX) . The CXX variable isn't defined in the Makefile , so I assume GNU make supplies the correct value. To compile the feature tests extconf.rb uses $(CC) , which is set to gcc in rbconfig.rb . Luckily gcc knows that *.cc files are C++ . If things work the same way on your OS then you're done! I can't be sure that they'll work because I don't have access to other OSes. If you can send me the Makefile and mkmf.log that your Ruby-FLTK build creates I can check whether your OS does things the same way as mine. (It would be useful to see rbconfig.rb too.) If the Makefile still chooses the wrong C++ compiler you can try building with "CXX=<correct-compiler> make". If that works I can investigate how to implement a --ccx=<correct-compiler> flag. What do you get when you run "fltk-config --cxx"? If you simply need to build Ruby-FLTK with the same C++ compiler used to build FLTK then maybe I can hack the Makefile to insert "CXX = `fltk-config --cxx`" without having to add new build flags. > I checked out CVS but don't see any changes relative to 0.9.3. There aren't! Sourceforge has stopped sync-ing developer CVS with anonymous CVS while they install new hardware. Anonymous CVS is currently identical to 0.9.3 . I am preparing to release 0.9.4 so you build that and see which compiler it selects. This will happen later today if nothing goes wrong. Cheers, Jeremy Henty |
From: Albert C. <rub...@ml...> - 2006-04-21 11:22:36
|
On Fri, Apr 21, 2006 at 07:50:31AM +0100, Jeremy Henty wrote: > On Thu, Apr 20, 2006 at 12:08:10PM -0500, Albert Chin wrote: > > On Thu, Apr 13, 2006 at 03:51:17PM +0100, Jeremy Henty wrote: > > > > The real need for the cxx.rb hack is so that feature tests for C++ > > > code are compiled with g++ . However you can do that much more > > > easily simply by setting CONFTEST_C = "conftest.cc", so that the > > > .cc extension tells gcc that the test source is C++ . I have > > > committed this change to CVS. > > > > What if you wish to build with the OS vendor C++ compiler? > > I am hoping these changes will make that happen automatically. On > GNU/Linux the Makefile compiles *.cc to *.c using $(CXX) . The CXX > variable isn't defined in the Makefile , so I assume GNU make supplies > the correct value. To compile the feature tests extconf.rb uses $(CC) > , which is set to gcc in rbconfig.rb . Luckily gcc knows that *.cc > files are C++ . If things work the same way on your OS then you're > done! I can't be sure that they'll work because I don't have access > to other OSes. If you can send me the Makefile and mkmf.log that your > Ruby-FLTK build creates I can check whether your OS does things the > same way as mine. (It would be useful to see rbconfig.rb too.) Unfortunately, neither the Solaris C compiler will recognize .cc as a C++ file and call CC nor will the HP-UX C compiler. That's why we need a way to explicitly set the C++ compiler used for the tests in extconf.rb. -- albert chin (ch...@th...) |
From: Jeremy H. <je...@ch...> - 2006-04-21 17:07:57
|
I wrote: > I am preparing to release 0.9.4 so you build that and see which > compiler it selects. Oops! This was far more aggressive than I intended. I meant to write "so you *can* build that". I'm not trying to order people around! Apologies for any offence caused. Jeremy Henty |
From: Albert C. <rub...@ml...> - 2006-04-20 02:00:32
|
On Wed, Apr 12, 2006 at 09:03:16AM +0100, Jeremy Henty wrote: > On Thu, Apr 06, 2006 at 12:28:30AM -0500, Albert Chin wrote: > > > ruby-fltk uses the same compiler used to build ruby. However, if > > fltk was built with a C++ compiler, ruby-fltk should use it in > > extconf.rb, especially if a non-GCC compiler was used. > > I'm not sure I understand. Both FLTK and Ruby-FLTK are written in C++ > so they are *always* built with a C++ compiler. Ruby-FTLK uses a > hack: extconf.rb loads cxx.rb , which goes through the configuration > and replaces gcc for g++ . Do you need something like this to happen > for non-gcc compilers too? We built Ruby 1.8.4 on Solaris with the Sun C compiler. We built FLTK with the Sun C++ compiler. How do we build ruby-fltk with the Sun C++ compiler, not G++? -- albert chin (ch...@th...) |
From: Jeremy H. <je...@ch...> - 2006-04-19 18:09:24
|
On Thu, Apr 06, 2006 at 12:28:30AM -0500, Albert Chin wrote: > ruby-fltk uses the same compiler used to build ruby. However, if > fltk was built with a C++ compiler, ruby-fltk should use it in > extconf.rb, especially if a non-GCC compiler was used. Albert, I don't know if you saw my reply on the mailing list but I recently checked into CVS a change that might help. Now "extconf.rb" sets CONFTEST_C to "conftest.cc" before testing for C++ features. This should mean that the C++ feature tests are compiled as C++ (rather than C) on all platforms. (Until now this was only true on GNU-based systems.) I'd appreciate knowing if this has helped you. If you still have problems I will investigate some more. Cheers, Jeremy Henty |
From: Jeremy H. <je...@ch...> - 2006-04-22 18:50:21
Attachments:
extconf.rb
|
On Fri, Apr 21, 2006 at 06:22:26AM -0500, Albert Chin wrote: > Unfortunately, neither the Solaris C compiler will recognize .cc as > a C++ file and call CC nor will the HP-UX C compiler. According to a discussion on the fltk-dev list .cxx is more portable. The fact is that ".cxx" is the ONLY extension that can be used on all the platforms that FLTK supports. ".cpp" is *not* supported by a large number of commercial UNIX C++ compilers, ".C" is *not* supported by Windows or MacOS X, and ".cc" is *not* supported by Windows. I have attached a version of extconf.rb that uses conftest.cxx for the feature tests. Does it work for you? > That's why we need a way to explicitly set the C++ compiler I'm studying how to do that, unfortunately it depends on the details of rbconfig.rb and mkmf.rb which are very messy (that's why I'm *really* hoping the attached version of extconf.rb will fix things and save me the trouble). I have also asked for help on comp.lang.ruby . If the attached extconf.rb doesn't work, can you send me your system's versions of rbconfig.rb and mkmf.rb , plus the Makefile and mkmf.rb created by "ruby extconf.rb"? Also, can you confirm that running "fltk-config --cxx" on the command line prints the name of the correct C++ compiler? If it does then extconf.rb will be able to determine the right compiler automatically and I won't need to add a build flag. Sorry to bother you for these details but this is messy OS-dependent stuff and I don't (yet) have a quick fix. Regards, Jeremy Henty |
From: Albert C. <rub...@ml...> - 2006-10-31 06:12:48
Attachments:
rbconfig.rb
mkmf.rb
|
On Sat, Apr 22, 2006 at 07:49:15PM +0100, Jeremy Henty wrote: > On Fri, Apr 21, 2006 at 06:22:26AM -0500, Albert Chin wrote: > > > That's why we need a way to explicitly set the C++ compiler > > If the attached extconf.rb doesn't work, can you send me your system's > versions of rbconfig.rb and mkmf.rb , plus the Makefile and mkmf.rb > created by "ruby extconf.rb"? Also, can you confirm that running > "fltk-config --cxx" on the command line prints the name of the correct > C++ compiler? If it does then extconf.rb will be able to determine > the right compiler automatically and I won't need to add a build flag. Sorry for dropping this. I just tried 0.9.5 and the problem still exists. I've attached copies of rbconfig.rb and mkmf.rb. Because "ruby extconf.rb" fails (the conftest.cxx files are compiled with the C compiler so all tests fail), no Makefile/mkmf.rb are created. $ fltk-config --cxx CC I'm going to poke around in Ruby's mkmf.rb and try to figure this out. -- albert chin (ch...@th...) |
From: Albert C. <rub...@ml...> - 2006-11-02 05:44:39
|
On Tue, Oct 31, 2006 at 12:12:40AM -0600, Albert Chin wrote: > On Sat, Apr 22, 2006 at 07:49:15PM +0100, Jeremy Henty wrote: > > On Fri, Apr 21, 2006 at 06:22:26AM -0500, Albert Chin wrote: > > > > > That's why we need a way to explicitly set the C++ compiler > > > > If the attached extconf.rb doesn't work, can you send me your system's > > versions of rbconfig.rb and mkmf.rb , plus the Makefile and mkmf.rb > > created by "ruby extconf.rb"? Also, can you confirm that running > > "fltk-config --cxx" on the command line prints the name of the correct > > C++ compiler? If it does then extconf.rb will be able to determine > > the right compiler automatically and I won't need to add a build flag. > > Sorry for dropping this. I just tried 0.9.5 and the problem still > exists. I've attached copies of rbconfig.rb and mkmf.rb. Because "ruby > extconf.rb" fails (the conftest.cxx files are compiled with the C > compiler so all tests fail), no Makefile/mkmf.rb are created. > > $ fltk-config --cxx > CC > > I'm going to poke around in Ruby's mkmf.rb and try to figure this out. I have things working but I had to make changes to rbconfig.rb and mkmf.rb so I'll need to work these out with the Ruby folks. -- albert chin (ch...@th...) |
From: Jeremy H. <je...@ch...> - 2006-11-06 08:46:53
|
On Wed, Nov 01, 2006 at 11:44:37PM -0600, Albert Chin wrote: > On Tue, Oct 31, 2006 at 12:12:40AM -0600, Albert Chin wrote: > > > $ fltk-config --cxx > > CC Hmm, that looks suspicious - I get "g++". It looks as though you have the name of a variable there rather than its value, unless your C++ compiler really is called "CC". > I have things working but I had to make changes to rbconfig.rb and > mkmf.rb so I'll need to work these out with the Ruby folks. OK, let me know what needs fixing. Thanks for working on this! Jeremy Henty |