first commit, initial layout and some ideas I want to implement, included my linked list impl
This commit is contained in:
7
make/config.mk
Normal file
7
make/config.mk
Normal file
@@ -0,0 +1,7 @@
|
||||
# Project identity
|
||||
PROJ := nickel
|
||||
BUILD_DIR := build
|
||||
INC_DIRS := include
|
||||
|
||||
# Default build mode: release | debug | asan | ubsan
|
||||
MODE ?= debug
|
||||
48
make/rules.mk
Normal file
48
make/rules.mk
Normal file
@@ -0,0 +1,48 @@
|
||||
LIB := $(BUILD_DIR)/lib/libnickel.a
|
||||
BIN_DIR := $(BUILD_DIR)/bin
|
||||
OBJ_DIR := $(BUILD_DIR)/obj
|
||||
|
||||
NICKEL_SRCS := $(wildcard src/nickel/*.c)
|
||||
NICKEL_OBJS := $(patsubst src/%.c,$(OBJ_DIR)/%.o,$(NICKEL_SRCS))
|
||||
|
||||
TEST_SRCS := $(wildcard tests/*.c)
|
||||
TEST_BIN := $(BIN_DIR)/tests
|
||||
|
||||
TOOL_BINS := \
|
||||
#$(BIN_DIR)/logscan \
|
||||
#$(BIN_DIR)/dedupe
|
||||
|
||||
.PHONY: all clean test tools examples
|
||||
|
||||
all: $(LIB) tools $(TEST_BIN)
|
||||
|
||||
$(LIB): $(NICKEL_OBJS)
|
||||
@mkdir -p $(dir $@)
|
||||
$(AR) rcs $@ $^
|
||||
$(RANLIB) $@
|
||||
|
||||
$(OBJ_DIR)/%.o: src/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# Tests link against libnickel.a
|
||||
$(TEST_BIN): $(TEST_SRCS) $(LIB)
|
||||
@mkdir -p $(BIN_DIR)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TEST_SRCS) $(LIB) $(LDLIBS)
|
||||
|
||||
# Tools (one main.c each; expand as needed)
|
||||
#$(BIN_DIR)/logscan: tools/logscan/main.c $(LIB)
|
||||
# @mkdir -p $(BIN_DIR)
|
||||
# $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIB) $(LDLIBS)
|
||||
|
||||
#$(BIN_DIR)/dedupe: tools/dedupe/main.c $(LIB)
|
||||
# @mkdir -p $(BIN_DIR)
|
||||
# $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIB) $(LDLIBS)
|
||||
|
||||
test: $(TEST_BIN)
|
||||
$(TEST_BIN)
|
||||
|
||||
tools: $(TOOL_BINS)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
31
make/toolchain.mk
Normal file
31
make/toolchain.mk
Normal file
@@ -0,0 +1,31 @@
|
||||
CC ?= cc
|
||||
AR ?= ar
|
||||
RANLIB ?= ranlib
|
||||
|
||||
CSTD := -std=c11
|
||||
WARN := -Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wstrict-prototypes -Wmissing-prototypes
|
||||
DEFS := -D_POSIX_C_SOURCE=200809L
|
||||
|
||||
INCS := $(addprefix -I,$(INC_DIRS))
|
||||
|
||||
CFLAGS_COMMON := $(CSTD) $(WARN) $(DEFS) $(INCS)
|
||||
LDFLAGS_COMMON :=
|
||||
LDLIBS_COMMON :=
|
||||
|
||||
ifeq ($(MODE),release)
|
||||
CFLAGS_MODE := -O2 -DNDEBUG
|
||||
else ifeq ($(MODE),debug)
|
||||
CFLAGS_MODE := -O0 -g3
|
||||
else ifeq ($(MODE),asan)
|
||||
CFLAGS_MODE := -O1 -g3 -fsanitize=address -fno-omit-frame-pointer
|
||||
LDFLAGS_MODE := -fsanitize=address
|
||||
else ifeq ($(MODE),ubsan)
|
||||
CFLAGS_MODE := -O1 -g3 -fsanitize=undefined -fno-omit-frame-pointer
|
||||
LDFLAGS_MODE := -fsanitize=undefined
|
||||
else
|
||||
$(error Unknown MODE=$(MODE))
|
||||
endif
|
||||
|
||||
CFLAGS := $(CFLAGS_COMMON) $(CFLAGS_MODE)
|
||||
LDFLAGS := $(LDFLAGS_COMMON) $(LDFLAGS_MODE)
|
||||
LDLIBS := $(LDLIBS_COMMON)
|
||||
Reference in New Issue
Block a user