From c236ffee2091aafe8c18a68de7265ba65ffef37b Mon Sep 17 00:00:00 2001 From: htom Date: Tue, 30 Dec 2025 14:45:12 +0100 Subject: [PATCH] updated makefile with debug and release configuration --- Makefile | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 3f60ab4..ad1e8a4 100644 --- a/Makefile +++ b/Makefile @@ -3,31 +3,50 @@ SRCDIR = src BUILDDIR = build VENDORDIR = vendor -target = linux +target ?= linux +profile ?= debug ifeq ($(target), windows) CC = x86_64-w64-mingw32-gcc EXT = .exe - - CFLAGS = -Wall -o2 -I$(SRCDIR) -I$(VENDORDIR)/mariadb/include -I$(VENDORDIR)/duckdb/windows/include + + OPT_FLAGS = -O2 -DNDEBUG + + INCLUDES = -I$(SRCDIR) -I$(VENDORDIR)/mariadb/include -I$(VENDORDIR)/duckdb/windows/include LIBS = -L$(VENDORDIR)/mariadb/lib -llibmariadb -L$(VENDORDIR)/duckdb/windows/lib -lduckdb + + # Command to copy DLL after build + POST_BUILD_CMD = @cp $(VENDORDIR)/duckdb/windows/lib/duckdb.dll $(BUILDDIR) + else CC = gcc EXT = - CFLAGS = -Wall -O2 -I$(SRCDIR) `pkg-config --cflags libmariadb` -I$(VENDORDIR)/duckdb/linux/include + + INCLUDES = -I$(SRCDIR) `pkg-config --cflags libmariadb` -I$(VENDORDIR)/duckdb/linux/include LIBS = `pkg-config --libs libmariadb` -L$(VENDORDIR)/duckdb/linux/lib -lduckdb + POST_BUILD_CMD = @echo "Build complete." + + # Profile Logic + ifeq ($(profile), release) + OPT_FLAGS = -O3 -DNDEBUG -march=native + else + OPT_FLAGS = -O0 -g -DDEBUG -Wall -Wextra + endif endif +# Combine Flags +CFLAGS = -Wall $(OPT_FLAGS) $(INCLUDES) + SRC = $(shell find $(SRCDIR) -name "*.c") OBJ = $(SRC:$(SRCDIR)/%.c=$(BUILDDIR)/%.o) all: $(BUILDDIR)/$(APPNAME)$(EXT) $(BUILDDIR)/$(APPNAME)$(EXT): $(OBJ) - @echo "Linking $@" + @echo "Linking $@ (Target: $(target), Profile: $(profile))" @mkdir -p $(dir $@) $(CC) $(OBJ) -o $@ $(LIBS) - @cp vendor/duckdb/windows/lib/duckdb.dll $(BUILDDIR) + $(POST_BUILD_CMD) $(BUILDDIR)/%.o: $(SRCDIR)/%.c @echo "Compiling $<"