summaryrefslogtreecommitdiffhomepage
path: root/shared.mk
blob: e2e7300edb63948bdfd536dfc7cb1b6cbd870fb5 (plain) (blame)
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
# Some common Makefile stuff

# Look for wasi-sysroot in some common places, falling back
# to provided WASI_SYSROOT
ifneq ("$(wildcard /usr/wasm32-wasi)", "")
        # Fedora
        WASI_SYSROOT ?= /usr/wasm32-wasi
else ifneq ("$(wildcard /usr/local/share/wasi-sysroot)", "")
        # FreeBSD
        WASI_SYSROOT ?= /usr/local/share/wasi-sysroot
endif

export WASI_SYSROOT

# By default compiler etc output is hidden, use
#   make V=1 ...
# to show it
v = @
ifeq ($V,1)
        v =
endif

# Optionally enable debugging builds with
#   make D=1 ...
# -g is always used, this just changes the optimisation level.
# On GCC this would be -Og, however according to the clang-16(1)
# man page, -O0 'generates the most debuggable code'.
ifeq ($D,1)
        CFLAGS += -O0
else
        CFLAGS += -O2
endif

# Optionally enable Werror with
#   make E=1 ...
ifeq ($E,1)
        CFLAGS += -Werror
endif

# Pretty print compiler etc actions...
PP_CC		= @echo '  CC    '
PP_AR		= @echo '  AR    '
PP_CCLNK	= @echo '  CCLNK '
PP_GEN		= @echo '  GEN   '

CC       = clang
CFLAGS  += -Wall -Wextra -Wdeclaration-after-statement -Wvla \
           -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition \
           -Wimplicit-function-declaration -Wimplicit-int -Wint-conversion \
           -std=gnu11 -g -fno-common -fno-strict-aliasing \
           --target=wasm32-wasi --sysroot=$(WASI_SYSROOT)
LDFLAGS  = -Wl,--no-entry,--export=__heap_base,--export=__data_end,--export=malloc,--export=free,--stack-first,-z,stack-size=$$((8*1024*1024)) \
           -mexec-model=reactor --rtlib=compiler-rt