Feature/makefile add apps library (#218)
* add BACnet stack library at apps/lib * convert apps to use apps/lib for smaller binary * fix -DBACDL_ALL=1 build * fix piface build * datalink MAX_MPDU and MAX_HEADER cleanup * add bip6 to git workflow * fix system library dependency of BACnet library Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
+27
-194
@@ -4,220 +4,53 @@
|
||||
|
||||
## General Flags
|
||||
TARGET = bacpiface
|
||||
# BACnet objects that are used with this app
|
||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||
SRC = main.c \
|
||||
$(BACNET_OBJECT_DIR)/device.c \
|
||||
$(BACNET_OBJECT_DIR)/netport.c \
|
||||
$(BACNET_OBJECT_DIR)/bi.c \
|
||||
$(BACNET_OBJECT_DIR)/bo.c
|
||||
|
||||
CFLAGS += -DMAX_TSM_TRANSACTIONS=1
|
||||
CFLAGS += -DMAX_BINARY_INPUTS=4
|
||||
CFLAGS += -DMAX_BINARY_OUTPUTS=8
|
||||
|
||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||
|
||||
# Source locations
|
||||
BACNET_CORE = ../../src
|
||||
BACNET_INCLUDE = ../../include
|
||||
BACNET_HANDLER = ../../demo/handler
|
||||
BACNET_OBJECT = ../../demo/object
|
||||
BACNET_DEMO = ../../demo
|
||||
BACNET_PORT_DIR = ../../ports/linux
|
||||
PIFACE_INCLUDE = libpifacedigital/src
|
||||
PIFACE_LIB = libpifacedigital
|
||||
MCP23S17_LIB = libmcp23s17
|
||||
|
||||
## BACnet options
|
||||
BACDL_DEFINE ?= -DBACDL_BIP=1
|
||||
# Declare your level of BBMD support
|
||||
BBMD_DEFINE ?= -DBBMD_ENABLED=1
|
||||
|
||||
# local files for this project
|
||||
CSRC = main.c \
|
||||
device.c
|
||||
|
||||
# common demo files needed
|
||||
DEMOSRC = \
|
||||
$(BACNET_HANDLER)/dlenv.c \
|
||||
$(BACNET_HANDLER)/txbuf.c \
|
||||
$(BACNET_HANDLER)/noserv.c \
|
||||
$(BACNET_HANDLER)/h_npdu.c \
|
||||
$(BACNET_HANDLER)/h_whois.c \
|
||||
$(BACNET_HANDLER)/h_iam.c \
|
||||
$(BACNET_HANDLER)/h_rp.c \
|
||||
$(BACNET_HANDLER)/h_rp_a.c \
|
||||
$(BACNET_HANDLER)/h_rpm.c \
|
||||
$(BACNET_HANDLER)/h_rpm_a.c \
|
||||
$(BACNET_HANDLER)/h_rr.c \
|
||||
$(BACNET_HANDLER)/h_wp.c \
|
||||
$(BACNET_HANDLER)/h_wpm.c \
|
||||
$(BACNET_HANDLER)/h_alarm_ack.c \
|
||||
$(BACNET_HANDLER)/h_arf.c \
|
||||
$(BACNET_HANDLER)/h_arf_a.c \
|
||||
$(BACNET_HANDLER)/h_awf.c \
|
||||
$(BACNET_HANDLER)/h_rd.c \
|
||||
$(BACNET_HANDLER)/h_dcc.c \
|
||||
$(BACNET_HANDLER)/h_ts.c \
|
||||
$(BACNET_HANDLER)/h_whohas.c \
|
||||
$(BACNET_HANDLER)/h_ihave.c \
|
||||
$(BACNET_HANDLER)/h_cov.c \
|
||||
$(BACNET_HANDLER)/h_ccov.c \
|
||||
$(BACNET_HANDLER)/h_ucov.c \
|
||||
$(BACNET_HANDLER)/h_getevent.c \
|
||||
$(BACNET_HANDLER)/h_gas_a.c \
|
||||
$(BACNET_HANDLER)/h_get_alarm_sum.c \
|
||||
$(BACNET_HANDLER)/h_getevent_a.c \
|
||||
$(BACNET_HANDLER)/h_pt.c \
|
||||
$(BACNET_HANDLER)/h_pt_a.c \
|
||||
$(BACNET_HANDLER)/h_upt.c \
|
||||
$(BACNET_HANDLER)/s_arfs.c \
|
||||
$(BACNET_HANDLER)/s_awfs.c \
|
||||
$(BACNET_HANDLER)/s_dcc.c \
|
||||
$(BACNET_HANDLER)/s_ihave.c \
|
||||
$(BACNET_HANDLER)/s_get_alarm_sum.c \
|
||||
$(BACNET_HANDLER)/s_get_event.c \
|
||||
$(BACNET_HANDLER)/s_iam.c \
|
||||
$(BACNET_HANDLER)/s_cov.c \
|
||||
$(BACNET_HANDLER)/s_ptransfer.c \
|
||||
$(BACNET_HANDLER)/s_rd.c \
|
||||
$(BACNET_HANDLER)/s_rp.c \
|
||||
$(BACNET_HANDLER)/s_rpm.c \
|
||||
$(BACNET_HANDLER)/s_ts.c \
|
||||
$(BACNET_HANDLER)/s_cevent.c \
|
||||
$(BACNET_HANDLER)/s_router.c \
|
||||
$(BACNET_HANDLER)/s_uevent.c \
|
||||
$(BACNET_HANDLER)/s_whohas.c \
|
||||
$(BACNET_HANDLER)/s_whois.c \
|
||||
$(BACNET_HANDLER)/s_wpm.c \
|
||||
$(BACNET_HANDLER)/s_upt.c \
|
||||
$(BACNET_HANDLER)/s_wp.c
|
||||
|
||||
OBJSRC = \
|
||||
$(BACNET_OBJECT)/bi.c \
|
||||
$(BACNET_OBJECT)/bo.c \
|
||||
$(BACNET_OBJECT)/netport.c
|
||||
|
||||
# core BACnet stack files
|
||||
CORESRC = \
|
||||
$(BACNET_CORE)/apdu.c \
|
||||
$(BACNET_CORE)/npdu.c \
|
||||
$(BACNET_CORE)/bacdcode.c \
|
||||
$(BACNET_CORE)/bacint.c \
|
||||
$(BACNET_CORE)/bacreal.c \
|
||||
$(BACNET_CORE)/bacstr.c \
|
||||
$(BACNET_CORE)/bacapp.c \
|
||||
$(BACNET_CORE)/bacprop.c \
|
||||
$(BACNET_CORE)/bactext.c \
|
||||
$(BACNET_CORE)/datetime.c \
|
||||
$(BACNET_CORE)/indtext.c \
|
||||
$(BACNET_CORE)/key.c \
|
||||
$(BACNET_CORE)/keylist.c \
|
||||
$(BACNET_CORE)/proplist.c \
|
||||
$(BACNET_CORE)/debug.c \
|
||||
$(BACNET_CORE)/bigend.c \
|
||||
$(BACNET_CORE)/arf.c \
|
||||
$(BACNET_CORE)/awf.c \
|
||||
$(BACNET_CORE)/cov.c \
|
||||
$(BACNET_CORE)/dcc.c \
|
||||
$(BACNET_CORE)/iam.c \
|
||||
$(BACNET_CORE)/ihave.c \
|
||||
$(BACNET_CORE)/rd.c \
|
||||
$(BACNET_CORE)/rp.c \
|
||||
$(BACNET_CORE)/rpm.c \
|
||||
$(BACNET_CORE)/timesync.c \
|
||||
$(BACNET_CORE)/whohas.c \
|
||||
$(BACNET_CORE)/whois.c \
|
||||
$(BACNET_CORE)/wp.c \
|
||||
$(BACNET_CORE)/wpm.c \
|
||||
$(BACNET_CORE)/abort.c \
|
||||
$(BACNET_CORE)/reject.c \
|
||||
$(BACNET_CORE)/bacerror.c \
|
||||
$(BACNET_CORE)/ptransfer.c \
|
||||
$(BACNET_CORE)/memcopy.c \
|
||||
$(BACNET_CORE)/filename.c \
|
||||
$(BACNET_CORE)/tsm.c \
|
||||
$(BACNET_CORE)/bacaddr.c \
|
||||
$(BACNET_CORE)/address.c \
|
||||
$(BACNET_CORE)/bacdevobjpropref.c \
|
||||
$(BACNET_CORE)/bacpropstates.c \
|
||||
$(BACNET_CORE)/alarm_ack.c \
|
||||
$(BACNET_CORE)/event.c \
|
||||
$(BACNET_CORE)/getevent.c \
|
||||
$(BACNET_CORE)/get_alarm_sum.c \
|
||||
$(BACNET_CORE)/readrange.c \
|
||||
$(BACNET_CORE)/timestamp.c \
|
||||
$(BACNET_CORE)/lighting.c \
|
||||
$(BACNET_CORE)/version.c
|
||||
|
||||
PORT_BIP_SRC = \
|
||||
$(BACNET_PORT_DIR)/bip-init.c \
|
||||
$(BACNET_CORE)/bvlc.c \
|
||||
$(BACNET_CORE)/bip.c
|
||||
|
||||
ifeq (${BACDL_DEFINE},-DBACDL_BIP=1)
|
||||
PORT_SRC = ${PORT_BIP_SRC}
|
||||
endif
|
||||
|
||||
## Include Directories
|
||||
INCLUDES = -I. -I$(BACNET_INCLUDE) -I$(BACNET_HANDLER) -I$(BACNET_OBJECT)
|
||||
INCLUDES += -I$(BACNET_PORT_DIR)
|
||||
INCLUDES += -I$(PIFACE_INCLUDE)
|
||||
|
||||
# Source to Object conversion
|
||||
COBJ = $(CSRC:%.c=%.o)
|
||||
DEMOOBJ = $(DEMOSRC:.c=.o)
|
||||
COREOBJ = $(CORESRC:.c=.o)
|
||||
OBJOBJ = $(OBJSRC:.c=.o)
|
||||
PORTOBJ = $(PORT_SRC:.c=.o)
|
||||
|
||||
# define something from the Makefile or batch file
|
||||
DEFINES = $(BACDL_DEFINE) $(BBMD_DEFINE)
|
||||
OPTIMIZATION = -Os $(OPTIMIZE_FLAGS)
|
||||
DEBUGGING = -g
|
||||
ifeq (${BUILD},debug)
|
||||
OPTIMIZATION = -O0
|
||||
DEBUGGING = -g
|
||||
endif
|
||||
ifeq (${BUILD},release)
|
||||
OPTIMIZATION = -Os $(OPTIMIZE_FLAGS)
|
||||
DEBUGGING = -DNDEBUG
|
||||
endif
|
||||
|
||||
BFLAGS += -DBACNET_PROTOCOL_REVISION=17
|
||||
BFLAGS += -DMAX_TSM_TRANSACTIONS=1
|
||||
BFLAGS += -DMAX_BINARY_INPUTS=4
|
||||
BFLAGS += -DMAX_BINARY_OUTPUTS=8
|
||||
|
||||
## Compile options for C files
|
||||
CFLAGS = $(DEFINES)
|
||||
CFLAGS += $(DEBUGGING)
|
||||
CFLAGS += $(INCLUDES)
|
||||
# warnings
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wstrict-prototypes
|
||||
CFLAGS += -Wmissing-prototypes
|
||||
# put it all together
|
||||
CFLAGS += $(BFLAGS) $(OPTIMIZATION)
|
||||
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
|
||||
|
||||
## Linker flags
|
||||
LDPIFACE = -Wl,-L$(PIFACE_LIB),-lpifacedigital,-L$(MCP23S17_LIB),-lmcp23s17
|
||||
LDFLAGS = -Wl,-lc,-lgcc,-lrt,-lm
|
||||
LFLAGS := $(LDPIFACE) $(LDFLAGS)
|
||||
LFLAGS += $(LDPIFACE)
|
||||
|
||||
## Objects not in library that must be built in order to link
|
||||
OBJECTS = $(COBJ) $(DEMOOBJ) $(COREOBJ) $(OBJOBJ) $(PORTOBJ)
|
||||
OBJS += ${SRC:.c=.o}
|
||||
|
||||
all: $(TARGET)
|
||||
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||
|
||||
$(TARGET): $(OBJECTS) $(LIBRARY)
|
||||
$(CC) $(OBJECTS) $(LFLAGS) -o $@
|
||||
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||
size $@
|
||||
cp $@ ../../bin
|
||||
|
||||
${BACNET_LIB_TARGET}:
|
||||
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||
|
||||
.c.o:
|
||||
${CC} -c ${CFLAGS} $*.c -o $@
|
||||
|
||||
.PHONY: depend
|
||||
depend:
|
||||
rm -f .depend
|
||||
${CC} -MM ${CFLAGS} *.c >> .depend
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f core ${TARGET} ${OBJECTS}
|
||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||
|
||||
.PHONY: include
|
||||
include: .depend
|
||||
|
||||
|
||||
.PHONY: clean all include depend
|
||||
|
||||
## Other dependencies
|
||||
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
|
||||
|
||||
|
||||
Regular → Executable
+9
-2
@@ -3,8 +3,15 @@
|
||||
# The library is located at github.com/piface
|
||||
# Since the PiFace library is GPLv3, we have to keep it separate.
|
||||
|
||||
git clone https://github.com/piface/libmcp23s17.git
|
||||
git clone https://github.com/piface/libpifacedigital.git
|
||||
if [ ! -d "libmcp23s17" ]
|
||||
then
|
||||
git clone git@github.com:piface/libmcp23s17.git
|
||||
fi
|
||||
|
||||
if [ ! -d "libpifacedigital" ]
|
||||
then
|
||||
git clone git@github.com:piface/libpifacedigital.git
|
||||
fi
|
||||
|
||||
# Build the library
|
||||
|
||||
|
||||
Reference in New Issue
Block a user