[UNTESTED] moved library into a single header, added basic SPSC test

This commit is contained in:
2026-01-02 07:14:27 -05:00
parent 0a73580a80
commit ffd5ce5b12
9 changed files with 457 additions and 635 deletions

View File

@@ -1,22 +1,23 @@
LIB_NAME ?= weaver
BUILD_DIR ?= build
SRC_DIR ?= src
INCLUDE_DIRS := include src/include
DEPS_DIR ?= $(BUILD_DIR)/deps
TEST_DIR ?= tests
INCLUDE_DIR := include
MODE ?= debug
RELEASE_OPT ?= 2
RELEASE_OPT ?= 3
CLINE_SIZE ?= 64
CXX ?= clang++
AR ?= ar
ARFLAGS := rcs
SRCS := $(shell find $(SRC_DIR) -name '*.cc')
OBJS := $(patsubst $(SRC_DIR)/%.cc,$(BUILD_DIR)/%.o,$(SRCS))
DEPS := $(OBJS:.o=.d)
TESTS := $(shell find $(TEST_DIR) -name '*.cc')
INCLUDES := $(addprefix -I,$(INCLUDE_DIRS))
TEST_BINS := $(patsubst $(TEST_DIR)/%.cc,$(BUILD_DIR)/tests/%,$(TESTS))
TEST_DEPS := $(patsubst $(TEST_DIR)/%.cc,$(DEPS_DIR)/tests/%.d,$(TESTS))
INCLUDES := $(addprefix -I,$(INCLUDE_DIR))
WARN_FLAGS := \
-Wall \
@@ -26,7 +27,6 @@ WARN_FLAGS := \
COMMON_CXXFLAGS := \
-std=c++20 \
-MMD -MP \
-flto \
--param=destructive-interference-size=$(CLINE_SIZE) \
$(WARN_FLAGS) \
@@ -50,21 +50,17 @@ else
$(error Unknown MODE '$(MODE)'; use MODE=debug or MODE=release)
endif
LIB := $(BUILD_DIR)/lib$(LIB_NAME).a
.PHONY: all clean tests
.PHONY: all clean
all: tests
tests: $(TEST_BINS)
all: $(LIB)
$(LIB): $(OBJS)
@mkdir -p $(dir $@/bin)
$(AR) $(ARFLAGS) $@/bin $^
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cc
$(BUILD_DIR)/tests/%: $(TEST_DIR)/%.cc
@mkdir -p $(dir $@)
$(CXX) $(CXXFLAGS) -c $< -o $@
-include $(DEPS)
@mkdir -p $(DEPS_DIR)/tests/$(dir $*)
$(CXX) $(CXXFLAGS) -MMD -MP -MF $(DEPS_DIR)/tests/$*.d $< -o $@
clean:
rm -rf $(BUILD_DIR)
-include $(TEST_DEPS)