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