Files
2026-09-29 23:17:45 +02:00

46 lines
1.1 KiB
Makefile

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))