-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions.mk
110 lines (93 loc) · 2.28 KB
/
options.mk
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
BUILD=build
BUILD_DIRECTORY=$(ROOT_PROJECT_DIRECTORY)$(BUILD)/
BIN_DIRECTORY=$(BUILD_DIRECTORY)bin/
OBJ_DIRECTORY=$(BUILD_DIRECTORY)obj/
LIB_DIRECTORY=$(BUILD_DIRECTORY)lib/
# erase automatic vars
.SUFFIXES:
OS=$(shell uname)
ifeq ($(OS),Linux)
CC=/usr/bin/clang
LD:=$(CC)
YACC=/usr/bin/bison
LEX=/usr/bin/flex
AR=/usr/bin/ar
RANLIB=/usr/bin/ranlib
else ifeq ($(OS),Darwin)
CC=/usr/local/opt/llvm/bin/clang
LD:=$(CC)
YACC=/usr/local/opt/bison/bin/bison
LEX=/usr/local/opt/flex/bin/flex
AR=/usr/local/opt/llvm/bin/llvm-ar
RANLIB=/usr/local/opt/llvm/bin/llvm-ranlib
else
$(error Unsupported build on $(OS))
endif
AS=nasm
WASM=0
ifeq ($(WASM), 1)
CC=emcc
LD:=$(CC)
AR=${EMSDK}/upstream/bin/llvm-ar
RANLIB=${EMSDK}/upstream/bin/llvm-ranlib
endif
VERBOSE=0
ifeq ($(VERBOSE),0)
AT=@
else
AT=
endif
define strip_root
$$(shell sed s%$(ROOT_PROJECT_DIRECTORY)%% <<< $1)
endef
define _generate_verbose_call
override $1_0=@printf "%s %s\n" $1 $(call strip_root,$$@); $($1)
override $1_1=$($1)
override $1=$$($1_$(VERBOSE))
endef
define generate_verbose_call
$(eval $(call _generate_verbose_call,$1))
endef
map = $(foreach a,$(2),$(call $(1),$(a)))
$(call map,generate_verbose_call,CC LD YACC LEX AR RANLIB)
override CFLAGS+= -DOS_SPECIFIC=$(OS) -Wno-comment
ifeq ($(DEBUG),1)
override CFLAGS+= -DDEBUG=1 -g -O0
override LDFLAGS+= -g
override CFLAGS+= -DROOT_PROJECT_DIRECTORY="\"$(ROOT_PROJECT_DIRECTORY)\""
else
override CFLAGS+= -O3
endif
override CFLAGS+= -Wall -Wextra
override CFLAGS+= -std=c11
override CFLAGS+= -D_XOPEN_SOURCE=700
override CFLAGS+= -ffast-math
override ASFLAGS+=
override LDFLAGS+=
override LDFLAGS_FINAL+=
override INCLUDE+=
override YFLAGS+= -Wall
override LFLAGS+=
ifeq ($(WASM),1)
override CFLAGS+= -DWASM=1
else
override CFLAGS+= -mpopcnt -masm=intel
endif
# -L/usr/local/opt/zlib/lib
# -I/usr/local/opt/zlib/include
#only enable these for non wasm
ifeq ($(WASM),0)
ifeq ($(OS),Darwin)
override LDFLAGS+= -L/usr/local/opt/llvm/lib -L/usr/local/lib -lpopt -lz
override LDFLAGS_FINAL+= -Wl,-rpath,/usr/local/opt/llvm/lib
override INCLUDE+= -I/usr/local/opt/llvm/include -I/usr/local/include
else ifeq ($(OS),Linux)
override LDFLAGS+= -lpopt -lz -lm
override INCLUDE+= -I/usr/include
endif
endif
THREADED=0
ifeq ($(THREADED),1)
override CFLAGS+= -DTHREADED=1 -fopenmp
override LDLIBS+= -lomp
endif