RaspberrPi project source code
Guo Wenxue
2023-09-08 47098ac0fb3a6bed9bd5c2acfc64d84387302cda
commit | author | age
d6b4a7 1 #********************************************************************************
G 2 #      Copyright:  (C) 2023 LingYun IoT System Studio
3 #                  All rights reserved.
4 #
5 #       Filename:  Makefile
6 #    Description:  This file is the project top Makefie
7 #
8 #        Version:  1.0.0(11/08/23)
9 #         Author:  Guo Wenxue <guowenxue@gmail.com>
10 #      ChangeLog:  1, Release initial version on "11/08/23 16:18:43"
11 #
12 #*******************************************************************************
13
14 PRJ_PATH=$(shell pwd)
15 APP_NAME = mqttd
16
17 BUILD_ARCH=$(shell uname -m)
18 ifneq ($(findstring $(BUILD_ARCH), "x86_64" "i386"),)
19     CROSS_COMPILE=arm-linux-gnueabihf-
20 endif
21
22 # C source files in top-level directory
23 SRCFILES = $(wildcard *.c)
24
25 # common CFLAGS for our source code
26 CFLAGS = -Wall -Wshadow -Wundef -Wmaybe-uninitialized -D_GNU_SOURCE
27
28 # C source file in sub-directory
29 SRCS=booster modules
30 SRCS_PATH=$(patsubst %,${PRJ_PATH}/%,$(SRCS))
31 CFLAGS+=$(patsubst %,-I%,$(SRCS_PATH))
32 LDFLAGS+=$(patsubst %,-L%,$(SRCS_PATH))
33 LIBS=$(patsubst %,-l%,$(SRCS))
34 LDFLAGS+=${LIBS}
35
36 # Open source libraries
37 CFLAGS+=-I ${PRJ_PATH}/openlibs/install/include
38 LDFLAGS+=-L ${PRJ_PATH}/openlibs/install/lib
39
40 # libraries
41 libs=openlibs ${SRCS}
42 LDFLAGS+=-lmosquitto -lcjson -lssl -lcrypto -lgpiod
43
44 LDFLAGS+=-lpthread
45
46 all: entry subdir
47     ${CROSS_COMPILE}gcc ${CFLAGS} ${SRCFILES} -o ${APP_NAME} ${LDFLAGS}
48
49 entry:
50     @echo "Building ${APP_NAME} on ${BUILD_ARCH}"
51
52 subdir:
53     @for dir in ${libs} ; do if [ ! -e $${dir} ] ; then ln -s ../$${dir}; fi; done
54     @for dir in ${libs} ;  do make -C $${dir} ; done
55
56 install:
57     cp ${APP_NAME} /tftp
58
59 clean:
60     @for dir in ${SRCS} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
61     @rm -f ${APP_NAME}
62
63 distclean:
64     @for dir in ${libs} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
65     @for dir in ${libs} ; do if [ -e $${dir} ] ; then unlink $${dir}; fi; done
66     @rm -f ${APP_NAME}
67     @rm -f cscope.* tags
68