blob: 4ffccb70003d3ac94247d7deb8ae040d3df886cc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# 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/*
|