Help with building LLVM 2.6 GCC

Greetings

I'm trying to build LLVM 2.6 GCC from the source files, but I am
having problems during the make step.

Here is the information:

1. My machine is:

Linux firefly 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009
x86_64 x86_64 x86_64 GNU/Linux

my gcc version is 4.2.1

2. I've unpacked llvm-gcc-4.2-2.6.source.tar.gz under the llvm-gcc
directory. I've also created two subdirectories
called "install" and "obj" under the same llvm-gcc.

3. Then I did the following, based on README.LLVM :

%setenv LLVMOBJDIR /home/eliseuf/llvm/llvm-gcc/obj
%cd obj
%../llvm-gcc4.2-2.6.source/configure --prefix=`pwd`/../install
--program-prefix=llvm- --enable-llvm=$LLVMOBJDIR --enable-languages=c
--disable-multilib
%gmake

4. Result: gmake aborts with the message:

configure: error: You must specify valid path to your LLVM tree with
--enable-llvm=DIR

However, looking at Makefile, I can see:

TOPLEVEL_CONFIGURE_ARGUMENTS=../llvm-gcc4.2-2.6.source/configure
--prefix=/home/eliseuf/llvm/llvm-gcc/obj/../install
--program-prefix=llvm- --enable-llvm=/home/eliseuf/llvm/llvm-gcc/obj
--enable-languages=c --disable-multilib

apparently --enable-llvm flag was recognized from the command line but
the error message says it was not defined (if I am interpreting it
correctly...)

Thanks in advance for any help

Regards

Eliseu

Hi Eliseu,

2. I've unpacked llvm-gcc-4.2-2.6.source.tar.gz under the llvm-gcc
directory. I've also created two subdirectories
called "install" and "obj" under the same llvm-gcc.

3. Then I did the following, based on README.LLVM :

%setenv LLVMOBJDIR /home/eliseuf/llvm/llvm-gcc/obj

first you need to build llvm itself. LLVMOBJDIR points to where you
built llvm, not where you are planning to build llvm-gcc.

Ciao,

Duncan.

I'm running into the same error.

Correct me if I'm wrong. To build llvm, you'd need llvm-gcc front-end.
You're saying we'd need llvm in order to build llvm-gcc.

So how should we kick start the process?

Thanks.

Duncan Sands wrote:

You don't need llvm-gcc to build llvm. See release notes.

Garrison

The Getting Started Guide is a bit misleading on this point because the "Install the llvm-gcc-4.2 front end" step comes before the "Build the LLVM Suite" step, implying that LLVM GCC is a dependency, but it's not.

FWIW, here's how I build LLVM:

- mkdir llvm
- cd llvm
- Unpack LLVM source (or checkout via Subversion) to "llvm-src"
- cd llvm-src
- ./configure --prefix=$PWD/../install
       --disable-optimized for debug builds; --enable-optimized for release builds
- make
- make install

This works for me on OS X 10.5 and Ubuntu 9.10.

I've never been able to get the binary distribution of LLVM GCC to work on OS X -- I always get "dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib" -- so I've gotten in the habit of building LLVM GCC from source (on Linux too). These are the steps that work for me every time:

- mkdir llvm-gcc
- cd llvm-gcc
- Unpack LLVM GCC source (or checkout via Subversion) to "llvm-gcc-src"
- mkdir obj
- mkdir install
- cd obj
- export TRIPLE=i686-apple-darwin9
     (Use i386-pc-linux-gnu for Linux)
- export BUILDOPTIONS=LLVM_VERSION_INFO=2.7
     (Replace "2.7" with the current version number)
- export TARGETOPTIONS='--with-arch=nocona --with-tune=generic'
- ../llvm-gcc-src/configure --prefix=$PWD/../install
   --program-prefix=llvm- --build=$TRIPLE --host=$TRIPLE
   --target=$TRIPLE
   --enable-llvm=(full path of the LLVM source directory)
   --enable-languages=c,c++ $TARGETOPTIONS
     (If you built a Debug instead of a Release of LLVM, add
       --enable-checking.)
     (On OS X, add "--with-gxx-include-dir=/usr/include/c++/4.0.0")
- make $BUILDOPTIONS
- make install
- If on OS X:
   ln -sf /usr/lib/libstdc++.6.dylib `pwd`/../install/lib
   ln -sf /usr/lib/libstdc++.6.dylib `pwd`/../install/lib/libstdc++.dylib

This works for me on OS X 10.5 and Ubuntu 9.10, although I had to install some dependencies on Ubuntu (bison, flex).

Trevor

Sweet peas.

I followed Trevor instruction and successfully built llvm. I left out
--prefix=$PWD/../install option when configure; hence, /usr/local is now
polluted with llvm goodness :slight_smile:

I kept getting error when building llvm-gcc, because I specify the wrong
path to --enable-llvm option, which should be --enable-llvm=(full path of
the LLVM source/object directory) I should have read FAQ more carefully!

Thanks Trevor.

naohk.

Trevor Harmon-3 wrote: