mirror of
https://github.com/mysensors/MySensors.git
synced 2026-02-20 01:21:27 +01:00
* Bump version to 2.2.0-beta (#713) * OTA: Add incoming FW block check (#718) * Linux: Add support for SPIDEV (#734) RPi and Linux refactor. Add GPIO Sysfs for GPIO operations. Update configure script. Fix some cppcheck warnings. Add serial emulation that prints to stdout. Fix some file headers. * Fix getControllerConfig() (#737) * Rename MyHwATmega328 to MyHwAVR (#738) * AVR: Restrict fast pin function use (#739) * Fix signing presentation bug (#740) * Consolidate open PRs for bugfix release (#741) * Revert "Bump version to 2.2.0-beta" (#744) * Merge Master into Dev (#745) * Fix spi flash error when compiling in Arduino IDE 1.6.6 * Bump minor version * Fixed "invalid suffix on literal" warning * Fix addressing bug in _doSign bitfield * Make sure nodes not supporting signing informs GW A node that does not support signing, still needs to inform the gateway about this to make sure the gateway carries a valid signing requirement table when a node Id that was requiering signing stops doing this. This fixes #286. * Prevent SecureActuator from accepting ACKs as commands As ACKs are not currently signed, allowing ACKs as commands is a considerable security hole for this sketch. This is now resolved. * Backport of bugfix (#259) in repeaters when forwarding signed messages * Bumped version to 1.5.2 * Corrected doSign variable name (was _doSign) * Bumped version to 1.5.3 * Add NULL termination to payloads Messages addressed to "this" node, will have a null char appended to the payload after message verification is done, because some "getters" assume the message being a string. * MySensors 2.1.1 release
171 lines
5.8 KiB
Makefile
171 lines
5.8 KiB
Makefile
#############################################################################
|
|
#
|
|
# Makefile for MySensors
|
|
#
|
|
#
|
|
# The arduino library build part were inspired by
|
|
# Arduino-Makefile project, Copyright (C) 2012 Sudar <http://sudarmuthu.com>
|
|
#
|
|
# Description:
|
|
# ------------
|
|
# use make all and make install to install the gateway
|
|
#
|
|
|
|
CONFIG_FILE=Makefile.inc
|
|
|
|
include $(CONFIG_FILE)
|
|
|
|
CPPFLAGS+=-Ofast -g -Wall -Wextra
|
|
DEPFLAGS=-MT $@ -MMD -MP
|
|
|
|
GATEWAY_BIN=mysgw
|
|
GATEWAY=$(BINDIR)/$(GATEWAY_BIN)
|
|
GATEWAY_C_SOURCES=$(wildcard drivers/Linux/*.c)
|
|
GATEWAY_CPP_SOURCES=$(wildcard drivers/Linux/*.cpp) examples_linux/mysgw.cpp
|
|
GATEWAY_OBJECTS=$(patsubst %.c,$(BUILDDIR)/%.o,$(GATEWAY_C_SOURCES)) $(patsubst %.cpp,$(BUILDDIR)/%.o,$(GATEWAY_CPP_SOURCES))
|
|
|
|
INCLUDES=-I. -I./core -I./drivers/Linux
|
|
|
|
ifeq ($(SOC),$(filter $(SOC),BCM2835 BCM2836))
|
|
RPI_C_SOURCES=$(wildcard drivers/RPi/*.c)
|
|
RPI_CPP_SOURCES=$(wildcard drivers/RPi/*.cpp)
|
|
GATEWAY_OBJECTS+=$(patsubst %.c,$(BUILDDIR)/%.o,$(RPI_C_SOURCES)) $(patsubst %.cpp,$(BUILDDIR)/%.o,$(RPI_CPP_SOURCES))
|
|
|
|
INCLUDES+=-I./drivers/RPi
|
|
endif
|
|
|
|
ifeq ($(SPI_DRIVER), BCM)
|
|
SPI_DRIVER_C_SOURCES=$(wildcard drivers/BCM/*.c)
|
|
SPI_DRIVER_CPP_SOURCES=$(wildcard drivers/BCM/*.cpp)
|
|
GATEWAY_OBJECTS+=$(patsubst %.c,$(BUILDDIR)/%.o,$(SPI_DRIVER_C_SOURCES)) $(patsubst %.cpp,$(BUILDDIR)/%.o,$(SPI_DRIVER_CPP_SOURCES))
|
|
|
|
INCLUDES+=-I./drivers/BCM
|
|
endif
|
|
|
|
ifeq ($(SPI_DRIVER), SPIDEV)
|
|
SPI_DRIVER_C_SOURCES=$(wildcard drivers/SPIDEV/*.c)
|
|
SPI_DRIVER_CPP_SOURCES=$(wildcard drivers/SPIDEV/*.cpp)
|
|
GATEWAY_OBJECTS+=$(patsubst %.c,$(BUILDDIR)/%.o,$(SPI_DRIVER_C_SOURCES)) $(patsubst %.cpp,$(BUILDDIR)/%.o,$(SPI_DRIVER_CPP_SOURCES))
|
|
|
|
INCLUDES+=-I./drivers/SPIDEV
|
|
endif
|
|
|
|
# Gets include flags for library
|
|
get_library_includes = $(if $(and $(wildcard $(1)/src), $(wildcard $(1)/library.properties)), \
|
|
-I$(1)/src, \
|
|
$(addprefix -I,$(1) $(wildcard $(1)/utility)))
|
|
|
|
# Gets all sources with given extension (param2) for library (path = param1)
|
|
# for old (1.0.x) layout looks in . and "utility" directories
|
|
# for new (1.5.x) layout looks in src and recursively its subdirectories
|
|
get_library_files = $(if $(and $(wildcard $(1)/src), $(wildcard $(1)/library.properties)), \
|
|
$(call rwildcard,$(1)/src/,*.$(2)), \
|
|
$(wildcard $(1)/*.$(2) $(1)/utility/*.$(2)))
|
|
|
|
ifdef ARDUINO_LIB_DIR
|
|
ARDUINO=arduino
|
|
ARDUINO_LIBS:=$(shell find $(ARDUINO_LIB_DIR) -mindepth 1 -maxdepth 1 -type d)
|
|
ARDUINO_INCLUDES:=$(foreach lib, $(ARDUINO_LIBS), $(call get_library_includes,$(lib)))
|
|
ARDUINO_LIB_CPP_SRCS:=$(foreach lib, $(ARDUINO_LIBS), $(call get_library_files,$(lib),cpp))
|
|
ARDUINO_LIB_C_SRCS:=$(foreach lib, $(ARDUINO_LIBS), $(call get_library_files,$(lib),c))
|
|
ARDUINO_LIB_AS_SRCS:=$(foreach lib, $(ARDUINO_LIBS), $(call get_library_files,$(lib),S))
|
|
ARDUINO_LIB_OBJS=$(patsubst $(ARDUINO_LIB_DIR)/%.cpp,$(BUILDDIR)/arduinolibs/%.cpp.o,$(ARDUINO_LIB_CPP_SRCS)) \
|
|
$(patsubst $(ARDUINO_LIB_DIR)/%.c,$(BUILDDIR)/arduinolibs/%.c.o,$(ARDUINO_LIB_C_SRCS)) \
|
|
$(patsubst $(ARDUINO_LIB_DIR)/%.S,$(BUILDDIR)/arduinolibs/%.S.o,$(ARDUINO_LIB_AS_SRCS))
|
|
|
|
INCLUDES+=$(ARDUINO_INCLUDES)
|
|
DEPS+=$(ARDUINO_LIB_OBJS:.o=.d)
|
|
endif
|
|
|
|
DEPS+=$(GATEWAY_OBJECTS:.o=.d)
|
|
|
|
.PHONY: all createdir cleanconfig clean install uninstall
|
|
|
|
all: createdir $(ARDUINO) $(GATEWAY)
|
|
|
|
createdir:
|
|
@mkdir -p $(BUILDDIR) $(BINDIR)
|
|
|
|
# Arduino libraries Build
|
|
$(ARDUINO): CPPFLAGS+=-DARDUINO=100
|
|
$(ARDUINO): $(ARDUINO_LIB_OBJS)
|
|
@printf "[Done building Arduino Libraries]\n"
|
|
|
|
# Gateway Build
|
|
$(GATEWAY): $(GATEWAY_OBJECTS) $(ARDUINO_LIB_OBJS)
|
|
$(CXX) $(LDFLAGS) -o $@ $(GATEWAY_OBJECTS) $(ARDUINO_LIB_OBJS)
|
|
|
|
# Include all .d files
|
|
-include $(DEPS)
|
|
|
|
$(BUILDDIR)/arduinolibs/%.cpp.o: $(ARDUINO_LIB_DIR)/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CXX) $(DEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
$(BUILDDIR)/arduinolibs/%.c.o: $(ARDUINO_LIB_DIR)/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(DEPFLAGS) $(CPPFLAGS) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
$(BUILDDIR)/arduinolibs/%.S.o: $(ARDUINO_LIB_DIR)/%.S
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(DEPFLAGS) $(CPPFLAGS) $(ASFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
$(BUILDDIR)/%.o: %.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CXX) $(DEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
$(BUILDDIR)/%.o: %.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(DEPFLAGS) $(CPPFLAGS) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
|
|
|
# clear configuration files
|
|
cleanconfig:
|
|
@echo "[Cleaning configuration]"
|
|
rm -rf $(CONFIG_FILE)
|
|
|
|
# clear build files
|
|
clean:
|
|
@echo "[Cleaning]"
|
|
rm -rf $(BUILDDIR) $(BINDIR)
|
|
|
|
$(CONFIG_FILE):
|
|
@echo "[Running configure]"
|
|
@./configure --no-clean
|
|
|
|
install: all install-gateway install-initscripts
|
|
|
|
install-gateway:
|
|
@echo "Installing $(GATEWAY) to ${DESTDIR}$(GATEWAY_DIR)"
|
|
@install -m 0755 $(GATEWAY) ${DESTDIR}$(GATEWAY_DIR)
|
|
|
|
install-initscripts:
|
|
ifeq ($(INIT_SYSTEM), systemd)
|
|
install -m0644 initscripts/mysgw.systemd ${DESTDIR}/etc/systemd/system/mysgw.service
|
|
@sed -i -e "s|%gateway_dir%|${GATEWAY_DIR}|g" ${DESTDIR}/etc/systemd/system/mysgw.service
|
|
systemctl daemon-reload
|
|
@echo "MySensors gateway has been installed, to add to the boot run:"
|
|
@echo " sudo systemctl enable mysgw.service"
|
|
@echo "To start the gateway run:"
|
|
@echo " sudo systemctl start mysgw.service"
|
|
else ifeq ($(INIT_SYSTEM), sysvinit)
|
|
install -m0755 initscripts/mysgw.sysvinit ${DESTDIR}/etc/init.d/mysgw
|
|
@sed -i -e "s|%gateway_dir%|${GATEWAY_DIR}|g" ${DESTDIR}/etc/init.d/mysgw
|
|
@echo "MySensors gateway has been installed, to add to the boot run:"
|
|
@echo " sudo update-rc.d mysgw defaults"
|
|
@echo "To start the gateway run:"
|
|
@echo " sudo service mysgw start"
|
|
endif
|
|
|
|
uninstall:
|
|
ifeq ($(INIT_SYSTEM), systemd)
|
|
@echo "Stopping daemon mysgw (ignore errors)"
|
|
-@systemctl stop mysgw.service
|
|
@echo "removing files"
|
|
rm /etc/systemd/system/mysgw.service $(GATEWAY_DIR)/$(GATEWAY_BIN)
|
|
else ifeq ($(INIT_SYSTEM), sysvinit)
|
|
@echo "Stopping daemon mysgw (ignore errors)"
|
|
-@service mysgw stop
|
|
@echo "removing files"
|
|
rm /etc/init.d/mysgw $(GATEWAY_DIR)/$(GATEWAY_BIN)
|
|
endif
|