forked from slaff/Sming-jerryscript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent.mk
176 lines (138 loc) · 4.94 KB
/
component.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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# JerryScript
COMPONENT_SUBMODULES := jerryscript
JERRYSCRIPT_ROOT := $(COMPONENT_PATH)/jerryscript
JERRYSCRIPT_SRCDIRS := $(call ListAllSubDirs,$(JERRYSCRIPT_ROOT)/jerry-core)
COMPONENT_SRCDIRS := \
src \
$(JERRYSCRIPT_SRCDIRS)
COMPONENT_INCDIRS := \
src/include \
$(JERRYSCRIPT_ROOT)
EXTRA_INCDIR := \
$(JERRYSCRIPT_ROOT)/jerry-core \
$(JERRYSCRIPT_SRCDIRS)
COMPONENT_DOCFILES := jerryscript/docs/img/engines_high_level_design.png
COMPONENT_DOXYGEN_INPUT := src/include
# The size of the JerryScript engine heap. The size in kilobytes is allocated once and defined at compile time.
COMPONENT_VARS := JERRY_GLOBAL_HEAP_SIZE
JERRY_GLOBAL_HEAP_SIZE ?= 1
# Compact (minimal profile) compilation profile makes the JerryScript library smaller
COMPONENT_VARS += JERRY_COMPACT_PROFILE
JERRY_COMPACT_PROFILE ?= 1
ifeq ($(JERRY_COMPACT_PROFILE),1)
JERRY_PROFILE := minimal
# Apply these flags to library and tool(s)
JERRY_COMPILER_FLAGS := \
JERRY_BUILTINS=0 \
JERRY_ESNEXT=0 \
JERRY_UNICODE_CASE_CONVERSION=0
else
JERRY_PROFILE := es.next
GLOBAL_CFLAGS += -DJERRY_ESNEXT=1
endif
JERRY_WEB_COMPILER := $(COMPONENT_PATH)/jsc/$(JERRY_PROFILE)
COMPONENT_CFLAGS += \
-Wformat=0 \
-DJERRY_LCACHE=0 \
-DJERRY_SNAPSHOT_EXEC=1 \
$(addprefix -D,$(JERRY_COMPILER_FLAGS))
COMPONENT_CPPFLAGS += \
-DJERRY_GLOBAL_HEAP_SIZE=$(JERRY_GLOBAL_HEAP_SIZE)
#
COMPONENT_VARS += JERRY_ENABLE_DEBUG
JERRY_ENABLE_DEBUG ?= 0
ifeq ($(JERRY_ENABLE_DEBUG),1)
COMPONENT_CFLAGS += -DJERRY_LOGGING=1
GLOBAL_CFLAGS += -DJERRY_ENABLE_DEBUG=1
else
COMPONENT_CFLAGS += -DJERRY_NDEBUG=1
endif
#
COMPONENT_RELINK_VARS += JERRY_MEM_STATS
JERRY_MEM_STATS ?= 1
COMPONENT_CFLAGS += -DJERRY_MEM_STATS=$(JERRY_MEM_STATS)
#
COMPONENT_RELINK_VARS += JERRY_ERROR_MESSAGES
JERRY_ERROR_MESSAGES ?= 0
COMPONENT_CFLAGS += -DJERRY_ERROR_MESSAGES=$(JERRY_ERROR_MESSAGES)
#
COMPONENT_RELINK_VARS += JERRY_PARSER
JERRY_PARSER ?= 0
COMPONENT_CFLAGS += -DJERRY_PARSER=$(JERRY_PARSER)
#
COMPONENT_VARS += JERRY_EXTERNAL_CONTEXT
JERRY_EXTERNAL_CONTEXT ?= 0
ifeq ($(JERRY_EXTERNAL_CONTEXT),1)
GLOBAL_CFLAGS += -DJERRY_EXTERNAL_CONTEXT=1
endif
# Build version of tool compatible with library
DEBUG_VARS += JERRY_SNAPSHOT_TOOL
JERRY_BUILD_DIR := $(COMPONENT_PATH)/jerryscript/out/$(call CalculateVariantHash,JERRY_COMPILER_FLAGS)
JERRY_SNAPSHOT_TOOL := $(JERRY_BUILD_DIR)/bin/jerry-snapshot$(TOOL_EXT)
ifeq ($(UNAME),Windows)
JERRY_CMAKE_PARAMS := \
--cmake-param "-GMSYS Makefiles" \
--compile-flag "-I $(JERRYSCRIPT_ROOT)/../src/include" \
--compile-flag "-Wno-error=unused-parameter " \
--compile-flag "-D_POSIX_C_SOURCE=1 -U__STRICT_ANSI__"
endif
$(JERRY_SNAPSHOT_TOOL):
$(Q) CC= $(PYTHON) $(JERRYSCRIPT_ROOT)/tools/build.py \
--lto OFF \
--jerry-cmdline-snapshot ON \
--builddir "$(JERRY_BUILD_DIR)" \
--error-messages ON \
$(JERRY_CMAKE_PARAMS) \
$(patsubst %,--compile-flag "-D %",$(JERRY_COMPILER_FLAGS))
jerryscript-clean: jerry-tools-clean
.PHONY: jerry-tools-clean
jerry-tools-clean:
$(Q) rm -rf $(abspath $(JERRY_BUILD_DIR)/..)
# Support for building .snap files from .js source
DEBUG_VARS += APP_JS_SOURCE_DIR APP_JS_SNAP_DIR
ifdef APP_JS_SOURCE_DIR
APP_JS_SNAP_DIR ?= out/jerryscript
APP_JS_SOURCE_FILES := $(notdir $(wildcard $(APP_JS_SOURCE_DIR)/*.js))
APP_JS_SNAP_FILES := $(patsubst %,$(APP_JS_SNAP_DIR)/%.snap,$(APP_JS_SOURCE_FILES))
COMPONENT_PREREQUISITES := $(APP_JS_SNAP_FILES)
$(APP_JS_SNAP_FILES): $(JERRY_SNAPSHOT_TOOL) $(addprefix $(APP_JS_SOURCE_DIR)/,$(APP_JS_SOURCE_FILES)) | $(APP_JS_SNAP_DIR)
$(Q) $(JERRY_SNAPSHOT_TOOL) generate $(APP_JS_SOURCE_DIR)/$(@F:.snap=) -o $@
$(Q) $(APP_JS_SNAP_UPDATED)
$(APP_JS_SNAP_DIR):
$(Q) mkdir -p $@
clean: snap-clean
snap-clean:
$(Q) rm -rf $(APP_JS_SNAP_DIR)
endif
# We want maps for some jerryscript types to allow strong type aliases and printability
# Generate these by parsing jerryscript headers
JERRY_TYPES_H := $(COMPONENT_PATH)/src/include/Jerryscript/.typemaps.h
ifeq ($(UNAME),Darwin)
SED ?= gsed
else
SED ?= sed
endif
# Generate MAP #define for a jerryscript C enumeration
# $1 -> e.g. JERRY_FUNCTION_TYPE_
# $2 -> source file
# $3 -> optional name for map
define JerryGetTypes
$(Q) printf "#define $(if $3,$3_,$1)MAP(XX)" >> $@
$(Q) $(foreach v,\
$(shell $(AWK) -F " |,|=" '/$1/ { sub(/^ +$1/,""); print $$1 }' $(JERRYSCRIPT_ROOT)/jerry-core/include/jerryscript-$2.h),\
printf " \\\\\n\tXX($1$v, %s)" $$( echo "$v" | $(SED) -E 's/(.*)/\L\1/; s/(^|_)([a-z0-9])/\U\2/g' ) >> $@; )
$(Q) printf "\n\n" >> $@
endef
COMPONENT_PREREQUISITES += $(JERRY_TYPES_H)
$(JERRY_TYPES_H):
$(Q) printf "//\n// Automatically generated: DO NOT EDIT\n//\n\n" > $@
$(call JerryGetTypes,JERRY_TYPE_,types,JERRY_VALUE_TYPE)
$(call JerryGetTypes,JERRY_ERROR_,types,JERRY_ERROR_TYPE)
$(call JerryGetTypes,ERR_,port,JERRY_FATAL_CODE)
$(call JerryGetTypes,JERRY_OBJECT_TYPE_,types)
$(call JerryGetTypes,JERRY_FUNCTION_TYPE_,types)
$(call JerryGetTypes,JERRY_FEATURE_,types)
jerryscript-clean: jerry-clean-types
.PHONY: jerry-clean-types
jerry-clean-types:
$(Q) rm -f $(JERRY_TYPES_H)