[UNTESTED] Basic queue and fan-in fabric implementation without full template generalization
This commit is contained in:
70
Makefile
Normal file
70
Makefile
Normal file
@@ -0,0 +1,70 @@
|
||||
LIB_NAME ?= weaver
|
||||
BUILD_DIR ?= build
|
||||
SRC_DIR ?= src
|
||||
INCLUDE_DIRS := include src/include
|
||||
|
||||
MODE ?= debug
|
||||
|
||||
RELEASE_OPT ?= 2
|
||||
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)
|
||||
|
||||
INCLUDES := $(addprefix -I,$(INCLUDE_DIRS))
|
||||
|
||||
WARN_FLAGS := \
|
||||
-Wall \
|
||||
-Wextra \
|
||||
-Wpedantic \
|
||||
-Werror
|
||||
|
||||
COMMON_CXXFLAGS := \
|
||||
-std=c++20 \
|
||||
-MMD -MP \
|
||||
-flto \
|
||||
--param=destructive-interference-size=$(CLINE_SIZE) \
|
||||
$(WARN_FLAGS) \
|
||||
$(INCLUDES)
|
||||
|
||||
DEBUG_CXXFLAGS := \
|
||||
-O0 \
|
||||
-g \
|
||||
-fsanitize=thread \
|
||||
-fno-omit-frame-pointer
|
||||
|
||||
RELEASE_CXXFLAGS := \
|
||||
-O$(RELEASE_OPT) \
|
||||
-DNDEBUG
|
||||
|
||||
ifeq ($(MODE),debug)
|
||||
CXXFLAGS := $(COMMON_CXXFLAGS) $(DEBUG_CXXFLAGS)
|
||||
else ifeq ($(MODE),release)
|
||||
CXXFLAGS := $(COMMON_CXXFLAGS) $(RELEASE_CXXFLAGS)
|
||||
else
|
||||
$(error Unknown MODE '$(MODE)'; use MODE=debug or MODE=release)
|
||||
endif
|
||||
|
||||
LIB := $(BUILD_DIR)/lib$(LIB_NAME).a
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(LIB)
|
||||
|
||||
$(LIB): $(OBJS)
|
||||
@mkdir -p $(dir $@/bin)
|
||||
$(AR) $(ARFLAGS) $@/bin $^
|
||||
|
||||
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cc
|
||||
@mkdir -p $(dir $@)
|
||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
-include $(DEPS)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
Reference in New Issue
Block a user