]> rtime.felk.cvut.cz Git - coffee/mt-apps.git/blobdiff - Makefile
Autodetect RFID support and allow compiling without it
[coffee/mt-apps.git] / Makefile
index ee73c394c79b7f867f78aeb63ecf11bb2ba81132..6cad9192f275f9ee14d52be9bff78ee94279e78f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,41 @@
-SOURCE_FILES = mt_rfid.c
-OUTPUT_FILE = mt-rfid
-LIBRARIES = -lev -luFCoder-armhf
+OUTPUT_DIR    = build
 
-all: $(SOURCE_FILES)
-       $(CC) $(CFLAGS) -o $(OUTPUT_FILE) $(SOURCE_FILES) $(LIBRARIES)
+CFLAGS       = -Ilibwebsockets/include -Llibwebsockets/lib
+can_compile   = $(shell set -x; if echo '$(1)' | $(CC) $(CFLAGS) -c -xc - -o /dev/null >/dev/null 2>&1; then echo yes; fi)
+HAVE_RFID    := $(call can_compile,\#include <uFCoder.h>)
+
+ifeq ($(HAVE_RFID),yes)
+all: mtrfid
+else
+$(warning Compiling without RFID support)
+endif
+
+mtrfid_SRCS   = signal_exit.c mt_rfid.c
+mtrfid_LIBS   = -lev -luFCoder-armhf
+
+mtserver_SRCS = signal_exit.c mt_server.c
+mtserver_LIBS = -lev -lwebsockets
+
+mtkeys_SRCS   = signal_exit.c mt_keys.c
+mtkeys_LIBS   = -lev
+
+mtaio_SRCS    = signal_exit.c mt_keys.c mt_server.c mt_aio.c
+mtaio_LIBS    = -lev -lwebsockets
+mtaio_DEFS    = -DNO_MAIN -DHAVE_RFID=$(if $(HAVE_RFID),1,0)
+
+ifeq ($(HAVE_RFID),yes)
+mtaio_SRCS += mt_rfid.c
+mtaio_LIBS += -luFCoder-armhf
+endif
+
+all: mtserver mtkeys mtaio
 
 .PHONY: clean
 
 clean:
-       rm -f $(OUTPUT_FILE)
+       rm -rf $(OUTPUT_DIR)
+
+.SECONDEXPANSION:
+mt%: $$($$@_SRCS)
+       mkdir -p $(OUTPUT_DIR)
+       $(CC) $(CFLAGS) $($@_DEFS) -o $(OUTPUT_DIR)/$@ $^ $($@_LIBS)