RaspberrPi project source code
guowenxue
2024-03-11 01a9d8e78d7cb51d15761ebe11f19b547f55e22a
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 coreJSON  coreMQTT  coreSNTP
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     @make install
49
50 entry:
51     @echo "Building ${APP_NAME} on ${BUILD_ARCH}"
52
53 subdir:
54     @for dir in ${libs} ; do if [ ! -e $${dir} ] ; then ln -s ../$${dir}; fi; done
55     @for dir in ${libs} ;  do make -C $${dir} ; done
56
57 install:
58     cp ${APP_NAME} /tftp
59
60 clean:
61     @for dir in ${SRCS} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
62     @rm -f ${APP_NAME}
63
64 distclean:
65     @for dir in ${libs} ; do if [ -e $${dir} ] ; then make clean -C $${dir}; fi; done
66     @for dir in ${libs} ; do if [ -e $${dir} ] ; then unlink $${dir}; fi; done
67     @rm -f ${APP_NAME}
68     @rm -f cscope.* tags
69