updated makefile with debug and release configuration
This commit is contained in:
31
Makefile
31
Makefile
@@ -3,31 +3,50 @@ SRCDIR = src
|
|||||||
BUILDDIR = build
|
BUILDDIR = build
|
||||||
VENDORDIR = vendor
|
VENDORDIR = vendor
|
||||||
|
|
||||||
target = linux
|
target ?= linux
|
||||||
|
profile ?= debug
|
||||||
|
|
||||||
ifeq ($(target), windows)
|
ifeq ($(target), windows)
|
||||||
CC = x86_64-w64-mingw32-gcc
|
CC = x86_64-w64-mingw32-gcc
|
||||||
EXT = .exe
|
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
|
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
|
else
|
||||||
CC = gcc
|
CC = gcc
|
||||||
EXT =
|
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
|
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
|
endif
|
||||||
|
|
||||||
|
# Combine Flags
|
||||||
|
CFLAGS = -Wall $(OPT_FLAGS) $(INCLUDES)
|
||||||
|
|
||||||
SRC = $(shell find $(SRCDIR) -name "*.c")
|
SRC = $(shell find $(SRCDIR) -name "*.c")
|
||||||
OBJ = $(SRC:$(SRCDIR)/%.c=$(BUILDDIR)/%.o)
|
OBJ = $(SRC:$(SRCDIR)/%.c=$(BUILDDIR)/%.o)
|
||||||
|
|
||||||
all: $(BUILDDIR)/$(APPNAME)$(EXT)
|
all: $(BUILDDIR)/$(APPNAME)$(EXT)
|
||||||
|
|
||||||
$(BUILDDIR)/$(APPNAME)$(EXT): $(OBJ)
|
$(BUILDDIR)/$(APPNAME)$(EXT): $(OBJ)
|
||||||
@echo "Linking $@"
|
@echo "Linking $@ (Target: $(target), Profile: $(profile))"
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CC) $(OBJ) -o $@ $(LIBS)
|
$(CC) $(OBJ) -o $@ $(LIBS)
|
||||||
@cp vendor/duckdb/windows/lib/duckdb.dll $(BUILDDIR)
|
$(POST_BUILD_CMD)
|
||||||
|
|
||||||
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
|
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
|
||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
|
|||||||
Reference in New Issue
Block a user