CCXX := g++ CC := gcc LD := gcc SDL2-CFG := sdl2-config SRC := $(wildcard *.c) $(wildcard *.cpp) OBJ := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRC))) WINOBJ := $(patsubst %.c,%.win.o,$(patsubst %.cpp,%.win.o,$(SRC))) DEP := $(patsubst %.c,%.d,$(patsubst %.cpp,%.d,$(SRC))) NAME := 004 ifeq ($(TARGET),windows) SDL2-CFG := /usr/x86_64-w64-mingw32/bin/sdl2-config CCXX := x86_64-w64-mingw32-$(CCXX) CC := x86_64-w64-mingw32-$(CC) LD := x86_64-w64-mingw32-$(LD) NAME := $(NAME).exe OBJ := $(WINOBJ) endif LZR_FLAGS := -DLZR_DISABLE_IMAGE -DLZR_DISABLE_GFX -DLZR_DISABLE_MIXER \ -DLZR_DISABLE_DEVMODE CFLAGS := -Wall -Wextra -std=c99 -pedantic -MMD \ -D_POSIX_C_SOURCE=200809L $(LZR_FLAGS) $(shell $(SDL2-CFG) --cflags) CXXFLAGS := -Wall -Wextra -std=c++03 -pedantic -MMD \ -nostdlib -fno-rtti -fno-exceptions \ $(LZR_FLAGS) $(shell $(SDL2-CFG) --cflags) LDFLAGS := -lm $(shell $(SDL2-CFG) --libs) -lSDL2_mixer all: $(NAME) $(NAME): $(OBJ) $(LD) -o $(NAME) $(OBJ) $(LDFLAGS) %.o: %.cpp $(CCXX) $(CXXFLAGS) -c -o $@ $< %.win.o: %.cpp $(CCXX) $(CXXFLAGS) -c -o $@ $< %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< %.win.o: %.c $(CC) $(CFLAGS) -c -o $@ $< clean: rm -rf $(NAME) $(OBJ) $(WINOBJ) $(DEP) run: $(NAME) ./$(NAME) re: make clean make .PHONY: all clean run re -include $(DEP)