current state of building analysis passes out-of-tree with llvm-config?

Hi,

what's the current state of being able to build simple analysis passes
out-of-tree against only llvm headers and libraries with llvm-config?

I see that clang and klee do not use llvm-config but for example
rubinius does. Should both approaches be documented?

Currently for example docs/WritingAnLLVMPass.html says

   "you need to create a new directory somewhere in the LLVM source
    base."

while people who only want to experiment with simple passes might feel
more comfortable if they didn't need to create directories inside llvm
source tree. I ended up with the following Makefile:

all:
        g++ -c -o LLVMHello.o `llvm-config --cxxflags` Hello.cpp
        gcc -shared -Wl,-soname,LLVMHello.so -o LLVMHello.so LLVMHello.o

clean:
        rm -f LLVMHello.so LLVMHello.o

(I can not use Makefile.common since it is not installed by 'make
install')

best regards,
Timo Lindfors

Timo Juhani Lindfors wrote:

Hi,

what's the current state of being able to build simple analysis passes
out-of-tree against only llvm headers and libraries with llvm-config?
  

Have you considered using the LLVM Project templates (documented at
http://llvm.org/docs/Projects.html)? This is the build system we use
for Automatic Pool Allocation. It allows us to reuse all the Makefile
machinery within LLVM; we use Makefiles that are nearly identical to
those used in LLVM, and things "just work" (more or less). I believe it
automatically uses llvm-config.

Automatic Pool Allocation is available from LLVM's SVN repository
(llvm.org/svn/llvm-project/poolalloc/trunk) if you want an example of a
project that uses this build system. It currently builds against LLVM
2.6, but the build system is probably still compatible with LLVM mainline.

-- John T.