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)
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 )
EXTERNAL := ../../external
ZMQ_FLAGS = -I$( EXTERNAL) /zmq/include
ZMQ_LIBS = -L$( EXTERNAL) /zmq/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
CXXFLAGS += -lgnustl_shared
e n d i f
OPENDBC_PATH := $( shell python -c 'import opendbc; print opendbc.DBC_PATH' )
DBC_SOURCES := $( wildcard $( OPENDBC_PATH) /*.dbc)
DBC_CCS := $( patsubst $( OPENDBC_PATH) /%.dbc,dbc_out/%.cc,$( DBC_SOURCES) )
CWD := $( shell pwd )
.PHONY : all
all : 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 :: dbc .cc parser .cc packer .cc $( DBC_CCS )
$( CXX) -fPIC -shared -o '$@' $^ \
-I. \
-I../.. \
$( CXXFLAGS) \
$( ZMQ_FLAGS) \
$( ZMQ_LIBS) \
$( CEREAL_CXXFLAGS) \
$( CEREAL_LIBS)
dbc_out/%.cc : $( OPENDBC_PATH ) /%.dbc process_dbc .py dbc_template .cc
PYTHONPATH = $( PYTHONPATH) :$( CWD) /../../pyextra ./process_dbc.py '$<' '$@'
.PHONY : clean
clean :
rm -rf libdbc.so*
rm -f dbc_out/*.cc
rm -f dbcs.txt
rm -f dbcs.csv