Reputation: 109
I have a project (That works) that I'm trying to compile on my Mac. It uses a variety of things including LLVM, which was the only one I didn't have installed. So I followed the instructions here: http://www.isi.edu/~pedro/Teaching/CSCI565-Spring15/Projects/Project1-LLVM/LLVMInstructions-MacOSX10.9.pdf
This seemed to work, however my makefile required I install LLVM 3.3, while that tutorial is for LLVM 3.5. Now, both before and after installing, when I run make I get the following error:
$ make
compiling cpp yacc file: expr-codegen.y
output file: expr-codegen
bison -b expr-codegen -d expr-codegen.y
/bin/mv -f expr-codegen.tab.c expr-codegen.tab.cc
flex -oexpr-codegen.lex.cc expr-codegen.lex
clang -g -c decaf-stdlib.c
clang++ -o ./expr-codegen expr-codegen.tab.cc expr-codegen.lex.cc decaf-stdlib.o `llvm-config-3.3 --cppflags --ldflags --libs core jit native` -ly -ll
/bin/sh: llvm-config-3.3: command not found
In file included from expr-codegen.y:6:
./decafdefs.h:5:10: fatal error: 'llvm/IR/DerivedTypes.h' file not found
#include "llvm/IR/DerivedTypes.h"
^
1 error generated.
In file included from expr-codegen.lex:2:
./decafdefs.h:5:10: fatal error: 'llvm/IR/DerivedTypes.h' file not found
#include "llvm/IR/DerivedTypes.h"
^
1 error generated.
make: *** [expr-codegen] Error 1
Here's my makefile:
lexlib=l
yacclib=y
bindir=.
rm=/bin/rm -f
mv=/bin/mv -f
targets=
#cpptargets=type-inherit decaf-sym
#llvmtargets=factorial
#llvmcpp=sexpr2-codegen expr-codegen
#llvmfiles=rec_add
#llvmcpp=decaf-sym expr-codegen sexpr2-codegen
llvmcpp=expr-codegen
all: $(targets) $(cpptargets) $(llvmfiles) $(llvmcpp)
$(targets): %: %.y
@echo "compiling yacc file:" $<
@echo "output file:" $@
bison [email protected] -d $<
flex [email protected] [email protected]
clang -o $(bindir)/$@ [email protected] [email protected] -l$(yacclib) -l$(lexlib)
$(rm) [email protected] [email protected] [email protected]
$(cpptargets): %: %.y
@echo "compiling cpp yacc file:" $<
@echo "output file:" $@
bison -b $@ -d $<
$(mv) [email protected] [email protected]
flex [email protected] [email protected]
clang++ -o $(bindir)/$@ [email protected] [email protected] -l$(yacclib) -l$(lexlib)
$(rm) [email protected] [email protected] [email protected]
$(llvmcpp): %: %.y
@echo "compiling cpp yacc file:" $<
@echo "output file:" $@
bison -b $@ -d $<
$(mv) [email protected] [email protected]
flex [email protected] [email protected]
clang -g -c decaf-stdlib.c
clang++ -o $(bindir)/$@ [email protected] [email protected] decaf-stdlib.o `llvm-config-3.3 --cppflags --ldflags --libs core jit native` -l$(yacclib) -l$(lexlib)
$(rm) [email protected] [email protected] [email protected]
$(llvmtargets): %: %.ll
@echo "using llvm to compile file:" $<
llvm-as $<
`llvm-config-3.3 --bindir`/llc -disable-cfi [email protected]
clang [email protected] ../decaf-stdlib.c -o $(bindir)/$@
$(llvmfiles): %: %.ll
@echo "using llvm to compile file:" $<
llvm-as $<
`llvm-config-3.3 --bindir`/llc -disable-cfi [email protected]
clang [email protected] decaf-stdlib.c -o $(bindir)/$@
clean:
$(rm) $(targets) $(cpptargets) $(llvmtargets) $(llvmcpp) $(llvmfiles)
$(rm) *.tab.h *.tab.c *.lex.c
$(rm) *.bc *.s *.o
$(rm) -r *.dSYM
As a total newbie to LLVM I have no idea why I can't get the compiler to recognize LLVM and use it. Any help would be appreciated. Thanks.
Upvotes: 1
Views: 1503
Reputation: 1727
From the llvm-config documentation:
dzur:~/tmp> llvm-config
usage: llvm-config <OPTION>... [<COMPONENT>...]
Get various configuration information needed to compile programs which use
LLVM. Typically called from 'configure' scripts. Examples:
llvm-config --cxxflags
llvm-config --ldflags
llvm-config --libs engine bcreader scalaropts
Which is pretty much what you need :)
Upvotes: 1