aboutsummaryrefslogtreecommitdiff
path: root/clocl/Makefile
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/*