|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #############################################################################
- #
- # 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 BCM2837))
- BCM_C_SOURCES=$(wildcard drivers/BCM/*.c)
- BCM_CPP_SOURCES=$(wildcard drivers/BCM/*.cpp)
- GATEWAY_OBJECTS+=$(patsubst %.c,$(BUILDDIR)/%.o,$(BCM_C_SOURCES)) $(patsubst %.cpp,$(BUILDDIR)/%.o,$(BCM_CPP_SOURCES))
-
- INCLUDES+=-I./drivers/BCM
- 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
|