RaspberrPi project source code
guowenxue
14 hours ago 9ae5259c592406577656b8432c4aa2e86ea2a7f6
project/lightd/makefile
@@ -12,7 +12,9 @@
#*******************************************************************************
PRJ_PATH=$(shell pwd)
APP_NAME = iotd
APP_NAME=$(shell basename ${PRJ_PATH})
DEB_NAME=${APP_NAME}.deb
DEB_PATH=${PRJ_PATH}/deb
BUILD_ARCH=$(shell uname -m)
ifneq ($(findstring $(BUILD_ARCH), "x86_64" "i386"),)
@@ -25,8 +27,8 @@
# common CFLAGS for our source code
CFLAGS = -Wall -Wshadow -Wundef -Wmaybe-uninitialized -D_GNU_SOURCE
# sub-directory compiled to a library and need to link
SRCS=src hal booster
# C source file in sub-directory
SRCS=booster hal
SRCS_PATH=$(patsubst %,${PRJ_PATH}/%,$(SRCS))
CFLAGS+=$(patsubst %,-I%,$(SRCS_PATH))
LDFLAGS+=$(patsubst %,-L%,$(SRCS_PATH))
@@ -34,31 +36,41 @@
LDFLAGS+=${LIBS}
# Open source libraries
LDFLAGS+=-lmosquitto -lgpiod -lcjson -lm
CFLAGS+=-I ${PRJ_PATH}/openlibs/install/include
LDFLAGS+=-L ${PRJ_PATH}/openlibs/install/lib
# sub-directory need to entry and compile
SUBDIR=${SRCS}
# libraries
libs=openlibs ${SRCS}
LDFLAGS+=-lmosquitto -lcjson -lssl -lcrypto -lgpiod -lm
LDFLAGS+=-lpthread
all: entry subdir
   ${CROSS_COMPILE}gcc ${CFLAGS} main.c -o ${APP_NAME} ${LDFLAGS}
   ${CROSS_COMPILE}gcc ${CFLAGS} ${SRCFILES} -o ${APP_NAME} ${LDFLAGS}
   @make gendeb
entry:
   @echo "Building ${APP_NAME} on ${BUILD_ARCH}"
subdir:
   @for dir in ${SUBDIR} ; do if [ ! -e $${dir} ] ; then ln -s ../$${dir}; fi; done
   @for dir in ${SUBDIR} ;  do make CFLAGS="${CFLAGS}" -C $${dir} ; done
   @for dir in ${libs} ; do if [ ! -e $${dir} ] ; then ln -s ../$${dir}; fi; done
   @for dir in ${libs} ;  do CFLAGS="${CFLAGS}" make -C $${dir} ; done
gendeb:
   @ if [ ! -L ${DEB_PATH} ]; then ln -s ../deb ${DEB_PATH}; fi
   @make -C ${DEB_PATH} APP_NAME=${APP_NAME}
install:
   cp ${APP_NAME} /tftp
   cp ${APP_NAME} ${DEB_PATH}/${DEB_NAME} /tftp
clean:
   @for dir in ${SRCS} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
   @make clean -C ${DEB_PATH} APP_NAME=${APP_NAME}
   @rm -f ${APP_NAME}
distclean:
   @for dir in ${SUBDIR} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
   @for dir in ${libs} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
   @for dir in ${libs} ; do if [ -L $${dir} ] ; then unlink $${dir}; fi; done
   @rm -f ${APP_NAME}
   @rm -f cscope.* tags
   @rm -f *.log *.db