CC       = gcc
CXX      = g++
CFLAGS   = -Wall -std=c99
CXXFLAGS = -Wall -std=c++11

src = $(wildcard *.cpp) $(wildcard *.c)
all = $(basename $(src))

all: ${all}

.SUFFIXES:

${all}: %: %.o
	${CXX} -o $@ $<

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

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

clean:
	-rm -f *.o ${all}
