46 lines
1.1 KiB
Makefile
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))
|