043fea6092
- Install headers to /include/stk/ instead of /include/ - Update README examples to use #include <stk/stk.h> - Update Windows install instructions to reflect stk/ directory structure - Add MPL-2.0 license badge to README - Clarify DLL can be placed in binary or lib directory on Windows This prevents header name collisions with other libraries and follows standard library distribution conventions (similar to SDL). Users now include stk headers as <stk/stk.h> rather than <stk.h>.
82 lines
2.1 KiB
Makefile
82 lines
2.1 KiB
Makefile
include config.mk
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
SHELL := cmd.exe
|
|
FULL_LIB := $(LIB_NAME).dll
|
|
LDFLAGS_PLAT :=
|
|
CFLAGS_PLAT :=
|
|
MKDIR = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1))
|
|
RMDIR = if exist $(subst /,\,$(1)) rd /s /q $(subst /,\,$(1))
|
|
else
|
|
FULL_LIB := lib$(LIB_NAME).so
|
|
LDFLAGS_PLAT := -ldl
|
|
CFLAGS_PLAT := -fPIC
|
|
MKDIR = mkdir -p $(1)
|
|
RMDIR = rm -rf $(1)
|
|
endif
|
|
|
|
RELEASE_LDFLAGS := -s
|
|
CFLAGS_BASE := -Wall -Wpedantic -I$(INC_DIR) -std=c89 $(CFLAGS_PLAT)
|
|
|
|
PREFIX ?= /usr/local
|
|
LIBDIR ?= $(PREFIX)/lib
|
|
INCDIR ?= $(PREFIX)/include
|
|
|
|
.PHONY: all debug release clean test install uninstall
|
|
|
|
all: debug
|
|
|
|
debug: $(BIN_DIR)/debug/$(FULL_LIB)
|
|
release: $(BIN_DIR)/release/$(FULL_LIB)
|
|
|
|
# Debug Rules
|
|
$(BIN_DIR)/debug/$(FULL_LIB): $(SRCS:src/%.c=obj/debug/%.o)
|
|
@$(call MKDIR,$(@D))
|
|
$(CC) -shared -o $@ $^ $(LDFLAGS_PLAT)
|
|
|
|
obj/debug/%.o: src/%.c
|
|
@$(call MKDIR,$(@D))
|
|
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
|
|
|
# Release Rules
|
|
$(BIN_DIR)/release/$(FULL_LIB): $(SRCS:src/%.c=obj/release/%.o)
|
|
@$(call MKDIR,$(@D))
|
|
$(CC) -shared $(RELEASE_LDFLAGS) -o $@ $^ $(LDFLAGS_PLAT)
|
|
|
|
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))
|
|
|
|
test: debug
|
|
@echo "=== Building and running stk tests ==="
|
|
@$(MAKE) -C test -f gmake.mk
|
|
|
|
# Installation (Unix only)
|
|
ifneq ($(OS),Windows_NT)
|
|
install: release
|
|
install -d $(LIBDIR) $(INCDIR)/stk
|
|
install -m 755 $(BIN_DIR)/release/$(FULL_LIB) $(LIBDIR)/
|
|
install -m 644 $(INC_DIR)/stk.h $(INCDIR)/stk/
|
|
install -m 644 $(INC_DIR)/stk_version.h $(INCDIR)/stk/
|
|
install -m 644 $(INC_DIR)/stk_log.h $(INCDIR)/stk/
|
|
|
|
uninstall:
|
|
rm -f $(LIBDIR)/$(FULL_LIB)
|
|
rm -rf $(INCDIR)/stk
|
|
else
|
|
install:
|
|
@echo "make install is not supported on Windows."
|
|
@echo "Copy include/ directory contents to your_project/include/stk/"
|
|
@echo "Copy bin/release/stk.dll to your project's lib directory."
|
|
|
|
uninstall:
|
|
@echo "make uninstall is not supported on Windows."
|
|
endif
|