97 lines
2.6 KiB
Makefile
97 lines
2.6 KiB
Makefile
# Makefile for BACnet GTK Device Discovery Application
|
|
|
|
TARGET = bacdiscover-gtk
|
|
|
|
BACNET_SRC_DIR = $(realpath ../../src)
|
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|
BACNET_CLIENT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/client
|
|
|
|
SOURCES = main.c \
|
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
|
$(BACNET_OBJECT_DIR)/netport.c \
|
|
$(BACNET_CLIENT_DIR)/bac-discover.c \
|
|
$(BACNET_CLIENT_DIR)/bac-rw.c
|
|
|
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
|
|
|
# GTK Configuration
|
|
GTK_CFLAGS = $(shell pkg-config --cflags gtk+-3.0)
|
|
GTK_LIBS = $(shell pkg-config --libs gtk+-3.0)
|
|
LFLAGS += $(GTK_LIBS)
|
|
CFLAGS += $(GTK_CFLAGS)
|
|
CFLAGS += -std=gnu99
|
|
|
|
# BACnet Library adjustments
|
|
CFLAGS += -DTARGET_DATA_QUEUE_COUNT=128
|
|
|
|
# Check if GTK is available
|
|
GTK_CHECK = $(shell pkg-config --exists gtk+-3.0 && echo "yes")
|
|
|
|
# Object files
|
|
OBJECTS = $(SOURCES:.c=.o)
|
|
|
|
# Default target
|
|
all: check-gtk ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
|
|
|
# Check if GTK is available
|
|
check-gtk:
|
|
ifneq ($(GTK_CHECK),yes)
|
|
@echo "Error: GTK+ 3.0 development libraries not found!"
|
|
@echo "Please install GTK+ 3.0 development packages:"
|
|
@echo " Ubuntu/Debian: sudo apt-get install libgtk-3-dev"
|
|
@echo " Fedora/RHEL: sudo yum install gtk3-devel"
|
|
@echo " openSUSE: sudo zypper install gtk3-devel"
|
|
@exit 1
|
|
endif
|
|
|
|
# Build the target
|
|
$(TARGET_BIN): $(OBJECTS) Makefile $(BACNET_LIB_TARGET)
|
|
$(CC) ${PFLAGS} $(OBJECTS) $(LFLAGS) -o $@
|
|
size $@
|
|
cp $@ ../../bin
|
|
|
|
# Build BACnet library if needed
|
|
$(BACNET_LIB_TARGET):
|
|
$(MAKE) -s -C $(BACNET_LIB_DIR) clean all
|
|
|
|
# Build object files
|
|
%.o: %.c
|
|
$(CC) -c $(CFLAGS) $< -o $@
|
|
|
|
depend:
|
|
rm -f .depend
|
|
${CC} -MM ${CFLAGS} *.c >> .depend
|
|
|
|
# Clean target
|
|
clean:
|
|
rm -f core ${TARGET_BIN} ${OBJECTS} $(TARGET).map ${BACNET_LIB_TARGET}
|
|
|
|
# Install target (optional)
|
|
install: $(TARGET)
|
|
install -D $(TARGET_BIN) $(DESTDIR)/usr/local/bin/$(TARGET_BIN)
|
|
|
|
# Debug target
|
|
debug: CFLAGS += -g -DDEBUG
|
|
debug: $(TARGET)
|
|
|
|
# Help target
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " all - Build the GTK BACnet Discovery application"
|
|
@echo " debug - Build with debug symbols and DEBUG flag"
|
|
@echo " clean - Remove built files"
|
|
@echo " install - Install the application to /usr/local/bin"
|
|
@echo " help - Show this help message"
|
|
@echo ""
|
|
@echo "Prerequisites:"
|
|
@echo " - GTK+ 3.0 development libraries"
|
|
@echo " - BACnet Stack library"
|
|
@echo ""
|
|
@echo "Example usage:"
|
|
@echo " make all BACDL=bip # Build with BACnet/IP datalink"
|
|
@echo " make debug BACDL=mstp # Build debug version with MS/TP"
|
|
|
|
.PHONY: all clean install debug help check-gtk depend include
|
|
include: .depend
|