mirror of https://github.com/arendst/Tasmota.git
127 lines
3.9 KiB
Makefile
127 lines
3.9 KiB
Makefile
|
#############################################################################
|
||
|
#
|
||
|
# Makefile for librf24
|
||
|
#
|
||
|
# License: GPL (General Public License)
|
||
|
# Author: Charles-Henri Hallard
|
||
|
# Date: 2013/03/13
|
||
|
#
|
||
|
# Description:
|
||
|
# ------------
|
||
|
# use make all and make install to install the library
|
||
|
#
|
||
|
|
||
|
CONFIG_FILE=Makefile.inc
|
||
|
REMOTE_ERROR="[ERROR] Remote machine not configured. Run configure with respective arguments."
|
||
|
|
||
|
include $(CONFIG_FILE)
|
||
|
|
||
|
# Objects to compile
|
||
|
OBJECTS=RF24.o
|
||
|
ifeq ($(DRIVER), MRAA)
|
||
|
OBJECTS+=spi.o gpio.o compatibility.o
|
||
|
else ifeq ($(DRIVER), RPi)
|
||
|
OBJECTS+=spi.o bcm2835.o interrupt.o
|
||
|
else ifeq ($(DRIVER), SPIDEV)
|
||
|
OBJECTS+=spi.o gpio.o compatibility.o interrupt.o
|
||
|
else ifeq ($(DRIVER), wiringPi)
|
||
|
OBJECTS+=spi.o
|
||
|
endif
|
||
|
|
||
|
# make all
|
||
|
# reinstall the library after each recompilation
|
||
|
all: $(LIBNAME)
|
||
|
|
||
|
# Make the library
|
||
|
$(LIBNAME): $(OBJECTS)
|
||
|
@echo "[Linking]"
|
||
|
$(CC) $(SHARED_LINKER_FLAGS) $(CFLAGS) -o $(LIBNAME) $^ $(SHARED_LINKER_LIBS)
|
||
|
|
||
|
# Library parts
|
||
|
RF24.o: RF24.cpp
|
||
|
$(CXX) -fPIC $(CFLAGS) -c $^
|
||
|
|
||
|
bcm2835.o: $(DRIVER_DIR)/bcm2835.c
|
||
|
$(CC) -fPIC $(CFLAGS) -c $^
|
||
|
|
||
|
spi.o: $(DRIVER_DIR)/spi.cpp
|
||
|
$(CXX) -fPIC $(CFLAGS) -c $^
|
||
|
|
||
|
compatibility.o: $(DRIVER_DIR)/compatibility.c
|
||
|
$(CC) -fPIC $(CFLAGS) -c $(DRIVER_DIR)/compatibility.c
|
||
|
|
||
|
gpio.o: $(DRIVER_DIR)/gpio.cpp
|
||
|
$(CXX) -fPIC $(CFLAGS) -c $(DRIVER_DIR)/gpio.cpp
|
||
|
|
||
|
interrupt.o: $(DRIVER_DIR)/interrupt.c
|
||
|
$(CXX) -fPIC $(CFLAGS) -c $(DRIVER_DIR)/interrupt.c
|
||
|
|
||
|
# clear configuration files
|
||
|
cleanconfig:
|
||
|
@echo "[Cleaning configuration]"
|
||
|
rm -rf $(CONFIG_FILE) utility/includes.h
|
||
|
|
||
|
# clear build files
|
||
|
clean:
|
||
|
@echo "[Cleaning]"
|
||
|
rm -rf *.o $(LIBNAME)
|
||
|
|
||
|
$(CONFIG_FILE):
|
||
|
@echo "[Running configure]"
|
||
|
@./configure --no-clean
|
||
|
|
||
|
install: all install-libs install-headers
|
||
|
upload: all upload-libs upload-headers
|
||
|
|
||
|
# Install the library to LIBPATH
|
||
|
install-libs:
|
||
|
@echo "[Installing Libs to $(LIB_DIR)]"
|
||
|
@if ( test ! -d $(LIB_DIR) ); then mkdir -p $(LIB_DIR); fi
|
||
|
@install -m 0755 $(LIBNAME) $(LIB_DIR)
|
||
|
@orig=$(LIBNAME) && \
|
||
|
for sl in $(LIBSYMLINKS); do \
|
||
|
ln -sf $(LIB_DIR)/$${orig} $(LIB_DIR)/$${sl}; \
|
||
|
orig=$${sl}; \
|
||
|
done && \
|
||
|
if [ "$(LIBDEPRECATE)" ]; then ln -sf $(LIB_DIR)/$${orig} $(LIB_DIR)/$(LIBDEPRECATE); fi
|
||
|
ifneq ($(LDCONFIG),)
|
||
|
@$(LDCONFIG)
|
||
|
endif
|
||
|
|
||
|
upload-libs:
|
||
|
@echo "[Uploading Libs to $(REMOTE):$(REMOTE_LIB_DIR)]"
|
||
|
ifeq ($(REMOTE),)
|
||
|
@echo "$(REMOTE_ERROR)"
|
||
|
@exit 1
|
||
|
endif
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "mkdir -p $(REMOTE_LIB_DIR)"
|
||
|
@scp -q -P $(REMOTE_PORT) $(LIBNAME) $(REMOTE):/tmp
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "sudo install -m 0755 /tmp/$(LIBNAME) $(REMOTE_LIB_DIR) &&" \
|
||
|
" orig=$(LIBNAME) && for sl in $(LIBSYMLINKS); do sudo ln -sf $(REMOTE_LIB_DIR)/\$${orig} $(REMOTE_LIB_DIR)/\$${sl}; orig=\$${sl}; done &&" \
|
||
|
" if [ "$(LIBDEPRECATE)" ]; then sudo ln -sf $(REMOTE_LIB_DIR)/\$${orig} $(REMOTE_LIB_DIR)/$(LIBDEPRECATE); fi &&" \
|
||
|
" rm /tmp/$(LIBNAME)"
|
||
|
ifneq ($(REMOTE_LDCONFIG),)
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "sudo $(REMOTE_LDCONFIG)"
|
||
|
endif
|
||
|
|
||
|
install-headers:
|
||
|
@echo "[Installing Headers to $(HEADER_DIR)]"
|
||
|
@mkdir -p $(HEADER_DIR)/$(DRIVER_DIR)
|
||
|
@install -m 0644 *.h $(HEADER_DIR)
|
||
|
@install -m 0644 $(DRIVER_DIR)/*.h $(HEADER_DIR)/$(DRIVER_DIR)
|
||
|
@install -m 0644 $(ARCH_DIR)/*.h $(HEADER_DIR)/$(ARCH_DIR)
|
||
|
|
||
|
upload-headers:
|
||
|
@echo "[Uploading Headers to $(REMOTE):$(REMOTE_HEADER_DIR)]"
|
||
|
ifeq ($(REMOTE),)
|
||
|
@echo "$(REMOTE_ERROR)"
|
||
|
@exit 1
|
||
|
endif
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "sudo mkdir -p $(REMOTE_HEADER_DIR)/$(DRIVER_DIR)"
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "mkdir -p /tmp/RF24 && rm -rf /tmp/RF24/*"
|
||
|
@rsync -a --include="*.h" --include="*/" --exclude="*" -e "ssh -p $(REMOTE_PORT)" . $(REMOTE):/tmp/RF24
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "sudo install -m 0644 /tmp/RF24/*.h $(REMOTE_HEADER_DIR)"
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "sudo install -m 0644 /tmp/RF24/$(DRIVER_DIR)/*.h $(REMOTE_HEADER_DIR)/$(DRIVER_DIR)"
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "sudo install -m 0644 /tmp/RF24/$(ARCH_DIR)/*.h $(REMOTE_HEADER_DIR)/$(ARCH_DIR)"
|
||
|
@ssh -q -t -p $(REMOTE_PORT) $(REMOTE) "rm -rf /tmp/RF24"
|