a914ca95a6f76afddae680aeac18546448902675
[ti-machine-learning/ti-machine-learning.git] / src / app / makefile~
1 ################################################################################
2 #
3 # makefile
4 #
5 # Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 #
11 #    Redistributions of source code must retain the above copyright
12 #    notice, this list of conditions and the following disclaimer.
13 #
14 #    Redistributions in binary form must reproduce the above copyright
15 #    notice, this list of conditions and the following disclaimer in the
16 #    documentation and/or other materials provided with the
17 #    distribution.
18 #
19 #    Neither the name of Texas Instruments Incorporated nor the names of
20 #    its contributors may be used to endorse or promote products derived
21 #    from this software without specific prior written permission.
22 #
23 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 #
35 ################################################################################
37 UNAME_M :=$(shell uname -m)
38 ifneq (,$(findstring 86, $(UNAME_M)))
39     # In a cross compile environment we are assuming that the EVM file system
40     # is located on the build host and necessary ARM libraries are installed
41     # on that file system.
42     ifneq ($(MAKECMDGOALS),clean)
43        ifeq ($(TARGET_ROOTDIR),)
44          $(error Environment variable TARGET_ROOTDIR must be defined. Set it to point at the EVM root file system)
45        endif
46     endif
48     # gcc ARM cross compiler will not, by default, search the host's
49     # /usr/include.  Explicitly specify here to find dependent vendor headers
50 CC = arm-linux-gnueabihf-gcc
51 CPPC =  arm-linux-gnueabihf-g++
52 AR = arm-linux-gnueabihf-ar
53 else
54 CC = gcc
55 CPPC = g++
56 AR = @ar
57 endif
61 C_INCLUDE_PATH = ../common/api ../common/cnn ../common/util \
62 $(TARGET_ROOTDIR)/usr/include
63 C_INCLUDE_PATH_FLAG = $(foreach d, $(C_INCLUDE_PATH), -I$d)
64 C_LIB = timl cblas_armplusdsp blis OpenCL stdc++ rt jpeg m
65 C_LIB_FLAG = $(foreach d, $(C_LIB), -l$d)
66 C_LIB_PATH = $(TARGET_ROOTDIR)/usr/lib ../../bin
67 C_LIB_PATH_FLAG = $(foreach d, $(C_LIB_PATH), -L$d)
68 CFLAGS += -g -O3 -fopenmp
69 LD_FLAGS=-L$(TARGET_ROOTDIR)/lib -L$(TARGET_ROOTDIR)/usr/lib -Wl,-rpath-link,$(TARGET_ROOTDIR)/lib -Wl,-rpath-link,$(TARGET_ROOTDIR)/usr/lib
71 ARFLAGS = -rcs
72 RM = @rm
73 RMFLAGS += -fr
76 # APP CNN CLASS
77 APP_CNN_CLASS_BIN_CFILES = $(shell find ./cnn/class -name "*.c")
78 APP_CNN_CLASS_BIN_OBJS =  $(patsubst %.c, %.o, $(APP_CNN_CLASS_BIN_CFILES))
79 APP_CNN_CLASS_BINS =  $(patsubst %.c, %.bin, $(APP_CNN_CLASS_BIN_CFILES))
80 APP_CNN_CLASS_HFILES = $(shell find ./cnn/class -name "*.h")
82 # APP CNN SL
83 APP_CNN_SL_BIN_HFILES = $(shell find ./cnn/scene -name "*.h")
84 APP_CNN_SL_BIN_CFILES = $(shell find ./cnn/scene/sbd -name "*.c")
85 APP_CNN_SL_BIN_OBJS =  $(patsubst %.c, %.o, $(APP_CNN_SL_BIN_CFILES))
86 APP_CNN_SL_BINS =  $(patsubst %.c, %.bin, $(APP_CNN_SL_BIN_CFILES))
87 APP_CNN_SL_CFILES = $(shell find ./cnn/scene -name "*.c")
88 APP_CNN_SL_OBJS = $(patsubst %.c, %.o, $(APP_CNN_SL_CFILES))
89 APP_CNN_SL_AUX_OBJS = $(filter-out $(APP_CNN_SL_BIN_OBJS), $(APP_CNN_SL_OBJS))
91 # APP CNN INTEROP CAFFE
92 APP_CNN_INTEROP_CAFFE_BIN_CFILES = $(shell find ./cnn/interop/caffe -name "*.cpp")
93 APP_CNN_INTEROP_CAFFE_BIN_OBJS =  $(patsubst %.cpp, %.o, $(APP_CNN_INTEROP_CAFFE_BIN_CFILES))
94 APP_CNN_INTEROP_CAFFE_BINS = ./cnn/interop/caffe/appCNNInteropCaffe.bin
95 APP_CNN_INTEROP_CAFFE_HFILES = $(shell find ./cnn/interop/caffe -name "*.hpp")
97 # APP CNN CONVERT IMAGENET
98 APP_CNN_CONVERT_IMAGENET_BIN_CFILES = $(shell find ./cnn/convert/imagenet -name "*.cpp")
99 APP_CNN_CONVERT_IMAGENET_BIN_OBJS =  $(patsubst %.cpp, %.o, $(APP_CNN_CONVERT_IMAGENET_BIN_CFILES))
100 APP_CNN_CONVERT_IMAGENET_BINS = ./cnn/convert/imagenet/appCNNConvertImageNet.bin
101 APP_CNN_CONVERT_IMAGENET_HFILES = $(shell find ./cnn/convert/imagenet -name "*.hpp")
103 # APP CNN CONVERT SBD
104 APP_CNN_CONVERT_SBD_BIN_CFILES = $(shell find ./cnn/convert/sbd -name "*.cpp")
105 APP_CNN_CONVERT_SBD_BIN_OBJS =  $(patsubst %.cpp, %.o, $(APP_CNN_CONVERT_SBD_BIN_CFILES))
106 APP_CNN_CONVERT_SBD_BINS = ./cnn/convert/sbd/appCNNConvertSBD.bin
107 APP_CNN_CONVERT_SBD_HFILES = $(shell find ./cnn/convert/sbd -name "*.hpp")
110 APP_CNN_BINS = \
111 $(APP_CNN_CLASS_BINS) \
112 $(APP_CNN_SL_BINS) \
113 $(APP_CNN_CONVERT_IMAGENET_BINS) \
114 $(APP_CNN_CONVERT_SBD_BINS) \
115 $(APP_CNN_INTEROP_CAFFE_BINS)
117 APP_CNN_OBJS = \
118 $(APP_CNN_CLASS_BIN_OBJS) \
119 $(APP_CNN_SL_OBJS) \
120 $(APP_CNN_INTEROP_CAFFE_BIN_OBJS) \
121 $(APP_CNN_CONVERT_IMAGENET_BIN_OBJS) \
122 $(APP_CNN_CONVERT_SBD_BIN_OBJS)
124 all: $(APP_CNN_BINS)
126 clean:
127         $(RM) $(RMFLAGS) \
128         $(APP_CNN_OBJS) \
129         $(APP_CNN_BINS)
131 # appCNNClass bins
132 $(APP_CNN_CLASS_BINS): %.bin: %.o
133         $(CC) $(CFLAGS) $(LD_FLAGS) -o $@ $^ \
134         $(C_LIB_FLAG) $(C_LIB_PATH_FLAG)
135         
136 # appCNNClass objs
137 $(APP_CNN_CLASS_BIN_OBJS): %.o: %.c $(APP_CNN_CLASS_HFILES)
138         $(CC) -c $(CFLAGS) $(LD_FLAGS) -o $@ $< \
139         $(C_INCLUDE_PATH_FLAG)
140         
141 # appCNNScene bins
142 $(APP_CNN_SL_BINS): %.bin: %.o $(APP_CNN_SL_AUX_OBJS)
143         $(CC) $(CFLAGS) $(LD_FLAGS) -o $@ $^ \
144         $(C_LIB_FLAG) $(C_LIB_PATH_FLAG)
146 # appCNNScene objs
147 $(APP_CNN_SL_OBJS): %.o: %.c $(APP_CNN_SL_HFILES)
148         $(CC) -c $(CFLAGS) $(LD_FLAGS) -o $@ $< \
149         $(C_INCLUDE_PATH_FLAG)
151 # appCNNConvertImageNet bins 
152 $(APP_CNN_CONVERT_IMAGENET_BINS): $(APP_CNN_CONVERT_IMAGENET_BIN_OBJS)
153         $(CPPC) $(CFLAGS) $(LD_FLAGS) -o $(APP_CNN_CONVERT_IMAGENET_BINS) $^ \
154         -lopencv_core -lopencv_highgui -lopencv_imgproc \
155         $(C_LIB_PATH_FLAG)
156         
157 # appCNNConvertImageNet objs
158 $(APP_CNN_CONVERT_IMAGENET_BIN_OBJS): %.o: %.cpp $(APP_CNN_CONVERT_IMAGENET_HFILES)
159         $(CPPC) -c $(CFLAGS) $(LD_FLAGS) -o $@ $< \
160         $(C_INCLUDE_PATH_FLAG)
162 # appCNNConvertSBD bins 
163 $(APP_CNN_CONVERT_SBD_BINS): $(APP_CNN_CONVERT_SBD_BIN_OBJS)
164         $(CPPC) $(CPPFLAGS) $(LD_FLAGS) -o $(APP_CNN_CONVERT_SBD_BINS) $^ \
165         -lopencv_core -lopencv_highgui -lopencv_imgproc \
166         $(C_LIB_PATH_FLAG)
167         
168 # appCNNConvertSBD objs
169 $(APP_CNN_CONVERT_SBD_BIN_OBJS): %.o: %.cpp $(APP_CNN_CONVERT_SBD_HFILES)
170         $(CPPC) -c $(CFLAGS) $(LD_FLAGS) -o $@ $< \
171         $(C_INCLUDE_PATH_FLAG)
173 # appCNNInteropCaffe bins
174 $(APP_CNN_INTEROP_CAFFE_BINS): $(APP_CNN_INTEROP_CAFFE_BIN_OBJS)
175         $(CPPC) $(CFLAGS) $(LD_FLAGS) -o   $(APP_CNN_INTEROP_CAFFE_BINS) $^ \
176         -lprotobuf \
177         $(C_LIB_FLAG) $(C_LIB_PATH_FLAG)
179 # appCNNInteropCaffe objs
180 $(APP_CNN_INTEROP_CAFFE_BIN_OBJS): %.o: %.cpp $(APP_CNN_INTEROP_CAFFE_HFILES)
181         $(CPPC) -c $(CFLAGS) $(LD_FLAGS) -o $(LD_FLAGS)  $@ $< \
182         $(C_INCLUDE_PATH_FLAG)