• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright JS Foundation and other contributors, http://js.foundation
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef JERRYSCRIPT_CONFIG_H
17 #define JERRYSCRIPT_CONFIG_H
18 
19 /*
20  * Here define the special config for IAR and gn build.
21  */
22 #if (!defined(_WIN32) && !defined(_WIN64))
23 #ifndef JERRY_BUILTIN_REGEXP
24 # define JERRY_BUILTIN_REGEXP 0
25 #endif
26 
27 #ifndef JERRY_ES2015
28 # define JERRY_ES2015 0
29 #endif
30 
31 #ifndef JERRY_NDEBUG
32 # define JERRY_NDEBUG
33 #endif
34 
35 #ifndef JERRY_DISABLE_HEAVY_DEBUG
36 # define JERRY_DISABLE_HEAVY_DEBUG
37 #endif
38 
39 #ifndef JERRY_SNAPSHOT_EXEC
40 # define JERRY_SNAPSHOT_EXEC 1
41 #endif
42 
43 #ifndef JERRY_PARSER
44 # define JERRY_PARSER 1
45 #endif
46 
47 #ifndef JERRY_ES2015_BUILTIN_TYPEDARRAY
48 # define JERRY_ES2015_BUILTIN_TYPEDARRAY 1
49 #endif
50 
51 #ifndef JERRY_FOR_IAR_CONFIG
52 #ifndef JERRY_MEM_STATS
53 # define JERRY_MEM_STATS 1
54 #endif
55 
56 #ifndef JERRY_LOGGING
57 # define JERRY_LOGGING 1
58 #endif
59 #endif /* JERRY_FOR_IAR_CONFIG */
60 
61 #ifndef JERRY_GLOBAL_HEAP_SIZE
62 //Maximum size of heap in kilobytes
63 # define JERRY_GLOBAL_HEAP_SIZE (48)
64 #endif
65 
66 #ifndef JERRY_BUILTIN_EVAL_DISABLED
67 // disable builtin eval() function
68 # define JERRY_BUILTIN_EVAL_DISABLED 1
69 #endif
70 
71 #if defined (__linux__)
72 #ifndef JERRY_SNAPSHOT_SAVE
73 # define JERRY_SNAPSHOT_SAVE 1
74 #endif
75 #endif /* binary tool compiling in linux platform */
76 
77 #endif /* !defined(_WIN32) && !defined(_WIN64) */
78 
79 /*
80  * Here define the special config for Win simulator build.
81  */
82 #if defined (_WIN32) || defined (_WIN64)
83 #ifdef JERRY_FOR_IAR_CONFIG
84 # error "Should not define this macro on WIN simulator!"
85 #endif
86 #ifndef JERRY_BUILTIN_REGEXP
87 # define JERRY_BUILTIN_REGEXP 0
88 #endif
89 
90 #ifndef JERRY_ES2015
91 # define JERRY_ES2015 0
92 #endif
93 
94 #ifndef JERRY_ES2015_BUILTIN_TYPEDARRAY
95 # define JERRY_ES2015_BUILTIN_TYPEDARRAY 1
96 #endif
97 
98 //Maximum size of heap in kilobytes
99 #ifndef JERRY_GLOBAL_HEAP_SIZE
100 # define JERRY_GLOBAL_HEAP_SIZE (64)
101 #endif
102 
103 #ifndef JERRY_DISABLE_HEAVY_DEBUG
104 # define JERRY_DISABLE_HEAVY_DEBUG
105 #endif
106 
107 #ifndef JERRY_ERROR_MESSAGES
108 # define JERRY_ERROR_MESSAGES 1
109 #endif
110 
111 #ifndef JERRY_LINE_INFO
112 # define JERRY_LINE_INFO 1
113 #endif
114 
115 #ifndef JERRY_MEM_STATS
116 # define JERRY_MEM_STATS 1
117 #endif
118 
119 #ifndef JERRY_SNAPSHOT_EXEC
120 # define JERRY_SNAPSHOT_EXEC 1
121 #endif
122 
123 #ifndef JERRY_SNAPSHOT_SAVE
124 # define JERRY_SNAPSHOT_SAVE 1
125 #endif
126 
127 #ifndef JERRY_LOGGING
128 # define JERRY_LOGGING 1
129 #endif
130 
131 // following config controls temp changes in jerry for debugger function with IDE
132 #ifndef ACE_DEBUGGER_CUSTOM
133 # define ACE_DEBUGGER_CUSTOM
134 #endif
135 
136 #ifndef JERRY_BUILTIN_EVAL_DISABLED
137 // disable builtin eval() function
138 # define JERRY_BUILTIN_EVAL_DISABLED 1
139 #endif
140 #endif /* defined (_WIN32) || defined (_WIN64) */
141 
142 /*
143  * Note: should not modify below by default!
144  */
145 
146 // @JERRY_BUILD_CFG@
147 
148 /**
149  * Built-in configurations
150  *
151  * Allowed values for built-in defines:
152  *  0: Disable the given built-in.
153  *  1: Enable the given built-in.
154  */
155 /*
156  * By default all built-ins are enabled if they are not defined.
157  */
158 #ifndef JERRY_BUILTINS
159 # define JERRY_BUILTINS 1
160 #endif /* !defined (JERRY_BUILTINS) */
161 
162 #ifndef JERRY_BUILTIN_ANNEXB
163 # define JERRY_BUILTIN_ANNEXB JERRY_BUILTINS
164 #endif /* !defined (JERRY_BUILTIN_ANNEXB) */
165 
166 #ifndef JERRY_BUILTIN_ARRAY
167 # define JERRY_BUILTIN_ARRAY JERRY_BUILTINS
168 #endif /* !defined (JERRY_BUILTIN_ARRAY) */
169 
170 #ifndef JERRY_BUILTIN_DATE
171 # define JERRY_BUILTIN_DATE JERRY_BUILTINS
172 #endif /* !defined (JERRY_BUILTIN_DATE) */
173 
174 #ifndef JERRY_BUILTIN_ERRORS
175 # define JERRY_BUILTIN_ERRORS JERRY_BUILTINS
176 #endif /* !defined (JERRY_BUILTIN_ERRORS) */
177 
178 #ifndef JERRY_BUILTIN_BOOLEAN
179 # define JERRY_BUILTIN_BOOLEAN JERRY_BUILTINS
180 #endif /* !defined (JERRY_BUILTIN_BOOLEAN) */
181 
182 #ifndef JERRY_BUILTIN_JSON
183 # define JERRY_BUILTIN_JSON JERRY_BUILTINS
184 #endif /* !defined (JERRY_BUILTIN_JSON) */
185 
186 #ifndef JERRY_BUILTIN_MATH
187 # define JERRY_BUILTIN_MATH JERRY_BUILTINS
188 #endif /* !defined (JERRY_BUILTIN_MATH) */
189 
190 #ifndef JERRY_BUILTIN_NUMBER
191 # define JERRY_BUILTIN_NUMBER JERRY_BUILTINS
192 #endif /* !defined (JERRY_BUILTIN_NUMBER) */
193 
194 #ifndef JERRY_BUILTIN_REGEXP
195 # define JERRY_BUILTIN_REGEXP JERRY_BUILTINS
196 #endif /* !defined (JERRY_BUILTIN_REGEXP) */
197 
198 #ifndef JERRY_BUILTIN_STRING
199 # define JERRY_BUILTIN_STRING JERRY_BUILTINS
200 #endif /* !defined (JERRY_BUILTIN_STRING) */
201 
202 /**
203  * ES2015 (a.k.a es6) related features, by default all of them are enabled.
204  */
205 #ifndef JERRY_ES2015
206 # define JERRY_ES2015 1
207 #endif /* !defined (JERRY_ES2015) */
208 
209 #ifndef JERRY_ES2015_BUILTIN_DATAVIEW
210 # define JERRY_ES2015_BUILTIN_DATAVIEW JERRY_ES2015
211 #endif /* !defined (JERRY_ES2015_BUILTIN_DATAVIEW) */
212 
213 #ifndef JERRY_ES2015_BUILTIN_MAP
214 # define JERRY_ES2015_BUILTIN_MAP JERRY_ES2015
215 #endif /* !defined (JERRY_ES2015_BUILTIN_MAP) */
216 
217 #ifndef JERRY_ES2015_BUILTIN_SET
218 # define JERRY_ES2015_BUILTIN_SET JERRY_ES2015
219 #endif /* !defined (JERRY_ES2015_BUILTIN_SET) */
220 
221 #ifndef JERRY_ES2015_BUILTIN_WEAKMAP
222 # define JERRY_ES2015_BUILTIN_WEAKMAP JERRY_ES2015
223 #endif /* !defined (JERRY_ES2015_BUILTIN_WEAKMAP) */
224 
225 #ifndef JERRY_ES2015_BUILTIN_WEAKSET
226 # define JERRY_ES2015_BUILTIN_WEAKSET JERRY_ES2015
227 #endif /* !defined (JERRY_ES2015_BUILTIN_WEAKSET) */
228 
229 #ifndef JERRY_ES2015_BUILTIN_PROMISE
230 # define JERRY_ES2015_BUILTIN_PROMISE JERRY_ES2015
231 #endif /* !defined (JERRY_ES2015_BUILTIN_PROMISE) */
232 
233 #ifndef JERRY_ES2015_BUILTIN_PROXY
234 # define JERRY_ES2015_BUILTIN_PROXY JERRY_ES2015
235 #endif /* !defined (JERRY_ES2015_BUILTIN_PROXY) */
236 
237 #ifndef JERRY_ES2015_BUILTIN_REFLECT
238 # define JERRY_ES2015_BUILTIN_REFLECT JERRY_ES2015
239 #endif /* !defined (JERRY_ES2015_BUILTIN_REFLECT) */
240 
241 #ifndef JERRY_ES2015_BUILTIN_TYPEDARRAY
242 # define JERRY_ES2015_BUILTIN_TYPEDARRAY JERRY_ES2015
243 #endif /* !defined (JERRY_ES2015_BUILTIN_TYPEDARRAY) */
244 
245 #ifndef JERRY_ES2015_MODULE_SYSTEM
246 # define JERRY_ES2015_MODULE_SYSTEM JERRY_ES2015
247 #endif /* !defined (JERRY_ES2015_MODULE_SYSTEM) */
248 
249 /**
250  * Engine internal and misc configurations.
251  */
252 
253 /**
254  * Specifies the compressed pointer representation
255  *
256  * Allowed values:
257  *  0: use 16 bit representation
258  *  1: use 32 bit representation
259  *
260  * Default value: 0
261  * For more details see: jmem/jmem.h
262  */
263 #ifndef JERRY_CPOINTER_32_BIT
264 # define JERRY_CPOINTER_32_BIT 0
265 #endif /* !defined (JERRY_CPOINTER_32_BIT) */
266 
267 /**
268  * Enable/Disable the engine's JavaScript debugger interface
269  *
270  * Allowed values:
271  *  0: Disable the debugger parts.
272  *  1: Enable the debugger.
273  */
274 #ifndef JERRY_DEBUGGER
275 # define JERRY_DEBUGGER 0
276 #endif /* !defined (JERRY_DEBUGGER) */
277 
278 /**
279  * Enable/Disable built-in error messages for error objects.
280  *
281  * Allowed values:
282  *  0: Disable error messages.
283  *  1: Enable error message.
284  *
285  * Default value: 0
286  */
287 #ifndef JERRY_ERROR_MESSAGES
288 # define JERRY_ERROR_MESSAGES 0
289 #endif /* !defined (JERRY_ERROR_MESSAGES) */
290 
291 /**
292  * Enable/Disable external context.
293  *
294  * Allowed values:
295  *  0: Disable external context.
296  *  1: Enable external context support.
297  *
298  * Default value: 0
299  */
300 #ifndef JERRY_EXTERNAL_CONTEXT
301 # define JERRY_EXTERNAL_CONTEXT 0
302 #endif /* !defined (JERRY_EXTERNAL_CONTEXT) */
303 
304 /**
305  * Maximum size of heap in kilobytes
306  *
307  * Default value: 512 KiB
308  */
309 #ifndef JERRY_GLOBAL_HEAP_SIZE
310 # define JERRY_GLOBAL_HEAP_SIZE (512)
311 #endif /* !defined (JERRY_GLOBAL_HEAP_SIZE) */
312 
313 /**
314  * The allowed heap usage limit until next garbage collection, in bytes.
315  *
316  * If value is 0, the default is 1/32 of JERRY_HEAP_SIZE
317  */
318 #ifndef JERRY_GC_LIMIT
319 # define JERRY_GC_LIMIT 0
320 #endif /* !defined (JERRY_GC_LIMIT) */
321 
322 /**
323  * Maximum stack usage size in kilobytes
324  *
325  * Note: This feature cannot be used when 'detect_stack_use_after_return=1' ASAN option is enabled.
326  * For more detailed description:
327  *   - https://github.com/google/sanitizers/wiki/AddressSanitizerUseAfterReturn#compatibility
328  *
329  * Default value: 0, unlimited
330  */
331 #ifndef JERRY_STACK_LIMIT
332 # define JERRY_STACK_LIMIT (0)
333 #endif /* !defined (JERRY_STACK_LIMIT) */
334 
335 /**
336  * Maximum depth of recursion during GC mark phase
337  *
338  * Default value: 8
339  */
340 #ifndef JERRY_GC_MARK_LIMIT
341 # define JERRY_GC_MARK_LIMIT (8)
342 #endif /* !defined (JERRY_GC_MARK_LIMIT) */
343 
344 /**
345  * Enable/Disable property lookup cache.
346  *
347  * Allowed values:
348  *  0: Disable lookup cache.
349  *  1: Enable lookup cache.
350  *
351  * Default value: 1
352  */
353 #ifndef JERRY_LCACHE
354 # define JERRY_LCACHE 1
355 #endif /* !defined (JERRY_LCACHE) */
356 
357 /**
358  * Enable/Disable line-info management inside the engine.
359  *
360  * Allowed values:
361  *  0: Disable line-info in the engine.
362  *  1: Enable line-info management.
363  *
364  * Default value: 0
365  */
366 #ifndef JERRY_LINE_INFO
367 # define JERRY_LINE_INFO 0
368 #endif /* !defined (JERRY_LINE_INFO) */
369 
370 /**
371  * Enable/Disable logging inside the engine.
372  *
373  * Allowed values:
374  *  0: Disable internal logging.
375  *  1: Enable internal logging.
376  *
377  * Default value: 0
378  */
379 #ifndef JERRY_LOGGING
380 # define JERRY_LOGGING 0
381 #endif /* !defined (JERRY_LOGGING) */
382 
383 /**
384  * Enable/Disable gc call before every allocation.
385  *
386  * Allowed values:
387  *  0: Disable gc call before each allocation.
388  *  1: Enable and force gc call before each allocation.
389  *
390  * Default value: 0
391  * Warning!: This is an advanced option and will slow down the engine!
392  *           Only enable it for debugging purposes.
393  */
394 #ifndef JERRY_MEM_GC_BEFORE_EACH_ALLOC
395 # define JERRY_MEM_GC_BEFORE_EACH_ALLOC 0
396 #endif /* !defined (JERRY_MEM_GC_BEFORE_EACH_ALLOC) */
397 
398 /**
399  * Enable/Disable the collection if run-time memory statistics.
400  *
401  * Allowed values:
402  *  0: Disable run-time memory information collection.
403  *  1: Enable run-time memory statistics collection.
404  *
405  * Default value: 0
406  */
407 #ifndef JERRY_MEM_STATS
408 # define JERRY_MEM_STATS 0
409 #endif /* !defined (JERRY_MEM_STATS) */
410 
411 /**
412  * Use 32-bit/64-bit float for ecma-numbers
413  * This option is for expert use only!
414  *
415  * Allowed values:
416  *  1: use 64-bit floating point number mode
417  *  0: use 32-bit floating point number mode
418  *
419  * Default value: 1
420  */
421 #ifndef JERRY_NUMBER_TYPE_FLOAT64
422 # define JERRY_NUMBER_TYPE_FLOAT64 1
423 #endif /* !defined (JERRY_NUMBER_TYPE_FLOAT64 */
424 
425 /**
426  * Enable/Disable the JavaScript parser.
427  *
428  * Allowed values:
429  *  0: Disable the JavaScript parser and all related functionallity.
430  *  1: Enable the JavaScript parser.
431  *
432  * Default value: 1
433  */
434 #ifndef JERRY_PARSER
435 # define JERRY_PARSER 1
436 #endif /* !defined (JERRY_PARSER) */
437 
438 /**
439  * Enable/Disable JerryScript byte code dump functions during parsing.
440  * To dump the JerryScript byte code the engine must be initialized with opcodes
441  * display flag. This option does not influence RegExp byte code dumps.
442  *
443  * Allowed values:
444  *  0: Disable all bytecode dump functions.
445  *  1: Enable bytecode dump functions.
446  *
447  * Default value: 0
448  */
449 #ifndef JERRY_PARSER_DUMP_BYTE_CODE
450 # define JERRY_PARSER_DUMP_BYTE_CODE 0
451 #endif /* defined (JERRY_PARSER_DUMP_BYTE_CODE) */
452 
453 /**
454  * Enable/Disable ECMA property hashmap.
455  *
456  * Allowed values:
457  *  0: Disable property hasmap.
458  *  1: Enable property hashmap.
459  *
460  * Default value: 1
461  */
462 #ifndef JERRY_PROPRETY_HASHMAP
463 # define JERRY_PROPRETY_HASHMAP 1
464 #endif /* !defined (JERRY_PROPRETY_HASHMAP) */
465 
466 /**
467  * Enable/Disable byte code dump functions for RegExp objects.
468  * To dump the RegExp byte code the engine must be initialized with
469  * regexp opcodes display flag. This option does not influence the
470  * JerryScript byte code dumps.
471  *
472  * Allowed values:
473  *  0: Disable all bytecode dump functions.
474  *  1: Enable bytecode dump functions.
475  *
476  * Default value: 0
477  */
478 #ifndef JERRY_REGEXP_DUMP_BYTE_CODE
479 # define JERRY_REGEXP_DUMP_BYTE_CODE 0
480 #endif /* !defined (JERRY_REGEXP_DUMP_BYTE_CODE) */
481 
482 /**
483  * Enables/disables the RegExp strict mode
484  *
485  * Default value: 0
486  */
487 #ifndef JERRY_REGEXP_STRICT_MODE
488 # define JERRY_REGEXP_STRICT_MODE 0
489 #endif /* !defined (JERRY_REGEXP_STRICT_MODE) */
490 
491 /**
492  * Enable/Disable the snapshot execution functions.
493  *
494  * Allowed values:
495  *  0: Disable snapshot execution.
496  *  1: Enable snapshot execution.
497  *
498  * Default value: 0
499  */
500 #ifndef JERRY_SNAPSHOT_EXEC
501 # define JERRY_SNAPSHOT_EXEC 0
502 #endif /* !defined (JERRY_SNAPSHOT_EXEC) */
503 
504 /**
505  * Enable/Disable the snapshot save functions.
506  *
507  * Allowed values:
508  *  0: Disable snapshot save functions.
509  *  1: Enable snapshot save functions.
510  */
511 #ifndef JERRY_SNAPSHOT_SAVE
512 # define JERRY_SNAPSHOT_SAVE 0
513 #endif /* !defined (JERRY_SNAPSHOT_SAVE) */
514 
515 /**
516  * Enable/Disable usage of system allocator.
517  *
518  * Allowed values:
519  *  0: Disable usage of system allocator.
520  *  1: Enable usage of system allocator.
521  *
522  * Default value: 0
523  */
524 #ifndef JERRY_SYSTEM_ALLOCATOR
525 # define JERRY_SYSTEM_ALLOCATOR 0
526 #endif /* !defined (JERRY_SYSTEM_ALLOCATOR) */
527 
528 /**
529  * Enables/disables the unicode case conversion in the engine.
530  * By default Unicode case conversion is enabled.
531  */
532 #ifndef JERRY_UNICODE_CASE_CONVERSION
533 # define JERRY_UNICODE_CASE_CONVERSION 1
534 #endif /* !defined (JERRY_UNICODE_CASE_CONVERSION) */
535 
536 /**
537  * Configures if the internal memory allocations are exposed to Valgrind or not.
538  *
539  * Allowed values:
540  *  0: Disable the Valgrind specific memory allocation notifications.
541  *  1: Enable the Valgrind specific allocation notifications.
542  */
543 #ifndef JERRY_VALGRIND
544 # define JERRY_VALGRIND 0
545 #endif /* !defined (JERRY_VALGRIND) */
546 
547 /**
548  * Enable/Disable the vm execution stop callback function.
549  *
550  * Allowed values:
551  *  0: Disable vm exec stop callbacks.
552  *  1: Enable vm exec stop callback functionality.
553  */
554 #ifndef JERRY_VM_EXEC_STOP
555 # define JERRY_VM_EXEC_STOP 0
556 #endif /* !defined (JERRY_VM_EXEC_STOP) */
557 
558 /**
559  * Advanced section configurations.
560  */
561 
562 /**
563  * Allow configuring attributes on a few constant data inside the engine.
564  *
565  * One of the main usages:
566  * Normally compilers store const(ant)s in ROM. Thus saving RAM.
567  * But if your compiler does not support it then the directive below can force it.
568  *
569  * For the moment it is mainly meant for the following targets:
570  *      - ESP8266
571  *
572  * Example configuration for moving (some) constatns into a given section:
573  *  # define JERRY_ATTR_CONST_DATA __attribute__((section(".rodata.const")))
574  */
575 #ifndef JERRY_ATTR_CONST_DATA
576 # define JERRY_ATTR_CONST_DATA
577 #endif /* !defined (JERRY_ATTR_CONST_DATA) */
578 
579 /**
580  * The JERRY_ATTR_GLOBAL_HEAP allows adding extra attributes for the Jerry global heap.
581  *
582  * Example on how to move the global heap into it's own section:
583  *   #define JERRY_ATTR_GLOBAL_HEAP __attribute__((section(".text.globalheap")))
584  */
585 #ifndef JERRY_ATTR_GLOBAL_HEAP
586 # define JERRY_ATTR_GLOBAL_HEAP
587 #endif /* !defined (JERRY_ATTR_GLOBAL_HEAP) */
588 
589 /**
590  * Sanity check for macros to see if the values are 0 or 1
591  *
592  * If a new feature is added this should be updated.
593  */
594 /**
595  * Check base builtins.
596  */
597 #if !defined (JERRY_BUILTIN_ANNEXB) \
598 || ((JERRY_BUILTIN_ANNEXB != 0) && (JERRY_BUILTIN_ANNEXB != 1))
599 # error "Invalid value for JERRY_BUILTIN_ANNEXB macro."
600 #endif
601 #if !defined (JERRY_BUILTIN_ARRAY) \
602 || ((JERRY_BUILTIN_ARRAY != 0) && (JERRY_BUILTIN_ARRAY != 1))
603 # error "Invalid value for JERRY_BUILTIN_ARRAY macro."
604 #endif
605 #if !defined (JERRY_BUILTIN_BOOLEAN) \
606 || ((JERRY_BUILTIN_BOOLEAN != 0) && (JERRY_BUILTIN_BOOLEAN != 1))
607 # error "Invalid value for JERRY_BUILTIN_BOOLEAN macro."
608 #endif
609 #if !defined (JERRY_BUILTIN_DATE) \
610 || ((JERRY_BUILTIN_DATE != 0) && (JERRY_BUILTIN_DATE != 1))
611 # error "Invalid value for JERRY_BUILTIN_DATE macro."
612 #endif
613 #if !defined (JERRY_BUILTIN_ERRORS) \
614 || ((JERRY_BUILTIN_ERRORS != 0) && (JERRY_BUILTIN_ERRORS != 1))
615 # error "Invalid value for JERRY_BUILTIN_ERRORS macro."
616 #endif
617 #if !defined (JERRY_BUILTIN_JSON) \
618 || ((JERRY_BUILTIN_JSON != 0) && (JERRY_BUILTIN_JSON != 1))
619 # error "Invalid value for JERRY_BUILTIN_JSON macro."
620 #endif
621 #if !defined (JERRY_BUILTIN_MATH) \
622 || ((JERRY_BUILTIN_MATH != 0) && (JERRY_BUILTIN_MATH != 1))
623 # error "Invalid value for JERRY_BUILTIN_MATH macro."
624 #endif
625 #if !defined (JERRY_BUILTIN_NUMBER) \
626 || ((JERRY_BUILTIN_NUMBER != 0) && (JERRY_BUILTIN_NUMBER != 1))
627 # error "Invalid value for JERRY_BUILTIN_NUMBER macro."
628 #endif
629 #if !defined (JERRY_BUILTIN_REGEXP) \
630 || ((JERRY_BUILTIN_REGEXP != 0) && (JERRY_BUILTIN_REGEXP != 1))
631 # error "Invalid value for JERRY_BUILTIN_REGEXP macro."
632 #endif
633 #if !defined (JERRY_BUILTIN_STRING) \
634 || ((JERRY_BUILTIN_STRING != 0) && (JERRY_BUILTIN_STRING != 1))
635 # error "Invalid value for JERRY_BUILTIN_STRING macro."
636 #endif
637 #if !defined (JERRY_BUILTINS) \
638 || ((JERRY_BUILTINS != 0) && (JERRY_BUILTINS != 1))
639 # error "Invalid value for JERRY_BUILTINS macro."
640 #endif
641 
642 /**
643  * Check ES2015 features
644  */
645 #if !defined (JERRY_ES2015) \
646 || ((JERRY_ES2015 != 0) && (JERRY_ES2015 != 1))
647 # error "Invalid value for JERRY_ES2015 macro."
648 #endif
649 #if !defined (JERRY_ES2015_BUILTIN_DATAVIEW) \
650 || ((JERRY_ES2015_BUILTIN_DATAVIEW != 0) && (JERRY_ES2015_BUILTIN_DATAVIEW != 1))
651 # error "Invalid value for JERRY_ES2015_BUILTIN_DATAVIEW macro."
652 #endif
653 #if !defined (JERRY_ES2015_BUILTIN_MAP) \
654 || ((JERRY_ES2015_BUILTIN_MAP != 0) && (JERRY_ES2015_BUILTIN_MAP != 1))
655 # error "Invalid value for JERRY_ES2015_BUILTIN_MAP macro."
656 #endif
657 #if !defined (JERRY_ES2015_BUILTIN_REFLECT) \
658 || ((JERRY_ES2015_BUILTIN_REFLECT != 0) && (JERRY_ES2015_BUILTIN_REFLECT != 1))
659 # error "Invalid value for JERRY_ES2015_BUILTIN_REFLECT macro."
660 #endif
661 #if !defined (JERRY_ES2015_BUILTIN_SET) \
662 || ((JERRY_ES2015_BUILTIN_SET != 0) && (JERRY_ES2015_BUILTIN_SET != 1))
663 # error "Invalid value for JERRY_ES2015_BUILTIN_SET macro."
664 #endif
665 #if !defined (JERRY_ES2015_BUILTIN_WEAKMAP) \
666 || ((JERRY_ES2015_BUILTIN_WEAKMAP != 0) && (JERRY_ES2015_BUILTIN_WEAKMAP != 1))
667 # error "Invalid value for JERRY_ES2015_BUILTIN_WEAKMAP macro."
668 #endif
669 #if !defined (JERRY_ES2015_BUILTIN_WEAKSET) \
670 || ((JERRY_ES2015_BUILTIN_WEAKSET != 0) && (JERRY_ES2015_BUILTIN_WEAKSET != 1))
671 # error "Invalid value for JERRY_ES2015_BUILTIN_WEAKSET macro."
672 #endif
673 #if !defined (JERRY_ES2015_BUILTIN_PROMISE) \
674 || ((JERRY_ES2015_BUILTIN_PROMISE != 0) && (JERRY_ES2015_BUILTIN_PROMISE != 1))
675 # error "Invalid value for JERRY_ES2015_BUILTIN_PROMISE macro."
676 #endif
677 #if !defined (JERRY_ES2015_BUILTIN_PROXY) \
678 || ((JERRY_ES2015_BUILTIN_PROXY != 0) && (JERRY_ES2015_BUILTIN_PROXY != 1))
679 # error "Invalid value for JERRY_ES2015_BUILTIN_PROXY macro."
680 #endif
681 #if !defined (JERRY_ES2015_BUILTIN_TYPEDARRAY) \
682 || ((JERRY_ES2015_BUILTIN_TYPEDARRAY != 0) && (JERRY_ES2015_BUILTIN_TYPEDARRAY != 1))
683 # error "Invalid value for JERRY_ES2015_BUILTIN_TYPEDARRAY macro."
684 #endif
685 #if !defined (JERRY_ES2015_MODULE_SYSTEM) \
686 || ((JERRY_ES2015_MODULE_SYSTEM != 0) && (JERRY_ES2015_MODULE_SYSTEM != 1))
687 # error "Invalid value for JERRY_ES2015_MODULE_SYSTEM macro."
688 #endif
689 
690 /**
691  * Internal options.
692  */
693 #if !defined (JERRY_CPOINTER_32_BIT) \
694 || ((JERRY_CPOINTER_32_BIT != 0) && (JERRY_CPOINTER_32_BIT != 1))
695 # error "Invalid value for 'JERRY_CPOINTER_32_BIT' macro."
696 #endif
697 #if !defined (JERRY_DEBUGGER) \
698 || ((JERRY_DEBUGGER != 0) && (JERRY_DEBUGGER != 1))
699 # error "Invalid value for 'JERRY_DEBUGGER' macro."
700 #endif
701 #if !defined (JERRY_ERROR_MESSAGES) \
702 || ((JERRY_ERROR_MESSAGES != 0) && (JERRY_ERROR_MESSAGES != 1))
703 # error "Invalid value for 'JERRY_ERROR_MESSAGES' macro."
704 #endif
705 #if !defined (JERRY_EXTERNAL_CONTEXT) \
706 || ((JERRY_EXTERNAL_CONTEXT != 0) && (JERRY_EXTERNAL_CONTEXT != 1))
707 # error "Invalid value for 'JERRY_EXTERNAL_CONTEXT' macro."
708 #endif
709 #if !defined (JERRY_GLOBAL_HEAP_SIZE) || (JERRY_GLOBAL_HEAP_SIZE <= 0)
710 # error "Invalid value for 'JERRY_GLOBAL_HEAP_SIZE' macro."
711 #endif
712 #if !defined (JERRY_GC_LIMIT) || (JERRY_GC_LIMIT < 0)
713 # error "Invalid value for 'JERRY_GC_LIMIT' macro."
714 #endif
715 #if !defined (JERRY_STACK_LIMIT) || (JERRY_STACK_LIMIT < 0)
716 # error "Invalid value for 'JERRY_STACK_LIMIT' macro."
717 #endif
718 #if !defined (JERRY_GC_MARK_LIMIT) || (JERRY_GC_MARK_LIMIT < 0)
719 # error "Invalid value for 'JERRY_GC_MARK_LIMIT' macro."
720 #endif
721 #if !defined (JERRY_LCACHE) \
722 || ((JERRY_LCACHE != 0) && (JERRY_LCACHE != 1))
723 # error "Invalid value for 'JERRY_LCACHE' macro."
724 #endif
725 #if !defined (JERRY_LINE_INFO) \
726 || ((JERRY_LINE_INFO != 0) && (JERRY_LINE_INFO != 1))
727 # error "Invalid value for 'JERRY_LINE_INFO' macro."
728 #endif
729 #if !defined (JERRY_LOGGING) \
730 || ((JERRY_LOGGING != 0) && (JERRY_LOGGING != 1))
731 # error "Invalid value for 'JERRY_LOGGING' macro."
732 #endif
733 #if !defined (JERRY_MEM_GC_BEFORE_EACH_ALLOC) \
734 || ((JERRY_MEM_GC_BEFORE_EACH_ALLOC != 0) && (JERRY_MEM_GC_BEFORE_EACH_ALLOC != 1))
735 # error "Invalid value for 'JERRY_MEM_GC_BEFORE_EACH_ALLOC' macro."
736 #endif
737 #if !defined (JERRY_MEM_STATS) \
738 || ((JERRY_MEM_STATS != 0) && (JERRY_MEM_STATS != 1))
739 # error "Invalid value for 'JERRY_MEM_STATS' macro."
740 #endif
741 #if !defined (JERRY_NUMBER_TYPE_FLOAT64) \
742 || ((JERRY_NUMBER_TYPE_FLOAT64 != 0) && (JERRY_NUMBER_TYPE_FLOAT64 != 1))
743 # error "Invalid value for 'JERRY_NUMBER_TYPE_FLOAT64' macro."
744 #endif
745 #if !defined (JERRY_PARSER) \
746 || ((JERRY_PARSER != 0) && (JERRY_PARSER != 1))
747 # error "Invalid value for 'JERRY_PARSER' macro."
748 #endif
749 #if !defined (JERRY_PARSER_DUMP_BYTE_CODE) \
750 || ((JERRY_PARSER_DUMP_BYTE_CODE != 0) && (JERRY_PARSER_DUMP_BYTE_CODE != 1))
751 # error "Invalid value for 'JERRY_PARSER_DUMP_BYTE_CODE' macro."
752 #endif
753 #if !defined (JERRY_PROPRETY_HASHMAP) \
754 || ((JERRY_PROPRETY_HASHMAP != 0) && (JERRY_PROPRETY_HASHMAP != 1))
755 # error "Invalid value for 'JERRY_PROPRETY_HASHMAP' macro."
756 #endif
757 #if !defined (JERRY_REGEXP_DUMP_BYTE_CODE) \
758 || ((JERRY_REGEXP_DUMP_BYTE_CODE != 0) && (JERRY_REGEXP_DUMP_BYTE_CODE != 1))
759 # error "Invalid value for 'JERRY_REGEXP_DUMP_BYTE_CODE' macro."
760 #endif
761 #if !defined (JERRY_REGEXP_STRICT_MODE) \
762 || ((JERRY_REGEXP_STRICT_MODE != 0) && (JERRY_REGEXP_STRICT_MODE != 1))
763 # error "Invalid value for 'JERRY_REGEXP_STRICT_MODE' macro."
764 #endif
765 #if !defined (JERRY_SNAPSHOT_EXEC) \
766 || ((JERRY_SNAPSHOT_EXEC != 0) && (JERRY_SNAPSHOT_EXEC != 1))
767 # error "Invalid value for 'JERRY_SNAPSHOT_EXEC' macro."
768 #endif
769 #if !defined (JERRY_SNAPSHOT_SAVE) \
770 || ((JERRY_SNAPSHOT_SAVE != 0) && (JERRY_SNAPSHOT_SAVE != 1))
771 # error "Invalid value for 'JERRY_SNAPSHOT_SAVE' macro."
772 #endif
773 #if !defined (JERRY_SYSTEM_ALLOCATOR) \
774 || ((JERRY_SYSTEM_ALLOCATOR != 0) && (JERRY_SYSTEM_ALLOCATOR != 1))
775 # error "Invalid value for 'JERRY_SYSTEM_ALLOCATOR' macro."
776 #endif
777 #if !defined (JERRY_UNICODE_CASE_CONVERSION) \
778 || ((JERRY_UNICODE_CASE_CONVERSION != 0) && (JERRY_UNICODE_CASE_CONVERSION != 1))
779 # error "Invalid value for 'JERRY_UNICODE_CASE_CONVERSION' macro."
780 #endif
781 #if !defined (JERRY_VALGRIND) \
782 || ((JERRY_VALGRIND != 0) && (JERRY_VALGRIND != 1))
783 # error "Invalid value for 'JERRY_VALGRIND' macro."
784 #endif
785 #if !defined (JERRY_VM_EXEC_STOP) \
786 || ((JERRY_VM_EXEC_STOP != 0) && (JERRY_VM_EXEC_STOP != 1))
787 # error "Invalid value for 'JERRY_VM_EXEC_STOP' macro."
788 #endif
789 
790 #define ENABLED(FEATURE) ((FEATURE) == 1)
791 #define DISABLED(FEATURE) ((FEATURE) != 1)
792 
793 /**
794  * Cross component requirements check.
795  */
796 /**
797  * The date module can only use the float 64 number types.
798  * Do a check for this.
799  */
800 #if ENABLED (JERRY_BUILTIN_DATE) && !ENABLED (JERRY_NUMBER_TYPE_FLOAT64)
801 #  error "Date does not support float32"
802 #endif
803 
804 /**
805  * Wrap container types into a single guard
806  */
807 #if ENABLED (JERRY_ES2015_BUILTIN_MAP) || ENABLED (JERRY_ES2015_BUILTIN_SET) \
808 || ENABLED (JERRY_ES2015_BUILTIN_WEAKMAP) || ENABLED (JERRY_ES2015_BUILTIN_WEAKSET)
809 # define JERRY_ES2015_BUILTIN_CONTAINER 1
810 #else
811 # define JERRY_ES2015_BUILTIN_CONTAINER 0
812 #endif
813 
814 #endif /* !JERRYSCRIPT_CONFIG_H */
815