Re: Compiling PowerLoom C++
Cameron Ross <[email protected]> Sun, 14 Feb 2010 11:04:39 -0500
| Newsgroups | gmane.comp.ai.powerloom |
|---|---|
| Message-ID | <-4227774317050735667@unknownmsgid> |
Hi Thomas, I'll be implementing a cross-development tool-chain and the exact version of gcc I use will end up being the lowest common denominator for the various components I'll be integrating... PowerLoom being one of them. I can perform some tests to see what the most recent version of gcc can be used to compile PowerLoom and then see if that is acceptable for my needs... I suspect it will be. However, it would be comforting to know that a more permanent solution is planned. I'll let you know how my testing goes. Please let me know of there is anything I can do to help out here. Thanks, Cameron Sent from my iPhone On Feb 14, 2010, at 9:09 AM, Thomas Russ <[email protected]> wrote: > > On Feb 14, 2010, at 1:17 PM, Cameron Ross wrote: > >> Hi Thomas, >> >> Yes. This is an error that is halting compilation. What are the >> options to fix? Will I have to modify the code manually? > > I'd like to see what Hans has to say about this, but that may need > to wait until the workweek starts. > > Some options that come to mind: > > (1) You could try editing the Makefile to add -fpermissive to the > compiler switches. That would involve just changing the value of > the CFLAGS variable at the top of the file. > (2) Do you absolutely need to use GCC version 4.4? I know that it > works with version 4.0. > (3) The translation of the code could be modified. This requires > having some version of PowerLoom/Stella that runs, such as the Java > or Lisp version. > (3a) The simplest way to do this would be to change the Stella > optimization settings used to translate the system to the > development settings. That will disable this optimization (along > with some others as well). This will be temporary until we create a > permanent solution. You can do this by re-translating the systems > with the ":development-settings? true" switch set. For example, > this could be done with something like > % stella -e '(make-system "stella" :cpp :development- > settings? true)' > % stella -e '(make-system "logic" :cpp :development- > settings? true)' > (3b) A more complicated method would be to modify the > translator code to disable the translation. This may be what we end > up doing in order to support GCC 4.4, since it doesn't seem to like > our current "optimized" translation for the null test. This takes > place in the function cpp-translate-DEFINED?-method-call in the file > sources/stella/cpp-translate.ste around line 2431. > > >> Thanks, >> Cameron >> >> Sent from my iPhone >> >> On Feb 14, 2010, at 5:47 AM, Thomas Russ <[email protected]> wrote: >> >>> >>> On Feb 14, 2010, at 4:40 AM, Cameron Ross wrote: >>> >>>> Hello, >>>> >>>> I'm trying the compile the C++ version of PowerLoom version >>>> 3.2.52. Running make from .../native/cpp/stella gives copious >>>> errors similar to: hierarchy.cc:97: error: cast from =91stella: >>>> :Obje >>>> ct*=92 to =91stella::boolean=92 loses precision. This error refers >>>> to what seems to be a recurring theme throughout PowerLoom's C++ c >>>> odebase. Just wondering why the boolean cast is required. Also, >>>> wondering why its not compiling for me, when clearly this idiom mu >>>> st have worked with gcc at some point. I'm running 64bit Ubuntu L >>>> inux 9.10 with g++ version 4.4.1. Note that the code associated w >>>> ith this specific error is: >>>> >>>> if (!((boolean)(self))) { >>>> stream << "!NULL!"; >>>> } >>> >>> >>> Looking at this a bit more closely, what it turns out to be is an >>> "optimization" in the generated C++ code to implement at test for a >>> null object. Now, I'm not completely sure of all of the background, >>> but I suspect that at one point there was a C compiler that >>> complained about using a non-boolean in a boolean test, so a cast is >>> used. (Or it could be that the cast is just created because of the >>> casting used in Stella to generate the optimization. >>> >>> Is this error actually stopping the generation of code, or is this >>> more of a warning rather than a hard error? I don't happen to have >>> gcc 4.4 installed. All I have is 4.0 and 4.2 right now. G++ 4.0 >>> certainly doesn't complain about that construct at all. >>> >>> >>> >>> >