Skip to content

Commit f150e41

Browse files
author
Zsolt Borbély
committed
Add option to enable all-in-one build mode
Related issue: #626 JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély [email protected]
1 parent ecc0132 commit f150e41

File tree

4 files changed

+46
-18
lines changed

4 files changed

+46
-18
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ project (Jerry CXX C ASM)
6262
option(ENABLE_VALGRIND_FREYA "Enable valgrind-freya helpers in memory allocators" OFF)
6363
option(ENABLE_LTO "Enable LTO build" ON)
6464
option(ENABLE_LOG "Enable LOG build" OFF)
65+
option(ENABLE_ALL_IN_ONE "Enable ALL_IN_ONE build" OFF)
6566

6667
if("${PLATFORM}" STREQUAL "LINUX")
6768
set(PLATFORM_EXT "LINUX")

Makefile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@
7676
LOG := OFF
7777
endif
7878

79+
# All-in-one build
80+
ALL_IN_ONE ?= OFF
81+
ifneq ($(ALL_IN_ONE),ON)
82+
ALL_IN_ONE := OFF
83+
endif
84+
7985
# Verbosity
8086
ifdef VERBOSE
8187
Q :=
@@ -141,9 +147,10 @@ export SHELL=/bin/bash
141147
OPTIONS_COMBINATIONS := $(foreach __OPTION,ON OFF,$(__COMBINATION)-VALGRIND-$(__OPTION))
142148
OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-VALGRIND_FREYA-$(__OPTION)))
143149
OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-LTO-$(__OPTION)))
150+
OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-ALL_IN_ONE-$(__OPTION)))
144151

145152
# Building current options string
146-
OPTIONS_STRING := -VALGRIND-$(VALGRIND)-VALGRIND_FREYA-$(VALGRIND_FREYA)-LTO-$(LTO)
153+
OPTIONS_STRING := -VALGRIND-$(VALGRIND)-VALGRIND_FREYA-$(VALGRIND_FREYA)-LTO-$(LTO)-ALL_IN_ONE-$(ALL_IN_ONE)
147154

148155
# Build directories
149156
BUILD_DIR_PREFIX := ./build/obj
@@ -190,6 +197,7 @@ $(BUILD_DIRS_NATIVE):
190197
-DENABLE_VALGRIND_FREYA=$(VALGRIND_FREYA) \
191198
-DENABLE_LOG=$(LOG) \
192199
-DENABLE_LTO=$(LTO) \
200+
-DENABLE_ALL_IN_ONE=$(ALL_IN_ONE) \
193201
-DUSE_COMPILER_DEFAULT_LIBC=$(USE_COMPILER_DEFAULT_LIBC) \
194202
-DCMAKE_TOOLCHAIN_FILE=`cat toolchain.config` ../../.. 2>&1 | tee cmake.log $(QLOG) ; ( exit $${PIPESTATUS[0]} ) ) || \
195203
(echo "CMake run failed. See "`pwd`"/cmake.log for details."; exit 1;); \
@@ -198,14 +206,14 @@ $(BUILD_DIRS_NATIVE):
198206
$(BUILD_DIRS_STM32F3): prerequisites
199207
$(Q) mkdir -p $@
200208
$(Q) cd $@ && \
201-
(cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_VALGRIND_FREYA=$(VALGRIND_FREYA) -DENABLE_LTO=$(LTO) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f3.cmake ../../.. 2>&1 | tee cmake.log $(QLOG) ; ( exit $${PIPESTATUS[0]} ) ) || \
209+
(cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_VALGRIND_FREYA=$(VALGRIND_FREYA) -DENABLE_LTO=$(LTO) -DENABLE_ALL_IN_ONE=$(ALL_IN_ONE) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f3.cmake ../../.. 2>&1 | tee cmake.log $(QLOG) ; ( exit $${PIPESTATUS[0]} ) ) || \
202210
(echo "CMake run failed. See "`pwd`"/cmake.log for details."; exit 1;)
203211

204212
.PHONY: $(BUILD_DIRS_STM32F4)
205213
$(BUILD_DIRS_STM32F4): prerequisites
206214
$(Q) mkdir -p $@
207215
$(Q) cd $@ && \
208-
(cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_VALGRIND_FREYA=$(VALGRIND_FREYA) -DENABLE_LTO=$(LTO) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f4.cmake ../../.. 2>&1 | tee cmake.log $(QLOG) ; ( exit $${PIPESTATUS[0]} ) ) || \
216+
(cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_VALGRIND_FREYA=$(VALGRIND_FREYA) -DENABLE_LTO=$(LTO) -DENABLE_ALL_IN_ONE=$(ALL_IN_ONE) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f4.cmake ../../.. 2>&1 | tee cmake.log $(QLOG) ; ( exit $${PIPESTATUS[0]} ) ) || \
209217
(echo "CMake run failed. See "`pwd`"/cmake.log for details."; exit 1;)
210218

211219
.PHONY: $(JERRY_NATIVE_TARGETS)

jerry-core/CMakeLists.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,7 @@ project (JerryCore CXX C ASM)
135135
file(GLOB SOURCE_CORE_PARSER_REGEXP parser/regexp/*.cpp)
136136
file(GLOB SOURCE_CORE_JRT jrt/*.cpp)
137137

138-
set(SOURCE_CORE
139-
jerry.cpp
138+
set(SOURCE_CORE_FILES
140139
${SOURCE_CORE_API}
141140
${SOURCE_CORE_LIT}
142141
${SOURCE_CORE_RCS}
@@ -150,6 +149,21 @@ project (JerryCore CXX C ASM)
150149
${SOURCE_CORE_PARSER_REGEXP}
151150
${SOURCE_CORE_JRT})
152151

152+
# All-in-one build
153+
if("${ENABLE_ALL_IN_ONE}" STREQUAL "ON")
154+
set(ALL_IN_FILE "${CMAKE_BINARY_DIR}/jerry-all-in.cpp")
155+
list(SORT SOURCE_CORE_FILES)
156+
file(REMOVE ${ALL_IN_FILE})
157+
158+
foreach(FILE ${SOURCE_CORE_FILES})
159+
file(APPEND ${ALL_IN_FILE} "#include \"${FILE}\"\n")
160+
endforeach()
161+
162+
set(SOURCE_CORE ${ALL_IN_FILE})
163+
else()
164+
set(SOURCE_CORE ${SOURCE_CORE_FILES})
165+
endif()
166+
153167
# Per-option configuration
154168
# Valgrind
155169
if("${ENABLE_VALGRIND}" STREQUAL "ON")

jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@
5353
#undef ROUTINE_ARG_LIST_0
5454
#undef ROUTINE_ARG
5555

56-
static lit_magic_string_id_t ecma_builtin_property_names[] =
56+
#define ECMA_BUILTIN_PROPERTY_NAMES \
57+
PASTE (PASTE (ecma_builtin_property_names, _), BUILTIN_UNDERSCORED_ID)
58+
59+
static lit_magic_string_id_t ECMA_BUILTIN_PROPERTY_NAMES[] =
5760
{
5861
#define SIMPLE_VALUE(name, obj_getter, prop_writable, prop_enumerable, prop_configurable) name,
5962
#define NUMBER_VALUE(name, obj_getter, prop_writable, prop_enumerable, prop_configurable) name,
@@ -77,14 +80,14 @@ SORT_PROPERTY_NAMES_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (void)
7780
swapped = false;
7881

7982
for (ecma_length_t i = 1;
80-
i < (sizeof (ecma_builtin_property_names) / sizeof (ecma_builtin_property_names[0]));
83+
i < (sizeof (ECMA_BUILTIN_PROPERTY_NAMES) / sizeof (ECMA_BUILTIN_PROPERTY_NAMES[0]));
8184
i++)
8285
{
83-
if (ecma_builtin_property_names[i] < ecma_builtin_property_names[i - 1])
86+
if (ECMA_BUILTIN_PROPERTY_NAMES[i] < ECMA_BUILTIN_PROPERTY_NAMES[i - 1])
8487
{
85-
lit_magic_string_id_t id_temp = ecma_builtin_property_names[i - 1];
86-
ecma_builtin_property_names[i - 1] = ecma_builtin_property_names[i];
87-
ecma_builtin_property_names[i] = id_temp;
88+
lit_magic_string_id_t id_temp = ECMA_BUILTIN_PROPERTY_NAMES[i - 1];
89+
ECMA_BUILTIN_PROPERTY_NAMES[i - 1] = ECMA_BUILTIN_PROPERTY_NAMES[i];
90+
ECMA_BUILTIN_PROPERTY_NAMES[i] = id_temp;
8891

8992
swapped = true;
9093
}
@@ -118,10 +121,10 @@ TRY_TO_INSTANTIATE_PROPERTY_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (ecma_object_t
118121
return NULL;
119122
}
120123

121-
const ecma_length_t property_numbers = (ecma_length_t) (sizeof (ecma_builtin_property_names) /
122-
sizeof (ecma_builtin_property_names[0]));
124+
const ecma_length_t property_numbers = (ecma_length_t) (sizeof (ECMA_BUILTIN_PROPERTY_NAMES) /
125+
sizeof (ECMA_BUILTIN_PROPERTY_NAMES[0]));
123126
int32_t index;
124-
index = ecma_builtin_bin_search_for_magic_string_id_in_array (ecma_builtin_property_names,
127+
index = ecma_builtin_bin_search_for_magic_string_id_in_array (ECMA_BUILTIN_PROPERTY_NAMES,
125128
property_numbers,
126129
id);
127130

@@ -307,17 +310,17 @@ LIST_LAZY_PROPERTY_NAMES_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (ecma_object_t *o
307310

308311
JERRY_ASSERT (ecma_builtin_is (object_p, builtin_object_id));
309312

310-
const ecma_length_t properties_number = (ecma_length_t) (sizeof (ecma_builtin_property_names) /
311-
sizeof (ecma_builtin_property_names[0]));
313+
const ecma_length_t properties_number = (ecma_length_t) (sizeof (ECMA_BUILTIN_PROPERTY_NAMES) /
314+
sizeof (ECMA_BUILTIN_PROPERTY_NAMES[0]));
312315

313316
for (ecma_length_t i = 0;
314317
i < properties_number;
315318
i++)
316319
{
317-
lit_magic_string_id_t name = ecma_builtin_property_names[i];
320+
lit_magic_string_id_t name = ECMA_BUILTIN_PROPERTY_NAMES[i];
318321

319322
int32_t index;
320-
index = ecma_builtin_bin_search_for_magic_string_id_in_array (ecma_builtin_property_names,
323+
index = ecma_builtin_bin_search_for_magic_string_id_in_array (ECMA_BUILTIN_PROPERTY_NAMES,
321324
properties_number,
322325
name);
323326

@@ -424,6 +427,7 @@ DISPATCH_ROUTINE_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (uint16_t builtin_routine
424427
return c_function_name (this_arg_value ROUTINE_ARG_LIST_ ## args_number); \
425428
}
426429
#include BUILTIN_INC_HEADER_NAME
430+
#undef ROUTINE_ARG
427431
#undef ROUTINE_ARG_LIST_0
428432
#undef ROUTINE_ARG_LIST_1
429433
#undef ROUTINE_ARG_LIST_2
@@ -445,4 +449,5 @@ DISPATCH_ROUTINE_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (uint16_t builtin_routine
445449
#undef TRY_TO_INSTANTIATE_PROPERTY_ROUTINE_NAME
446450
#undef BUILTIN_UNDERSCORED_ID
447451
#undef BUILTIN_INC_HEADER_NAME
452+
#undef ECMA_BUILTIN_PROPERTY_NAMES
448453

0 commit comments

Comments
 (0)