CC = clang
CXX = clang++
BASEDIR = ../..
EXTERNAL = ../../external
PHONELIBS = ../../phonelibs
WARN_FLAGS = -Werror= implicit-function-declaration \
-Werror= incompatible-pointer-types \
-Werror= int-conversion \
-Werror= return -type \
-Werror= format-extra-args \
-Wno-deprecated-declarations
CFLAGS = -I. -std= gnu11 -fPIC -O2 $( WARN_FLAGS)
CXXFLAGS = -I. -std= c++14 -fPIC -O2 $( WARN_FLAGS)
i f e q ( $( ARCH ) , a a r c h 6 4 )
CFLAGS += -mcpu= cortex-a57
CXXFLAGS += -mcpu= cortex-a57
e n d i f
JSON_FLAGS = -I$( PHONELIBS) /json/src
JSON11_FLAGS = -I$( PHONELIBS) /json11/
EIGEN_FLAGS = -I$( PHONELIBS) /eigen
UNAME_M := $( shell uname -m)
UNAME_S := $( shell uname -s)
i f e q ( $( UNAME_M ) , x 8 6 _ 6 4 )
i f e q ( $( UNAME_S ) , D a r w i n )
LIBYUV_FLAGS = -I$( PHONELIBS) /libyuv/include
LIBYUV_LIBS = $( PHONELIBS) /libyuv/mac/lib/libyuv.a
ZMQ_FLAGS = -I$( EXTERNAL) /zmq/include
ZMQ_LIBS = $( PHONELIBS) /zmq/mac/lib/libczmq.a \
$( PHONELIBS) /zmq/mac/lib/libzmq.a
OPENCL_LIBS = -framework OpenCL
PLATFORM_OBJS = cameras/camera_fake.o \
../common/visionbuf_cl.o
e l s e
# assume x86_64 linux
LIBYUV_FLAGS = -I$( PHONELIBS) /libyuv/include
LIBYUV_LIBS = $( PHONELIBS) /libyuv/x64/lib/libyuv.a
ZMQ_FLAGS = -I$( PHONELIBS) /zmq/aarch64/include
ZMQ_LIBS = -l:libczmq.a -l:libzmq.a -lsodium
OPENCL_LIBS = -lOpenCL
UUID_LIBS = -luuid
TF_FLAGS = -I$( EXTERNAL) /tensorflow/include
TF_LIBS = -L$( EXTERNAL) /tensorflow/lib -ltensorflow \
-Wl,-rpath $( EXTERNAL) /tensorflow/lib
SNPE_FLAGS = -I$( PHONELIBS) /snpe/include/
SNPE_LIBS = -L$( PHONELIBS) /snpe/x86_64-linux-clang/ \
-lSNPE -lsymphony-cpu \
-Wl,-rpath $( PHONELIBS) /snpe/x86_64-linux-clang/
CFLAGS += -g
CXXFLAGS += -g -I../common
PLATFORM_OBJS = cameras/camera_frame_stream.o \
../common/visionbuf_cl.o \
../common/visionimg.o \
runners/tfmodel.o
e n d i f
SSL_FLAGS = -I/usr/include/openssl/
SSL_LIBS = -lssl -lcrypto
OTHER_LIBS = -lz -lm -lpthread
CFLAGS += -D_GNU_SOURCE \
-DCLU_NO_CACHE
OBJS = visiond.o
e l s e
# assume phone
LIBYUV_FLAGS = -I$( PHONELIBS) /libyuv/include
LIBYUV_LIBS = $( PHONELIBS) /libyuv/lib/libyuv.a
ZMQ_LIBS = -l:libczmq.a -l:libzmq.a -lgnustl_shared
CURL_FLAGS = -I$( PHONELIBS) /curl/include
CURL_LIBS = $( PHONELIBS) /curl/lib/libcurl.a \
$( PHONELIBS) /zlib/lib/libz.a
SSL_FLAGS = -I$( PHONELIBS) /boringssl/include
SSL_LIBS = $( PHONELIBS) /boringssl/lib/libssl_static.a \
$( PHONELIBS) /boringssl/lib/libcrypto_static.a
OPENCL_FLAGS = -I$( PHONELIBS) /opencl/include
OPENCL_LIBS = -lgsl -lCB -lOpenCL
OPENGL_LIBS = -lGLESv3 -lEGL
UUID_LIBS = -luuid
SNPE_FLAGS = -I$( PHONELIBS) /snpe/include/
SNPE_LIBS = -lSNPE -lsymphony-cpu -lsymphonypower
OTHER_LIBS = -lz -lcutils -lm -llog -lui -ladreno_utils
PLATFORM_OBJS = cameras/camera_qcom.o \
../common/visionbuf_ion.o \
../common/visionimg.o
CFLAGS += -DQCOM \
-I$( PHONELIBS) /android_system_core/include \
-I$( PHONELIBS) /android_frameworks_native/include \
-I$( PHONELIBS) /android_hardware_libhardware/include \
-I$( PHONELIBS) /linux/include
CXXFLAGS += -DQCOM \
-I$( PHONELIBS) /android_system_core/include \
-I$( PHONELIBS) /android_frameworks_native/include \
-I$( PHONELIBS) /android_hardware_libhardware/include \
-I$( PHONELIBS) /linux/include
OBJS = visiond.o
e n d i f
OUTPUT = visiond
.PHONY : all
all : $( OUTPUT )
i n c l u d e . . / c o m m o n / c e r e a l . m k
OBJS += $( PLATFORM_OBJS) \
../common/swaglog.o \
../common/ipc.o \
../common/visionipc.o \
../common/util.o \
../common/params.o \
../common/efd.o \
../common/buffering.o \
transforms/transform.o \
transforms/loadyuv.o \
transforms/rgb_to_yuv.o \
models/commonmodel.o \
runners/snpemodel.o \
models/posenet.o \
models/monitoring.o \
models/driving.o \
clutil.o \
$( PHONELIBS) /json/src/json.o \
$( PHONELIBS) /json11/json11.o \
$( CEREAL_OBJS)
DEPS := $( OBJS:.o= .d)
rgb_to_yuv_test : transforms /rgb_to_yuv_test .o clutil .o transforms /rgb_to_yuv .o ../common /util .o
@echo " [ LINK ] $@ "
$( CXX) -fPIC -o '$@' $^ \
$( LIBYUV_LIBS) \
$( LDFLAGS) \
-L/usr/lib \
-L/system/vendor/lib64 \
$( OPENCL_LIBS) \
$(OUTPUT) : $( OBJS )
@echo " [ LINK ] $@ "
$( CXX) -fPIC -o '$@' $^ \
$( LDFLAGS) \
$( LIBYUV_LIBS) \
$( OPENGL_LIBS) \
$( CEREAL_LIBS) \
$( ZMQ_LIBS) \
-ljpeg \
-L/usr/lib \
-L/system/vendor/lib64 \
$( OPENCL_LIBS) \
$( CURL_LIBS) \
$( SSL_LIBS) \
$( TF_LIBS) \
$( SNPE_LIBS) \
$( UUID_LIBS) \
$( OTHER_LIBS)
$(MODEL_OBJS) : %.o : %.dlc
@echo " [ bin2o ] $@ "
cd '$(dir $<)' && ld -r -b binary '$(notdir $<)' -o '$(abspath $@)'
%.o : %.cc
@echo " [ CXX ] $@ "
$( CXX) $( CXXFLAGS) -MMD \
-Iinclude -I.. -I../.. \
$( EIGEN_FLAGS) \
$( ZMQ_FLAGS) \
$( CEREAL_CXXFLAGS) \
$( OPENCL_FLAGS) \
$( LIBYUV_FLAGS) \
$( TF_FLAGS) \
$( SNPE_FLAGS) \
$( JSON_FLAGS) \
$( JSON11_FLAGS) $( CURL_FLAGS) \
-I$( PHONELIBS) /libgralloc/include \
-I$( PHONELIBS) /linux/include \
-c -o '$@' '$<'
%.o : %.c
@echo " [ CC ] $@ "
$( CC) $( CFLAGS) -MMD \
-Iinclude -I.. -I../.. \
$( ZMQ_FLAGS) \
$( CEREAL_CFLAGS) \
$( OPENCL_FLAGS) \
$( LIBYUV_FLAGS) \
$( JSON_FLAGS) \
-I$( PHONELIBS) /libgralloc/include \
-I$( PHONELIBS) /linux/include \
-c -o '$@' '$<'
.PHONY : clean
clean :
rm -f visiond rgb_to_yuv_test rgb_to_yuv_test.o $( OBJS) $( DEPS)
- i n c l u d e $( DEPS )