open source driving agent
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
5.8 KiB

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)
ifeq ($(ARCH),aarch64)
CFLAGS += -mcpu=cortex-a57
CXXFLAGS += -mcpu=cortex-a57
endif
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)
ifeq ($(UNAME_M),x86_64)
ifeq ($(UNAME_S),Darwin)
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
else
# 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
endif
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
else
# 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
endif
OUTPUT = visiond
.PHONY: all
all: $(OUTPUT)
include ../common/cereal.mk
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)
-include $(DEPS)