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 := 005 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_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) @printf '[ld] *.o -> %s\n' "$(NAME)" @$(LD) -o $(NAME) $(OBJ) $(LDFLAGS) %.o: %.cpp @printf '[c++] %-10s -> %s\n' "$<" "$@" @$(CCXX) $(CXXFLAGS) -c -o $@ $< %.win.o: %.cpp @printf '[c++] %-10s -> %s\n' "$<" "$@" @$(CCXX) $(CXXFLAGS) -c -o $@ $< %.o: %.c @printf '[cc] %-10s -> %s\n' "$<" "$@" @$(CC) $(CFLAGS) -c -o $@ $< %.win.o: %.c @printf '[cc] %-10s -> %s\n' "$<" "$@" @$(CC) $(CFLAGS) -c -o $@ $< clean: @printf '[rm]\n' @rm -rf $(NAME) $(OBJ) $(WINOBJ) $(DEP) run: $(NAME) @printf '[run]\n' @./$(NAME) re: @printf '[re]\n' @make --no-print-directory clean @make --no-print-directory .PHONY: all clean run re -include $(DEP)