include config.mk ifeq ($(OS),Windows_NT) SHELL := cmd.exe MODULE_EXT = .dll MKDIR = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1)) RMDIR = if exist $(subst /,\,$(1)) rd /s /q $(subst /,\,$(1)) else MODULE_EXT = .so MKDIR = mkdir -p $(1) RMDIR = rm -rf $(1) endif CC = cc CFLAGS_BASE = -Wall -Wpedantic -I$(INC_DIR) -fPIC .PHONY: all debug release clean all: debug debug: $(BIN_DIR)/debug/$(MODULE_NAME)$(MODULE_EXT) release: $(BIN_DIR)/release/$(MODULE_NAME)$(MODULE_EXT) $(BIN_DIR)/debug/$(MODULE_NAME)$(MODULE_EXT): $(SRCS:src/%.c=obj/debug/%.o) @$(call MKDIR,$(@D)) $(CC) -shared -o $@ $^ obj/debug/%.o: src/%.c @$(call MKDIR,$(@D)) $(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@ $(BIN_DIR)/release/$(MODULE_NAME)$(MODULE_EXT): $(SRCS:src/%.c=obj/release/%.o) @$(call MKDIR,$(@D)) $(CC) -shared -s -o $@ $^ obj/release/%.o: src/%.c @$(call MKDIR,$(@D)) $(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@ -include $(wildcard obj/debug/*.d) -include $(wildcard obj/release/*.d) clean: @$(call RMDIR,$(OBJ_DIR)) @$(call RMDIR,$(BIN_DIR))