aboutsummaryrefslogtreecommitdiff
path: root/Makefile.linux
blob: b1a3248f10e212192e7d4cb3c48537e02ce25c4b (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
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
ifndef ZJS_BASE
$(error ZJS_BASE not defined)
endif

JERRY_BASE ?= $(ZJS_BASE)/deps/jerryscript
OCF_ROOT ?= deps/iotivity-constrained

.PHONY: all
all: linux

include Makefile.ocf_linux

CORE_SRC +=	src/zjs_buffer.c \
		src/zjs_callbacks.c \
		src/zjs_console.c \
		src/zjs_event.c \
		src/zjs_linux_ring_buffer.c \
		src/zjs_linux_time.c \
		src/zjs_modules.c \
		src/zjs_performance.c \
		src/zjs_ocf_common.c \
		src/zjs_ocf_client.c \
		src/zjs_ocf_server.c \
		src/zjs_promise.c \
		src/zjs_script.c \
		src/zjs_script_gen.c \
		src/zjs_timers.c \
		src/zjs_unit_tests.c \
		src/zjs_util.c

CORE_OBJ =	$(CORE_SRC:%.c=%.o)

LINUX_INCLUDES += 	-Isrc/ \
			-I$(JERRY_BASE)/jerry-core \
			-I$(OCF_ROOT)/deps/tinydtls \
			-I$(OCF_ROOT) \
			-I$(OCF_ROOT)/port/linux \
			-I$(OCF_ROOT)/include \
			-include $(OCF_ROOT)/port/linux/config.h

JERRY_LIBS += 		-l jerry-core -lm

JERRY_LIB_PATH += 	-L $(JERRY_BASE)/build/lib/

LINUX_LIBS += $(JERRY_LIBS) -pthread

LINUX_DEFINES +=	-DZJS_LINUX_BUILD \
			-DOC_CLIENT \
			-DOC_SERVER \
			-DBUILD_MODULE_OCF \
			-DBUILD_MODULE_EVENTS \
			-DBUILD_MODULE_PERFORMANCE \
			-DBUILD_MODULE_CONSOLE

LINUX_FLAGS += 	-fno-asynchronous-unwind-tables \
		-fno-omit-frame-pointer \
		-Wno-format-zero-length \
		-Wno-main \
		-ffreestanding \
		-Os \
		-fno-stack-protector \
		-ffunction-sections \
		-fdata-sections \
		-Wno-unused-but-set-variable \
		-fno-reorder-functions \
		-fno-defer-pop \
		-Wno-pointer-sign \
		-fno-strict-overflow \
		-Werror=implicit-int \
		-Wall \
		-Werror \
		-std=gnu99 \
		-flto \
		-Wpointer-sign

ifeq ($(VARIANT), debug)
LINUX_DEFINES += -DDEBUG_BUILD
LINUX_FLAGS += -g
DEBUG=1
else
DEBUG=0
endif

ifeq ($(CB_STATS), on)
LINUX_DEFINES += -DZJS_PRINT_CALLBACK_STATS
endif

ifeq ($(V), 1)
VERBOSE=-v
endif

%.o:%.c
	@echo "Building $@"
	gcc -c -o $@ $< $(LINUX_INCLUDES) $(LINUX_DEFINES) $(LINUX_FLAGS)

.PHONY: linux
linux: $(CORE_OBJ)
	@echo "Building for Linux $(CORE_OBJ)"
	cd deps/jerryscript; python ./tools/build.py $(VERBOSE);
	gcc $(LINUX_INCLUDES) $(JERRY_LIB_PATH) -static -o jslinux src/main.c $(CORE_OBJ) $(LINUX_FLAGS) $(CFLAGS) $(LINUX_DEFINES) $(LINUX_LIBS)

.PHONY: clean
clean:
	rm -f $(CORE_OBJ)