I am trying to build llvm-gcc-4.2 but cannot figure out how to get past the
problem described below.
Any help will be much appreciated.
Regards
Roger
gnatbind -C -I- -I. -Iada -I../../llvm-gcc-4.2/gcc/ada -o ada/b_gnat1.c -n
ada/gnat1drv.ali
error: "s-imenne.adb" must be compiled
error:
("/opt/gnat-gpl-2009/lib/gcc/i386-apple-darwin10.2.0/4.3.4/adalib/s-imenne.ali"
is obsolete and read-only)
error: "s-imenne.adb" and "gnat1drv.adb" compiled with
different exception handling mechanisms
make[2]: *** [ada/b_gnat1.c] Error 5
make[1]: *** [all-gcc] Error 2
make: *** [all] Error 2
Also occurs for /opt/gnat-gpl-2009/bin/gnatbind
System:
Model Name: Mac mini
Model Identifier: Macmini1,1
Processor Name: Intel Core Duo
Processor Speed: 1.66 GHz
Number Of Processors: 1
Total Number Of Cores: 2
Mac OS X 10.6.2
XCode 3.2.1
Following is what have had to do to get up to the binding stage:
Based on http://llvm.org/docs/GCCFEBuildInstrs.html#ada
and llvm-gcc-4.2/README.LLVM
Top level directory: llvm
Sub-directories:
llvm (svn)
llvm-gcc-4.2 (svn)
mkdir llvm-objects
mkdir llvm-gcc-4.2-objects
mkdir install
mkdir install/lib
Built and installed llvm without problems.
In install/lib:
ln -sf /usr/lib/libstdc++.6.dylib .
ln -sf /usr/lib/libstdc++.6.dylib libstdc++.dylib
export CC=/opt/gnat-gpl-2009/bin/gcc
export CXX=/usr/bin/g++
EXTRALANGS=,ada,fortran,objc,obj-c++
export TRIPLE=i686-apple-darwin10
In llvm-gcc-4.2/gcc/Makefile.in
change all occurrences of -mdynamic-no-pic
to -dynamic-no-pic
In config/mh-x86-darwin
change BOOT_CFLAGS=-g -O2 -mdynamic-no-pic
to BOOT_CFLAGS=-g -O2 -dynamic-no-pic
in gcc/ada/ali.adb at line 1692
change Add_Char_To_Name_Buffer (nul);
to Add_Char_To_Name_Buffer (NUL);
in gcc/ada/errout.adb at line 1782
change if Name_Buffer (J) = ASCII.Nul then
to if Name_Buffer (J) = ASCII.NUL then
and many other similar "STYLE" problems.
How to stop warnings being treated as errors? --disable-werror seems to work
for some things but not these Ada compiles.
../llvm-gcc-4.2/configure --prefix=/usr
--enable-languages=ada,c,fortran,objc,obj-c++ --enable-checking
--enable-llvm=$PWD/../llvm-objects --disable-bootstrap --disable-multilib
--disable-werror --with-gxx-include-dir=/usr/include/c++/4.2.1 --build=$TRIPLE
--host=$TRIPLE --target=$TRIPLE --with-gmp=/usr/local --with-mpfr=/usr/local
--with-libiconv-prefix=/usr/local
Had to do this to get the right gnatmake:
In llvm-gcc-4.2-objects/gcc/ada/Make-lang.in
declare:
gnatmake = /opt/gnat-gpl-2009/bin/gnatmake
For all targets ada/treeprs.ads through ada/nmake.ads
Change gnatmake -q
to $(gnatmake)
Hi Roger,> I am trying to build llvm-gcc-4.2 but cannot figure out how to get past the problem described below.you need to build with GNAT GPL 2007 or earlier, as described here: http://llvm.org/docs/GCCFEBuildInstrs.html This is because llvm-gcc-4.2 is based on gcc-4.2, and you have the same problem with gcc-4.2. I don't know if anyone ever built an Ada-enabled llvm-gcc on MacOS before, so you may have additional problems. That said, I'm not working on Ada support in llvm-gcc-4.2 any more: my efforts are directed at the dragonegg project: http://dragonegg.llvm.org/ This allows you to use LLVM with gcc-4.5. The Ada front-end in gcc-4.5 is much more capable than in gcc-4.2, so this is a huge improvement as far as Ada is concerned. Unfortunately, I didn't get round to implementing exception handling in dragonegg yet, which is rather fatal for Ada code. "Any day now" :) Also, GCC plugins don't work on Mac OS without some (small) patches. This is because dynamic libraries work a bit differently there as compared to eg linux. This should really be fixed in GCC. Anton managed to get it all working, so he would be a good person to ask if you are interested. Ciao, Duncan.
Hi Duncan, Thanks for your advice. I'll see how I go with dragonegg. I have been using gps for my Ada development but thought I should try and use XCode which is how I came across llvm. Getting llvm working was more out of interest and challenge. Regards Roger On 05/03/2010, at 9:09 PM, Duncan Sands wrote:> Hi Roger, > >> I am trying to build llvm-gcc-4.2 but cannot figure out how to get past the problem described below. > > you need to build with GNAT GPL 2007 or earlier, as described here: > http://llvm.org/docs/GCCFEBuildInstrs.html > This is because llvm-gcc-4.2 is based on gcc-4.2, and you have the same problem > with gcc-4.2. I don't know if anyone ever built an Ada-enabled llvm-gcc on > MacOS before, so you may have additional problems. > > That said, I'm not working on Ada support in llvm-gcc-4.2 any more: my efforts > are directed at the dragonegg project: http://dragonegg.llvm.org/ > This allows you to use LLVM with gcc-4.5. The Ada front-end in gcc-4.5 is much > more capable than in gcc-4.2, so this is a huge improvement as far as Ada is > concerned. Unfortunately, I didn't get round to implementing exception handling > in dragonegg yet, which is rather fatal for Ada code. "Any day now" :) > > Also, GCC plugins don't work on Mac OS without some (small) patches. This is > because dynamic libraries work a bit differently there as compared to eg > linux. This should really be fixed in GCC. Anton managed to get it all > working, so he would be a good person to ask if you are interested. > > Ciao, > > Duncan. > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev