SRCS=$(wildcard noarch/*.cpp) $(wildcard linux/*.cpp)
TARGET=Blinker
CPP=g++
INCLUDE=-Inoarch -Ilinux
CFLAGS=-Wall -Wextra -g2
LDFLAGS=
LIBS=-lBlinkenLib
SRCS_BASE=$(patsubst %.cpp,%,$(SRCS))
DEPS=$(addsuffix .d,$(SRCS_BASE))
OBJS=$(addsuffix .o,$(SRCS_BASE))
.PHONY: all clean
.SUFFIXES:
.SECONDARY:
all: deps $(TARGET)
ifneq ($(MAKECMDGOALS),clean)
include deps
endif
deps: $(DEPS)
cat /dev/null $+ >$@
%.d: %.cpp Makefile
$(CPP) $(INCLUDE) $(CFLAGS) -M -o $@ $<
sed -i 1s!^!$(dir $<)! $@
%.o: %.cpp Makefile
$(CPP) $(INCLUDE) $(CFLAGS) -c -o $@ $<
$(TARGET): $(OBJS)
$(CPP) $(LDFLAGS) -o $@ $+ $(LIBS)
clean:
rm -f deps $(DEPS) $(OBJS) $(TARGET)