-SOURCE_FILES = mt_rfid.c
-OUTPUT_FILE = mt-rfid
+OUTPUT_DIR = build
-ifeq ($(OS),Windows_NT)
- CC = gcc
- CFLAGS += -Wall -O3 -DPORT_NAME="\"\""
- UFR_LIB = -L. -luFCoder-x86_64
+CFLAGS = -Ilibwebsockets/include -Llibwebsockets/lib
+can_compile = $(shell 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
- UFR_LIB = -luFCoder-armhf
+$(warning Compiling without RFID support)
+endif
+
+mtrfid_SRCS = signal_exit.c mt_rfid.c
+mtrfid_LIBS = -lev -luFCoder-armhf
+mtrfid_DEFS = -DHAVE_RFID=1
+
+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 mt_blank.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: $(SOURCE_FILES)
- $(CC) $(CFLAGS) -o $(OUTPUT_FILE) $(SOURCE_FILES) $(UFR_LIB)
+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)