I am attempting to set up a new frontend project based on the sample
project (I'm following the instructions at http://llvm.org/docs/Projects.html). In doing so, I hit a problem with
AutoRegen.sh which I worked around, and hit a problem with configure
that I don't know how to work around.
Below is what happens when I attempt to autoconf and configure the
sample project that ships with LLVM. This is on Mac OS X 10.5 with
autoconf 2.6.0. For reference, /opt/src-llvm is where my llvm sources
are, and where I built those sources. My project is in
/opt/src-llvm/projects/sample.
$ cd /opt/src-llvm/projects/sample
$ cd autoconf/
$ ./AutoRegen.sh
Your autoconf was not detected as being 2.5x
I have autoconf 2.6. To keep going I edited AutoRegen.sh and made the
following change:
It looks like, in the generated configure script, the LLVM_SRC_ROOT
and LLVM_OBJ_ROOT variables are never updated to reflect the values
passed as command line flags. Only the LLVM_SRC and LLVM_OBJ variables
are updated. But, when the script looks for other scripts (like
install.sh), it looks in the LLVM_SRC_ROOT and LLVM_OBJ_ROOT
directories, not in the LLVM_SRC and LLVM_OBJ directories.
Below is what happens when I attempt to autoconf and configure the
sample project that ships with LLVM. This is on Mac OS X 10.5 with
autoconf 2.6.0. For reference, /opt/src-llvm is where my llvm sources
are, and where I built those sources. My project is in
/opt/src-llvm/projects/sample.
$ cd /opt/src-llvm/projects/sample
$ cd autoconf/
$ ./AutoRegen.sh
Your autoconf was not detected as being 2.5x
I have autoconf 2.6. To keep going I edited AutoRegen.sh and made the
following change:
I would just install 2.5 on your system and make your life easier. Unless you want to take the steps to upgrade the tools (in that case, please submit a patch!).
I forgot to mention; make sure your project is in the llvm/projects directory (e.g. llvm/projects/my_project). I don't think the script will work if you put your project in an arbitrary location.
Thanks for the advice. The script you sent gives me the same problem.
I am now able to work around the issue by making the following change
to the AutoRegen.sh script that comes with the sample project:
$ make
../Makefile.common:22: ../../Makefile.common: No such file or directory
make[1]: *** No rule to make target `../../Makefile.common'. Stop.
make: *** [all] Error 1
So I guess my AutoRegen.sh fix isn't so great after all...
Try using the --with-llvmsrc and --with-llvmobj options to explicitly set the locations of your LLVM source tree and object tree, respectively. I faintly recall seeing this error and seem to recall using these options to work around it.
For a local project, I applied the attached patch to ./configure to make it
work, IIRC. It moves the src/obj dir evaluation earlier. I don't know whether
this is a good solution though.
Try using the --with-llvmsrc and --with-llvmobj options to explicitly set the locations of your LLVM source tree and object tree, respectively. I faintly recall seeing this error and seem to recall using these options to work around it.
OK. Here are the complete steps required to successfully build the
sample project:
$ cd llvm/projects
$ cp -r sample/ myproject
$ cd myproject
$ ./AutoRegen.sh
Regenerating aclocal.m4 with aclocal
Regenerating configure with autoconf 2.5x
Hmm, if you don't regenerate configure, it works without giving it
--with-llvmsrc.
The problems seems to be that when running AutoRegen.sh, the current
directory is projects/sample/autoconf, but when you run the created
configure, the directory is
projects/sample. Was AutoRegen.sh once in project/sample, and later got
moved to autoconf/ ?