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.
104 lines
2.4 KiB
104 lines
2.4 KiB
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)/*
|
|
|