# If not specified, pick a default location for dependent llvm libraries LLVM_VERSION = 33 ifeq ($(DEFAULT_DEV_INSTALL_DIR),) DEFAULT_DEV_INSTALL_DIR = /opt/ti endif ifeq ($(ARM_LLVM_DIR),) ARM_LLVM_DIR = $(DEFAULT_DEV_INSTALL_DIR)/llvm$(LLVM_VERSION)-install-arm endif ifeq ($(X86_LLVM_DIR),) X86_LLVM_DIR = $(DEFAULT_DEV_INSTALL_DIR)/llvm$(LLVM_VERSION)-install-x86 endif CLANG_LIBS = -lclangFrontendTool CLANG_LIBS += -lclangFrontend CLANG_LIBS += -lclangDriver CLANG_LIBS += -lclangSerialization CLANG_LIBS += -lclangCodeGen CLANG_LIBS += -lclangParse CLANG_LIBS += -lclangSema CLANG_LIBS += -lclangEdit CLANG_LIBS += -lclangAnalysis CLANG_LIBS += -lclangAST CLANG_LIBS += -lclangLex CLANG_LIBS += -lclangBasic EXE = clocl UNAME_M :=$(shell uname -m) ifneq (,$(findstring 86, $(UNAME_M))) BUILD_PROCESSOR := x86 TARGET := x86 LLVM_DIR := $(X86_LLVM_DIR) CXX := g++ -m32 else ifneq (,$(findstring arm, $(UNAME_M))) BUILD_PROCESSOR := arm TARGET := arm LLVM_DIR := $(ARM_LLVM_DIR) CXX := g++ endif LLVM_CONFIG_EXECUTABLE = $(LLVM_DIR)/bin/llvm-config LLVM_CXXFLAGS = `${LLVM_CONFIG_EXECUTABLE} --cxxflags ` LLVM_LDFLAGS = -L $(LLVM_DIR)/lib -lpthread -lrt -ldl -lm LLVM_LIBS = `${LLVM_CONFIG_EXECUTABLE} --libs ${TARGET} asmparser bitwriter tablegen mcjit debuginfo interpreter irreader jit linker instrumentation ipo mcdisassembler` # If Cross Compiling for ARM override some make variables cross: override CXX=arm-linux-gnueabihf-g++ cross: override TARGET=arm cross: override LLVM_CONFIG_EXECUTABLE=$(ARM_LLVM_DIR)/bin/llvm-config-host cross: override LLVM_LDFLAGS=-L $(ARM_LLVM_DIR)/lib -lpthread -lrt -ldl -lm # Need to explicitly add /usr/include when cross compiling to pick up # dependent 3rd party non-system headers cross: override HOST_USR_INCLUDE=-I/usr/include WGADIR = ../src/core/dsp POCLDIR = ../src/llvmopencl OBJS = AllocasToEntry.o BarrierBlock.o BarrierTailReplication.o \ BreakConstantGEPs.o CanonicalizeBarriers.o Flatten.o \ GenerateHeader.o ImplicitLoopBarriers.o IsolateRegions.o \ Kernel.o LLVMUtils.o LoopBarriers.o ParallelRegion.o \ PHIsToAllocas.o TargetAddressSpaces.o \ VariableUniformityAnalysis.o WIVectorize.o Workgroup.o \ WorkItemAliasAnalysis.o WorkitemHandler.o \ WorkitemHandlerChooser.o WorkitemLoops.o WorkitemReplication.o\ main.o compiler.o wga.o program.o file_manip.o options.o OBJS := $(patsubst %.o, $(TARGET)/%.o, $(OBJS)) CXXFLAGS = ${LLVM_CXXFLAGS} -I${WGADIR} -I${POCLDIR} \ ${HOST_USR_INCLUDE} -O3 -fexceptions LIBS = ${CLANG_LIBS} ${LLVM_LIBS} LDFLAGS = ${LLVM_LDFLAGS} $(EXE): ${OBJS} $(CXX) $^ $(LIBS) $(LDFLAGS) -o $(TARGET)/$@ cross: $(EXE) $(TARGET)/%.o: %.cpp | $(TARGET)/ $(CXX) $(CXXFLAGS) -c $< -o $@ $(TARGET)/%.o: ${WGADIR}/%.cpp | $(TARGET)/ $(CXX) $(CXXFLAGS) -c $< -o $@ $(TARGET)/%.o: ${POCLDIR}/%.cpp | $(TARGET)/ $(CXX) $(CXXFLAGS) -c $< -o $@ $(TARGET)/%.o: ${POCLDIR}/%.cc | $(TARGET)/ $(CXX) $(CXXFLAGS) -c $< -o $@ $(TARGET)/: mkdir -p $@ clean: rm -f x86/* arm/*