-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
60 lines (49 loc) · 1.22 KB
/
Makefile
File metadata and controls
60 lines (49 loc) · 1.22 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
CC = clang
CFLAGS = -m64 -std=c11 -Iturbospork/include
DEBUG_CFLAGS = -DDEBUG -g -O0 -fsanitize=address
RELEASE_CFLAGS = -DNDEBUG -O2
CFLAGS += -Wall -Wextra -pedantic -Wconversion
config ?= debug
ifeq ($(config), debug)
CFLAGS += $(DEBUG_CFLAGS)
else
CFLAGS += $(RELEASE_CFLAGS)
endif
# OS-Specific Stuff
LFLAGS =
BIN_DIR =
MKDIR_BIN =
RM_BIN =
BIN_EXT =
LIB_EXT =
AR =
TS_LINK_COMMAND =
ifeq ($(OS), Windows_NT)
BIN_DIR = bin\$(config)
LFLAGS += -lkernel32 -lBcrypt
MKDIR_BIN = if not exist $(BIN_DIR) mkdir $(BIN_DIR)
RM_BIN = rmdir /s /q bin
BIN_EXT = .exe
LIB_EXT = .lib
AR = llvm-ar
TS_LINK_COMMAND = -l$(BIN_DIR)/turbospork
else
BIN_DIR = bin/$(config)
LFLAGS += -lm
MKDIR_BIN = mkdir -p $(BIN_DIR)
RM_BIN = rm -r bin
LIB_EXT = .a
AR = ar
TS_LINK_COMMAND = -L$(BIN_DIR) -l:turbospork$(LIB_EXT)
endif
all: turbospork example
turbospork:
@$(MKDIR_BIN)
$(CC) -c turbospork/src/turbospork.c -Iturbospork/src $(CFLAGS) $(LFLAGS) -o $(BIN_DIR)/turbospork.o
$(AR) -rcs $(BIN_DIR)/turbospork$(LIB_EXT) $(BIN_DIR)/turbospork.o
example:
@$(MKDIR_BIN)
$(CC) example/main.c -Iexample $(CFLAGS) $(LFLAGS) $(TS_LINK_COMMAND) -o$(BIN_DIR)/example$(BIN_EXT)
clean:
$(RM_BIN)
.PHONY: all turbospork example clean