BUILD_DIR = ./build

APPLICATIONS = $(BUILD_DIR)/recv_multiple

DEBUG ?= YES
XENO ?= /usr/xenomai
XENOCONFIG=$(shell PATH=$(XENO):$(XENO)/bin:$(PATH) which xeno-config 2>/dev/null)

ifeq ($(XENOCONFIG),)
all::
	@echo ">>> Invoke make like this: \"make XENO=/path/to/xeno-config\" <<<"
	@echo
endif

CC=$(shell $(XENOCONFIG) --cc)
CXX=$(shell $(XENOCONFIG) --cc)
LD=$(shell which ld)
CFLAGS=$(shell $(XENOCONFIG) --posix-cflags) -x c -I/usr/local/rtnet/include -I../common/include -Wall
CXXFLAGS=$(shell $(XENOCONFIG) --posix-cflags) -x c++ -I/usr/local/rtnet/include -I../common/include -Wall
LDFLAGS=$(shell $(XENOCONFIG) --posix-ldflags) -Wall

# This includes the library path of given Xenomai into the binary to make live
# easier for beginners if Xenomai's libs are not in any default search path.
LDFLAGS+=-Xlinker -rpath -Xlinker $(shell $(XENOCONFIG) --libdir) -lstdc++ -lnative

ifneq ($(DEBUG), NO)
	CFLAGS+=-g
	CXXFLAGS+=-g
	LDFLAGS+=-g
else
#-mfpmath=sse
	CFLAGS+=-mtune=native -msse -msse2 -mmmx -mfpmath=sse -malign-double -maccumulate-outgoing-args -minline-all-stringops -O3 -funroll-loops -ftree-loop-linear -freorder-blocks-and-partition -funsafe-loop-optimizations -Wunsafe-loop-optimizations
	CXXFLAGS+=-mtune=native -msse -msse2 -mmmx -mfpmath=sse -malign-double -maccumulate-outgoing-args -minline-all-stringops -O3 -funroll-loops -ftree-loop-linear -freorder-blocks-and-partition -funsafe-loop-optimizations -Wunsafe-loop-optimizations
	LDFLAGS+=-mtune=native -msse -msse2 -mmmx -mfpmath=sse -malign-double --maccumulate-outgoing-args -minline-all-stringops -O3 -funroll-loops -ftree-loop-linear -freorder-blocks-and-partition -funsafe-loop-optimizations -Wunsafe-loop-optimizations
endif

OBJFILES := $(patsubst %.cpp, $(BUILD_DIR)/%.o, $(wildcard *.cpp)) $(patsubst %.c, $(BUILD_DIR)/%.o, $(wildcard *.c))

all:: $(APPLICATIONS)

$(BUILD_DIR)/recv_multiple: $(OBJFILES)
	$(CC) $(LDFLAGS) -o $@ $(OBJFILES)

$(BUILD_DIR)/%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(BUILD_DIR)/%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

clean::
	$(RM) $(APPLICATIONS) $(BUILD_DIR)/*.o

vars::
	@echo "XENO = $(XENO)"
	@echo "XENOCONFIG = $(XENOCONFIG)"
	@echo "CC = $(CC)"
	@echo "LD = $(LD)"
	@echo "CFLAGS = $(CFLAGS)"
	@echo "LDFLAGS = $(LDFLAGS)"
	@echo "OBJSFILES = $(OBJFILES)"

