summaryrefslogtreecommitdiff
path: root/makefile
blob: 00c2408bba7e0f64c2f36a2102e2d1f0e3644c64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.SILENT:
.DEFAULT_GOAL := all

# ====== Configurations and Binaries ====== #
CXX := clang++
RM := rm -f
PRINTF := printf

# ====== Flags ====== #
CCXX_FLAGS := \
	-Wall -Wextra -Werror -pedantic \
	-MMD -MP -I$(SRC_DIR)

CXX_FLAGS := -std=c++14 -nostdlib++ \
	$(CCXX_FLAGS) -fno-rtti -fno-exceptions

LD_FLAGS := -lc

# ====== Sources ====== #
TOP_DIR := .
SRC_DIR := $(TOP_DIR)/src

VOIDC_CXX := $(SRC_DIR)/voidc.cc
VOIDC_O := $(VOIDC_CXX:.cc=.o)
VOIDC_D := $(VOIDC_CXX:.cc=.d)
VOIDC := $(TOP_DIR)/voidc

# ====== Rules ====== #
.PHONY: all
all: $(VOIDC)

$(VOIDC): $(VOIDC_O)
	$(PRINTF) " CXXLD %s\n" $<
	$(CXX) $< -o $@ $(LD_FLAGS) 

%.o: %.cc
	$(PRINTF) " CXX %s\n" $<
	$(CXX) $< -o $@ -c $(CXX_FLAGS)

.PHONY: clean
clean:
	$(RM) $(VOIDC_O) $(VOIDC_D) $(VOIDC)

-include $(VOIDC_D)