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 =
i f e q ( $( UNAME_S ) , D a r w i n )
ZMQ_LIBS = -L/usr/local/lib -lzmq
e l s e i f e q ( $( OPTEST ) , 1 )
ZMQ_LIBS = -lzmq
e l s e i f e q ( $( UNAME_M ) , x 8 6 _ 6 4 )
ZMQ_FLAGS = -I$( PHONELIBS) /zmq/x64/include
ZMQ_LIBS = -L$( PHONELIBS) /zmq/x64/lib -l:libzmq.a
e l s e i f e q ( $( UNAME_M ) , a a r c h 6 4 )
ZMQ_FLAGS = -I$( PHONELIBS) /zmq/aarch64/include
ZMQ_LIBS = -L$( PHONELIBS) /zmq/aarch64/lib -l:libzmq.a
LDFLAGS += -lgnustl_shared
e n d i f
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
i n c l u d e . . / c o m m o n / c e r e a l . m k
# 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) /*