mirror of
https://github.com/seahu/rflink.git
synced 2025-12-10 16:07:23 +01:00
first commit
This commit is contained in:
156
RPi_rflink/Makefile
Normal file
156
RPi_rflink/Makefile
Normal file
@@ -0,0 +1,156 @@
|
||||
|
||||
|
||||
# Defines the RPI variable which is needed by rc-switch/RCSwitch.h
|
||||
CXXFLAGS=-DRPI
|
||||
|
||||
# configuration file for plugins placed into directory ../../Config/
|
||||
CONFIG_PLUGINS="Config_02.c"
|
||||
|
||||
#all: send codesend RFSniffer
|
||||
all: | prepare
|
||||
|
||||
# prepare (generate) files for plagins and filess need for compile
|
||||
prepare: | createDirPlugins ./Plugins/Make_Generated_list_plugin.txt ./Plugins/Make_Generated_all_h.h ./Plugins/Make_Generated_all_RX.h ./Plugins/Make_Generated_all_TX.h
|
||||
$(MAKE) RFlink
|
||||
|
||||
# variable object conatin project files for compilation with .o (make use default macros for create .o from .c or .cpp)
|
||||
objects = ./Base.o ./RawSignal.o ./server.o ./Plug.o ./Misc.o ./arduino/EmulateArduino.o
|
||||
#objects =
|
||||
|
||||
# NOTICE main diference between = and :=
|
||||
#---------------------------------------
|
||||
# name_variable = $(shell cmd) # this will be actualize every time vhen $(name_variable) is call
|
||||
# name_variable := $(shell cmd) # this will be set only one when start make
|
||||
|
||||
# example howto generate variable form files in directory and coincided rename items of variable to .o
|
||||
#allowed_plagins = $(patsubst %.h,%.o,$(wildcard ./Plugins/Plugin_*.h))
|
||||
|
||||
# examle howto generate variable from shell (only one command may be used not sequence )
|
||||
allowed_plagins = $(shell cat ./Plugins/Make_Generated_list_plugin.txt )
|
||||
|
||||
RFlink: $(objects) $(allowed_plagins)
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) $+ -o $@ -lwiringPi -lpthread
|
||||
|
||||
clean:
|
||||
$(RM) ./RFlink ./*.o ./*.gch ./arduino/*.o ./arduino/*.gch ./Plugins/* ; rmdir ./Plugins
|
||||
|
||||
|
||||
#---------------------------------------------- install/uninstall-------------------------------------------------------------------------
|
||||
# must be run as sudo (sudo make install)
|
||||
install: ./RFlink
|
||||
if ! [ -d "/opt/rflink" ] ; then mkdir "/opt/rflink"; fi ;
|
||||
if ! [ -f "/opt/rflink/RFlink" ] ; then cp "./RFlink" "/opt/rflink/" ; fi ;
|
||||
if ! [ -f "/etc/rflink.conf" ] ; then cp "./etc/rflink.conf" "/etc/" ; fi ;
|
||||
if ! [ -f "/etc/init.d/rflink.sh" ] ; then cp "./etc/init.d/rflink.sh" "/etc/init.d/" ; fi
|
||||
|
||||
# must be run as sudo (sudo make uninstall)
|
||||
uninstall:
|
||||
if [ -f "/etc/init.d/rflink.sh" ] ; then rm "/etc/init.d/rflink.sh" ; fi
|
||||
if [ -f "/etc/rflink.conf" ] ; then rm "/etc/rflink.conf" ; fi ;
|
||||
if [ -f "/opt/rflink/RFlink" ] ; then rm "/opt/rflink/RFlink" ; fi ;
|
||||
if [ -d "/opt/rflink" ] ; then rmdir "/opt/rflink"; fi ;
|
||||
|
||||
# enable autostart RFlink service after start system
|
||||
autostart_on: /opt/rflink/RFlink
|
||||
update-rc.d rflink.sh enable
|
||||
/etc/init.d/rflink.sh start
|
||||
|
||||
# disable auto start RFlink service after start system
|
||||
autostart_off: /opt/rflink/RFlink
|
||||
/etc/init.d/rflink.sh stop
|
||||
update-rc.d rflink.sh disable
|
||||
|
||||
#---------------------------------------------- GENERATE FILES -------------------------------------------------------------------------
|
||||
|
||||
#create dir with pugins if not exist
|
||||
createDirPlugins:
|
||||
if ! [ -d ./Plugins ] ; then mkdir "./Plugins"; fi ;
|
||||
|
||||
# generate not only list of allowed plugins but also .cpp, .h files for allowed plagins
|
||||
# file "Make_Generated_list_plugin.txt" contain name of allowed plafin with .o used later for generate variable with list files for compile
|
||||
# .cpp and .h contain nessesery files for compile plugins
|
||||
./Plugins/Make_Generated_list_plugin.txt:
|
||||
cd ./Plugins; \
|
||||
for i in `ls ../../Plugins/Plugin_*.c`;do \
|
||||
n=$${i#*_}; \
|
||||
n=$${n%.*}; \
|
||||
if grep -q "^#define PLUGIN_$$n" "../../Config/$(CONFIG_PLUGINS)"; then \
|
||||
echo -n "./Plugins/Plugin_$$n.o " >> ./Make_Generated_list_plugin.txt; \
|
||||
\
|
||||
echo "//This file is generated by GNU make, do not edit." >> ./Plugin_$$n.cpp; \
|
||||
echo "#include \"Plugin_$$n.h\"" >> ./Plugin_$$n.cpp; \
|
||||
echo "#ifdef PLUGIN_$$n" >> ./Plugin_$$n.cpp; \
|
||||
echo "#include \"../../Plugins/Plugin_$$n.c\"" >> ./Plugin_$$n.cpp; \
|
||||
echo "#endif" >> ./Plugin_$$n.cpp; \
|
||||
\
|
||||
echo "//This file is generated by GNU make, do not edit." >> ./Plugin_$$n.h; \
|
||||
echo -n "#ifndef _plugin_$$n" >> ./Plugin_$$n.h; \
|
||||
echo "_h" >> ./Plugin_$$n.h; \
|
||||
echo -n " #define _plugin_$$n" >> ./Plugin_$$n.h; \
|
||||
echo "_h" >> ./Plugin_$$n.h; \
|
||||
echo " #include \"../../Config/$(CONFIG_PLUGINS)\"" >> ./Plugin_$$n.h; \
|
||||
echo " #ifdef PLUGIN_$$n" >> ./Plugin_$$n.h; \
|
||||
echo " #include \"../Base.h\"" >> ./Plugin_$$n.h; \
|
||||
echo " //prototype functions" >> ./Plugin_$$n.h; \
|
||||
echo " boolean Plugin_$$n(byte function, char *string);" >> ./Plugin_$$n.h; \
|
||||
if grep -q "^#define PLUGIN_TX_$$n" "../../Config/$(CONFIG_PLUGINS)"; then \
|
||||
echo " boolean PluginTX_$$n(byte function, char *string);" >> ./Plugin_$$n.h; \
|
||||
fi; \
|
||||
echo " #endif" >> ./Plugin_$$n.h; \
|
||||
echo "#endif" >> ./Plugin_$$n.h; \
|
||||
fi; \
|
||||
done;
|
||||
|
||||
# Generate Make_Generated_all_h.h file contain include directives for all plugins:
|
||||
# #include "./Plugins/Plugin_001.h"
|
||||
# #include "./Plugins/Plugin_002.h"
|
||||
# ...
|
||||
# ..
|
||||
./Plugins/Make_Generated_all_h.h:
|
||||
echo "//This file is generated by GNU make, do not edit.\n//This generated file is used in ../Plug.h ." >> ./Plugins/Make_Generated_all_h.h; \
|
||||
cd ./Plugins; \
|
||||
for i in `ls ./Plugin_*.h`;do \
|
||||
echo "#include \"$$i\"" >> ./Make_Generated_all_h.h; \
|
||||
done;
|
||||
|
||||
|
||||
# Generate Make_Generated_all_RX.h file contain block C++ code init RX function plugins.
|
||||
# Only for enable plugin in ..\Config\Config_02.c. Example:
|
||||
# Plugin_id[x]=1;Plugin_ptr[x++]=&Plugin_001;
|
||||
# Plugin_id[x]=2;Plugin_ptr[x++]=&Plugin_002;
|
||||
# ...
|
||||
# ..
|
||||
./Plugins/Make_Generated_all_RX.h:
|
||||
cd ./Plugins; \
|
||||
echo "//This file is generated by GNU make, do not edit." >> ./Make_Generated_all_RX.h; \
|
||||
echo "//This generated file is used in ../Plug.h ." >> ./Make_Generated_all_RX.h; \
|
||||
x=1; \
|
||||
for i in `ls Plugin_*.h`;do \
|
||||
n=$${i#*_}; \
|
||||
n=$${n%.*}; \
|
||||
if grep -q "^#define PLUGIN_$$n" "../../Config/$(CONFIG_PLUGINS)"; then \
|
||||
echo "Plugin_id[x]=$$x;Plugin_ptr[x++]=&Plugin_$$n;" >> ./Make_Generated_all_RX.h; \
|
||||
x=$$(($$x+1)); \
|
||||
fi; \
|
||||
done;
|
||||
|
||||
# Generate Make_Generated_all_TX.h file contain block C++ code init TX function plugins.
|
||||
# Only for enable plugin in ..\Config\Config_02.c. Example:
|
||||
# PluginTX_id[x]=1;PluginTX_ptr[x++]=&Plugin_001;
|
||||
# PluginTX_id[x]=2;PluginTX_ptr[x++]=&Plugin_002;
|
||||
# ...
|
||||
# ..
|
||||
./Plugins/Make_Generated_all_TX.h:
|
||||
cd ./Plugins; \
|
||||
echo "//This file is generated by GNU make, do not edit." >> ./Make_Generated_all_TX.h; \
|
||||
echo "//This generated file is used in ../Plug.h ." >> ./Make_Generated_all_TX.h; \
|
||||
x=1; \
|
||||
for i in `ls Plugin_*.h`;do \
|
||||
n=$${i#*_}; \
|
||||
n=$${n%.*}; \
|
||||
if grep -q "^#define PLUGIN_TX_$$n" "../../Config/$(CONFIG_PLUGINS)"; then \
|
||||
echo "PluginTX_id[x]=$$x;PluginTX_ptr[x++]=&PluginTX_$$n;" >> ./Make_Generated_all_TX.h; \
|
||||
x=$$(($$x+1)); \
|
||||
fi; \
|
||||
done;
|
||||
|
||||
Reference in New Issue
Block a user