CC = clang CXX = clang++ BASEDIR = ../.. PHONELIBS := ../../phonelibs UNAME_S := $(shell uname -s) UNAME_M := $(shell uname -m) WARN_FLAGS = -Werror=implicit-function-declaration \ -Werror=incompatible-pointer-types \ -Werror=int-conversion \ -Werror=return-type \ -Werror=format-extra-args \ -Wno-deprecated-declarations CFLAGS = -std=gnu11 -g -fPIC -O2 $(WARN_FLAGS) CXXFLAGS = -std=c++11 -g -fPIC -O2 $(WARN_FLAGS) LDFLAGS = ifeq ($(UNAME_S),Darwin) ZMQ_LIBS = -L/usr/local/lib -lzmq else ifeq ($(OPTEST),1) ZMQ_LIBS = -lzmq else ifeq ($(UNAME_M),x86_64) ZMQ_FLAGS = -I$(PHONELIBS)/zmq/x64/include ZMQ_LIBS = -L$(PHONELIBS)/zmq/x64/lib -l:libzmq.a else ifeq ($(UNAME_M),aarch64) ZMQ_FLAGS = -I$(PHONELIBS)/zmq/aarch64/include ZMQ_LIBS = -L$(PHONELIBS)/zmq/aarch64/lib -l:libzmq.a LDFLAGS += -lgnustl_shared endif OBJDIR = obj OPENDBC_PATH := $(shell python -c 'import opendbc; print opendbc.DBC_PATH') DBC_SOURCES := $(wildcard $(OPENDBC_PATH)/*.dbc) DBC_OBJS := $(patsubst $(OPENDBC_PATH)/%.dbc,$(OBJDIR)/%.o,$(DBC_SOURCES)) DBC_CCS := $(patsubst $(OPENDBC_PATH)/%.dbc,dbc_out/%.cc,$(DBC_SOURCES)) .SECONDARY: $(DBC_CCS) LIBDBC_OBJS := $(OBJDIR)/dbc.o $(OBJDIR)/parser.o $(OBJDIR)/packer.o CWD := $(shell pwd) .PHONY: all all: $(OBJDIR) libdbc.so include ../common/cereal.mk # make sure cereal is built libdbc.so:: ../../cereal/gen/cpp/log.capnp.h ../../cereal/gen/cpp/log.capnp.h: cd ../../cereal && make libdbc.so:: $(LIBDBC_OBJS) $(DBC_OBJS) @echo "[ LINK ] $@" $(CXX) -fPIC -shared -o '$@' $^ \ -I. -I../.. \ $(CXXFLAGS) \ $(LDFLAGS) \ $(ZMQ_FLAGS) \ $(ZMQ_LIBS) \ $(CEREAL_CXXFLAGS) \ $(CEREAL_LIBS) packer_impl.so: packer_impl.pyx packer_setup.py python packer_setup.py build_ext --inplace rm -rf build rm -f packer_impl.cpp $(OBJDIR)/%.o: %.cc @echo "[ CXX ] $@" $(CXX) -fPIC -c -o '$@' $^ \ -I. -I../.. \ $(CXXFLAGS) \ $(ZMQ_FLAGS) \ $(CEREAL_CXXFLAGS) \ $(OBJDIR)/%.o: dbc_out/%.cc @echo "[ CXX ] $@" $(CXX) -fPIC -c -o '$@' $^ \ -I. -I../.. \ $(CXXFLAGS) \ $(ZMQ_FLAGS) \ $(CEREAL_CXXFLAGS) \ dbc_out/%.cc: process_dbc.py dbc_template.cc $(OPENDBC_PATH)/%.dbc @echo "[ DBC GEN ] $@" @echo "Missing prereq $?" PYTHONPATH=$(PYTHONPATH):$(CWD)/../../pyextra ./process_dbc.py $(OPENDBC_PATH) dbc_out $(OBJDIR): mkdir -p $@ .PHONY: clean $(OBJDIR) clean: rm -rf libdbc.so* rm -f dbc_out/*.cc rm -f dbcs.txt rm -f dbcs.csv rm -rf $(OBJDIR)/*