From fe650743b91a3aceafb22fab8b598ac5b4567bb8 Mon Sep 17 00:00:00 2001 From: anth64 Date: Sun, 11 Jan 2026 12:50:35 +0100 Subject: [PATCH] 'simplify' make file to work across gmake and bmake --- Makefile | 123 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 70 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index 33fb1c9..587b67f 100644 --- a/Makefile +++ b/Makefile @@ -1,64 +1,81 @@ -# Directories -SRC_DIR := src -INC_DIR := include -OBJ_DIR := obj -BIN_DIR := bin +SRC_DIR = src +INC_DIR = include +OBJ_DIR = obj +BIN_DIR = bin -# Source files -SRCS := $(wildcard $(SRC_DIR)/*.c) -OBJS_DEBUG := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/debug/%.o,$(SRCS)) -OBJS_RELEASE := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/release/%.o,$(SRCS)) +CC = cc +CFLAGS_DEBUG = -g -O0 -Wall -Wpedantic -I$(INC_DIR) -std=c89 -fPIC +CFLAGS_RELEASE = -O2 -Wall -Wpedantic -I$(INC_DIR) -std=c89 -fPIC +LDFLAGS = -ldl +<<<<<<< HEAD # Compiler and flags CC := cc CFLAGS_DEBUG := -g -O0 -Wall -Wpedantic -I$(INC_DIR) -std=c89 CFLAGS_RELEASE := -O2 -Wall -Wpedantic -I$(INC_DIR) -std=c89 +======= +LIB_NAME = libstk.so +>>>>>>> 9712d47 ('simplify' make file to work across gmake and bmake) -# Platform detection -ifeq ($(OS),Windows_NT) - LIB_NAME := stk.dll - LDFLAGS := - CFLAGS_DEBUG += -D_WIN32 - CFLAGS_RELEASE += -D_WIN32 -else - LIB_NAME := libstk.so - LDFLAGS := -ldl - CFLAGS_DEBUG += -fPIC - CFLAGS_RELEASE += -fPIC -endif +OBJS_DEBUG = \ + $(OBJ_DIR)/debug/module.o \ + $(OBJ_DIR)/debug/platform.o \ + $(OBJ_DIR)/debug/stk.o \ + $(OBJ_DIR)/debug/stk_log.o -# Default build -all: debug - -# Debug / Release builds -debug: $(BIN_DIR)/debug/$(LIB_NAME) -release: $(BIN_DIR)/release/$(LIB_NAME) - -# Build shared library -$(BIN_DIR)/debug/$(LIB_NAME): $(OBJS_DEBUG) - @mkdir -p $(BIN_DIR)/debug - $(CC) -shared -o $@ $^ $(LDFLAGS) - -$(BIN_DIR)/release/$(LIB_NAME): $(OBJS_RELEASE) - @mkdir -p $(BIN_DIR)/release - $(CC) -shared -o $@ $^ $(LDFLAGS) - -# Compile object files with header dependency tracking -$(OBJ_DIR)/debug/%.o: $(SRC_DIR)/%.c - @mkdir -p $(OBJ_DIR)/debug - $(CC) $(CFLAGS_DEBUG) -MMD -MP -c $< -o $@ - -$(OBJ_DIR)/release/%.o: $(SRC_DIR)/%.c - @mkdir -p $(OBJ_DIR)/release - $(CC) $(CFLAGS_RELEASE) -MMD -MP -c $< -o $@ - -# Include generated dependency files --include $(OBJS_DEBUG:.o=.d) --include $(OBJS_RELEASE:.o=.d) - -# Clean -clean: - rm -rf $(OBJ_DIR) $(BIN_DIR) +OBJS_RELEASE = \ + $(OBJ_DIR)/release/module.o \ + $(OBJ_DIR)/release/platform.o \ + $(OBJ_DIR)/release/stk.o \ + $(OBJ_DIR)/release/stk_log.o .PHONY: all debug release clean +all: debug + +debug: $(BIN_DIR)/debug/$(LIB_NAME) + +release: $(BIN_DIR)/release/$(LIB_NAME) + +$(BIN_DIR)/debug/$(LIB_NAME): $(OBJS_DEBUG) + @mkdir -p $(BIN_DIR)/debug + $(CC) -shared -o $@ $(OBJS_DEBUG) $(LDFLAGS) + +$(BIN_DIR)/release/$(LIB_NAME): $(OBJS_RELEASE) + @mkdir -p $(BIN_DIR)/release + $(CC) -shared -o $@ $(OBJS_RELEASE) $(LDFLAGS) + +$(OBJ_DIR)/debug/module.o: $(SRC_DIR)/module.c + @mkdir -p $(OBJ_DIR)/debug + $(CC) $(CFLAGS_DEBUG) -c $(SRC_DIR)/module.c -o $@ + +$(OBJ_DIR)/debug/platform.o: $(SRC_DIR)/platform.c + @mkdir -p $(OBJ_DIR)/debug + $(CC) $(CFLAGS_DEBUG) -c $(SRC_DIR)/platform.c -o $@ + +$(OBJ_DIR)/debug/stk.o: $(SRC_DIR)/stk.c + @mkdir -p $(OBJ_DIR)/debug + $(CC) $(CFLAGS_DEBUG) -c $(SRC_DIR)/stk.c -o $@ + +$(OBJ_DIR)/debug/stk_log.o: $(SRC_DIR)/stk_log.c + @mkdir -p $(OBJ_DIR)/debug + $(CC) $(CFLAGS_DEBUG) -c $(SRC_DIR)/stk_log.c -o $@ + +$(OBJ_DIR)/release/module.o: $(SRC_DIR)/module.c + @mkdir -p $(OBJ_DIR)/release + $(CC) $(CFLAGS_RELEASE) -c $(SRC_DIR)/module.c -o $@ + +$(OBJ_DIR)/release/platform.o: $(SRC_DIR)/platform.c + @mkdir -p $(OBJ_DIR)/release + $(CC) $(CFLAGS_RELEASE) -c $(SRC_DIR)/platform.c -o $@ + +$(OBJ_DIR)/release/stk.o: $(SRC_DIR)/stk.c + @mkdir -p $(OBJ_DIR)/release + $(CC) $(CFLAGS_RELEASE) -c $(SRC_DIR)/stk.c -o $@ + +$(OBJ_DIR)/release/stk_log.o: $(SRC_DIR)/stk_log.c + @mkdir -p $(OBJ_DIR)/release + $(CC) $(CFLAGS_RELEASE) -c $(SRC_DIR)/stk_log.c -o $@ + +clean: + @rm -rf $(OBJ_DIR) $(BIN_DIR)