Trouble with sample project template (Autoconf problem?)

I'm just getting started with an LLVM-based project, using the Sample template as a guide:

   http://llvm.org/docs/Projects.html#create

But I can't even get the Sample project itself to build without errors. It works fine if I do "configure" and then "make", but if I run "AutoRegen.sh" first, then do "configure", I get:

   configure: error: cannot find install-sh or install.sh in ../../../autoconf "."/../../../autoconf

I noticed that this newly generated configure is substantially different from the pre-generated one provided with LLVM. The former is based on Autoconf 2.63, while the latter is based on Autoconf 2.59 (a somewhat old release from 2003).

Also, if I export the sample directory to someplace outside the LLVM source tree, I can get AutoRegen.sh to work, but then "make" fails:

   $ svn export . ~/sample
   $ cd ~/sample/autoconf
   $ ./AutoRegen.sh
   LLVM source root not found.
   Enter full path to LLVM source:/Users/twharmon/Development/LLVM/src/llvm-trunk/llvm
   Enter full path to LLVM objects (empty for same as source):/Users/twharmon/Development/LLVM/llvm/
   Regenerating aclocal.m4 with aclocal
   configure.ac:4: warning: AC_INIT: not a literal: [[SAMPLE]]
   configure.ac:4: warning: AC_INIT: not a literal: [[x.xx]]
   Regenerating configure with autoconf
   configure.ac:4: warning: AC_INIT: not a literal: [[SAMPLE]]
   configure.ac:4: warning: AC_INIT: not a literal: [[x.xx]]
   $ cd ..
   configure: creating ./config.status
   config.status: creating Makefile.common
   config.status: executing setup commands
   config.status: executing Makefile commands
   config.status: executing lib/Makefile commands
   config.status: executing lib/sample/Makefile commands
   config.status: executing tools/Makefile commands
   config.status: executing tools/sample/Makefile commands
   $ make
   /Users/twharmon/Development/LLVM/src/llvm-trunk/llvm/Makefile.common:63: /Users/twharmon/Development/LLVM/llvm//Makefile.config: No such file or directory
make: *** No rule to make target `/Users/twharmon/Development/LLVM/llvm//Makefile.config'. Stop.

I'm stuck and would appreciate any help. Thanks,

Trevor

P.S. This is on Mac OS X with the current LLVM trunk.

Actually, I think this part is wrong. If I supply the same path as the source, "make" works.

But what exactly is meant by "full path to LLVM objects"? I assumed it means the place where LLVM installs to (that is, the --prefix parameter of LLVM's configure), but that doesn't seem to be the case.

Trevor

Trevor Harmon wrote:

  $ ./AutoRegen.sh
  LLVM source root not found.
  Enter full path to LLVM source:/Users/twharmon/Development/LLVM/src/
llvm-trunk/llvm
  Enter full path to LLVM objects (empty for same as source):/Users/
twharmon/Development/LLVM/llvm/
    
Actually, I think this part is wrong. If I supply the same path as the source, "make" works.

But what exactly is meant by "full path to LLVM objects"? I assumed it means the place where LLVM installs to (that is, the --prefix parameter of LLVM's configure), but that doesn't seem to be the case.
  

I believe it is asking for the location of the LLVM object tree. This is the top-level directory in which LLVM places object files during compilation.

For autoconf projects, you can place object files into a different directory than source files. For example, if your LLVM source is in /src/llvm, and within the /obj/llvm directory you type:

> /src/llvm/configure

..., then /obj/llvm is where the configure script will place all of the Makefiles used to compile LLVM. This is the directory you use to compile LLVM, it is where the object files are placed during the build, and so it is called the Object Tree.

The path provided by the --prefix option is the Install Directory. This is where files are placed after a "make install" is run in the Object Tree.

-- John T.