summaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'makefile')
-rw-r--r--makefile22
1 files changed, 18 insertions, 4 deletions
diff --git a/makefile b/makefile
index 00c2408..aee39a2 100644
--- a/makefile
+++ b/makefile
@@ -2,7 +2,9 @@
.DEFAULT_GOAL := all
# ====== Configurations and Binaries ====== #
+CC := clang
CXX := clang++
+CMAKE := cmake
RM := rm -f
PRINTF := printf
@@ -11,14 +13,21 @@ CCXX_FLAGS := \
-Wall -Wextra -Werror -pedantic \
-MMD -MP -I$(SRC_DIR)
-CXX_FLAGS := -std=c++14 -nostdlib++ \
+CXX_FLAGS := -std=c++14 \
$(CCXX_FLAGS) -fno-rtti -fno-exceptions
-LD_FLAGS := -lc
+LD_FLAGS := -lc -nostdlib++
+
+MI_FLAGS := -G"Unix Makefiles" -DCMAKE_C_COMPILER=$(CC) \
+ -DMI_BUILD_TESTS=OFF -DMI_BUILD_STATIC=OFF -DMI_BUILD_SHARED=OFF -DMI_BUILD_OBJECT=ON \
+ -DMI_OVERRIDE=ON -DMI_NO_USE_CXX=ON -DMI_DEBUG=0
# ====== Sources ====== #
TOP_DIR := .
SRC_DIR := $(TOP_DIR)/src
+MI_DIR := $(TOP_DIR)/mimalloc
+
+MI_O := $(MI_DIR)/mimalloc.o
VOIDC_CXX := $(SRC_DIR)/voidc.cc
VOIDC_O := $(VOIDC_CXX:.cc=.o)
@@ -29,9 +38,13 @@ VOIDC := $(TOP_DIR)/voidc
.PHONY: all
all: $(VOIDC)
-$(VOIDC): $(VOIDC_O)
+$(MI_O): $(MI_DIR)
+ $(CMAKE) $(MI_FLAGS) -S $(MI_DIR) -B $(MI_DIR)
+ $(MAKE) -C $(MI_DIR)
+
+$(VOIDC): $(VOIDC_O) $(MI_O)
$(PRINTF) " CXXLD %s\n" $<
- $(CXX) $< -o $@ $(LD_FLAGS)
+ $(CXX) $^ -o $@ $(LD_FLAGS)
%.o: %.cc
$(PRINTF) " CXX %s\n" $<
@@ -39,6 +52,7 @@ $(VOIDC): $(VOIDC_O)
.PHONY: clean
clean:
+ $(MAKE) -C $(MI_DIR) clean
$(RM) $(VOIDC_O) $(VOIDC_D) $(VOIDC)
-include $(VOIDC_D)