|
@@ -1,8 +1,8 @@
|
|
|
/*
|
|
|
* duk_config.h configuration header generated by genconfig.py.
|
|
|
*
|
|
|
- * Git commit: d7fdb67f18561a50e06bafd196c6b423af9ad6fe
|
|
|
- * Git describe: v2.3.0
|
|
|
+ * Git commit: 6001888049cb42656f8649db020e804bcdeca6a7
|
|
|
+ * Git describe: v2.5.0
|
|
|
* Git branch: master
|
|
|
*
|
|
|
* Supported platforms:
|
|
@@ -18,6 +18,7 @@
|
|
|
* - QNX
|
|
|
* - TI-Nspire
|
|
|
* - Emscripten
|
|
|
+ * - Android
|
|
|
* - Linux
|
|
|
* - Solaris
|
|
|
* - AIX
|
|
@@ -39,6 +40,8 @@
|
|
|
* - PowerPC 64-bit
|
|
|
* - SPARC 32-bit
|
|
|
* - SPARC 64-bit
|
|
|
+ * - RISC-V 32-bit
|
|
|
+ * - RISC-V 64-bit
|
|
|
* - SuperH
|
|
|
* - Motorola 68k
|
|
|
* - Emscripten
|
|
@@ -170,6 +173,10 @@
|
|
|
#define DUK_F_BCC
|
|
|
#endif
|
|
|
|
|
|
+#if defined(ANDROID) || defined(__ANDROID__)
|
|
|
+#define DUK_F_ANDROID
|
|
|
+#endif
|
|
|
+
|
|
|
/* Linux */
|
|
|
#if defined(__linux) || defined(__linux__) || defined(linux)
|
|
|
#define DUK_F_LINUX
|
|
@@ -246,9 +253,9 @@
|
|
|
#endif
|
|
|
|
|
|
/* ARM */
|
|
|
-#if defined(__arm__) || defined(__thumb__) || defined(_ARM) || defined(_M_ARM) || defined(__aarch64__)
|
|
|
+#if defined(__arm__) || defined(__thumb__) || defined(_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__)
|
|
|
#define DUK_F_ARM
|
|
|
-#if defined(__LP64__) || defined(_LP64) || defined(__arm64) || defined(__arm64__) || defined(__aarch64__)
|
|
|
+#if defined(__LP64__) || defined(_LP64) || defined(__arm64) || defined(__arm64__) || defined(_M_ARM64) || defined(__aarch64__)
|
|
|
#define DUK_F_ARM64
|
|
|
#else
|
|
|
#define DUK_F_ARM32
|
|
@@ -280,6 +287,22 @@
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
+/* RISC-V, https://github.com/riscv/riscv-toolchain-conventions#cc-preprocessor-definitions */
|
|
|
+#if defined(__riscv)
|
|
|
+#define DUK_F_RISCV
|
|
|
+#if defined(__riscv_xlen)
|
|
|
+#if (__riscv_xlen == 32)
|
|
|
+#define DUK_F_RISCV32
|
|
|
+#elif (__riscv_xlen == 64)
|
|
|
+#define DUK_F_RISCV64
|
|
|
+#else
|
|
|
+#error __riscv_xlen has unsupported value (not 32 or 64)
|
|
|
+#endif
|
|
|
+#else
|
|
|
+#error __riscv defined without __riscv_xlen
|
|
|
+#endif
|
|
|
+#endif /* __riscv */
|
|
|
+
|
|
|
/* SuperH */
|
|
|
#if defined(__sh__) || \
|
|
|
defined(__sh1__) || defined(__SH1__) || \
|
|
@@ -356,10 +379,6 @@
|
|
|
#define DUK_F_VBCC
|
|
|
#endif
|
|
|
|
|
|
-#if defined(ANDROID) || defined(__ANDROID__)
|
|
|
-#define DUK_F_ANDROID
|
|
|
-#endif
|
|
|
-
|
|
|
/* Atari Mint */
|
|
|
#if defined(__MINT__)
|
|
|
#define DUK_F_MINT
|
|
@@ -665,6 +684,41 @@
|
|
|
#define DUK_USE_DATE_FMT_STRFTIME
|
|
|
|
|
|
#define DUK_USE_OS_STRING "emscripten"
|
|
|
+#elif defined(DUK_F_ANDROID)
|
|
|
+/* --- Android --- */
|
|
|
+#if defined(DUK_COMPILING_DUKTAPE)
|
|
|
+#if !defined(_POSIX_C_SOURCE)
|
|
|
+#define _POSIX_C_SOURCE 200809L
|
|
|
+#endif
|
|
|
+#if !defined(_GNU_SOURCE)
|
|
|
+#define _GNU_SOURCE /* e.g. getdate_r */
|
|
|
+#endif
|
|
|
+#if !defined(_XOPEN_SOURCE)
|
|
|
+#define _XOPEN_SOURCE /* e.g. strptime */
|
|
|
+#endif
|
|
|
+#endif /* DUK_COMPILING_DUKTAPE */
|
|
|
+
|
|
|
+#include <sys/types.h>
|
|
|
+#if defined(DUK_F_BCC)
|
|
|
+/* no endian.h or stdint.h */
|
|
|
+#else
|
|
|
+#include <endian.h>
|
|
|
+#include <stdint.h>
|
|
|
+#endif /* DUK_F_BCC */
|
|
|
+#include <sys/param.h>
|
|
|
+#include <sys/time.h>
|
|
|
+#include <time.h>
|
|
|
+
|
|
|
+#define DUK_USE_DATE_NOW_GETTIMEOFDAY
|
|
|
+#define DUK_USE_DATE_TZO_GMTIME_R
|
|
|
+#define DUK_USE_DATE_PRS_STRPTIME
|
|
|
+#define DUK_USE_DATE_FMT_STRFTIME
|
|
|
+
|
|
|
+#if 0 /* XXX: safe condition? */
|
|
|
+#define DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME
|
|
|
+#endif
|
|
|
+
|
|
|
+#define DUK_USE_OS_STRING "android"
|
|
|
#elif defined(DUK_F_LINUX)
|
|
|
/* --- Linux --- */
|
|
|
#if defined(DUK_COMPILING_DUKTAPE)
|
|
@@ -715,7 +769,7 @@
|
|
|
#define DUK_USE_BYTEORDER 3
|
|
|
#endif
|
|
|
#else /* DUK_F_OLD_SOLARIS */
|
|
|
-#include <ast/endian.h>
|
|
|
+#include <sys/param.h>
|
|
|
#endif /* DUK_F_OLD_SOLARIS */
|
|
|
|
|
|
#include <sys/param.h>
|
|
@@ -927,6 +981,18 @@
|
|
|
/* SPARC byte order varies so rely on autodetection. */
|
|
|
#undef DUK_USE_PACKED_TVAL
|
|
|
#define DUK_F_PACKED_TVAL_PROVIDED
|
|
|
+#elif defined(DUK_F_RISCV32)
|
|
|
+/* --- RISC-V 32-bit --- */
|
|
|
+#define DUK_USE_ARCH_STRING "riscv32"
|
|
|
+#define DUK_USE_BYTEORDER 1
|
|
|
+#define DUK_USE_PACKED_TVAL
|
|
|
+#define DUK_F_PACKED_TVAL_PROVIDED
|
|
|
+#elif defined(DUK_F_RISCV64)
|
|
|
+/* --- RISC-V 64-bit --- */
|
|
|
+#define DUK_USE_ARCH_STRING "riscv64"
|
|
|
+#define DUK_USE_BYTEORDER 1
|
|
|
+#undef DUK_USE_PACKED_TVAL
|
|
|
+#define DUK_F_PACKED_TVAL_PROVIDED
|
|
|
#elif defined(DUK_F_SUPERH)
|
|
|
/* --- SuperH --- */
|
|
|
#define DUK_USE_ARCH_STRING "sh"
|
|
@@ -1067,8 +1133,20 @@
|
|
|
#define DUK_USE_FLEX_ZEROSIZE
|
|
|
#endif
|
|
|
|
|
|
-#undef DUK_USE_GCC_PRAGMAS
|
|
|
+#define DUK_USE_CLANG_PRAGMAS
|
|
|
#define DUK_USE_PACK_CLANG_ATTR
|
|
|
+
|
|
|
+#if defined(__clang__) && defined(__has_builtin)
|
|
|
+#if __has_builtin(__builtin_bswap64)
|
|
|
+#define DUK_BSWAP64(x) ((duk_uint64_t) __builtin_bswap64((duk_uint64_t) (x)))
|
|
|
+#endif
|
|
|
+#if __has_builtin(__builtin_bswap32)
|
|
|
+#define DUK_BSWAP32(x) ((duk_uint32_t) __builtin_bswap32((duk_uint32_t) (x)))
|
|
|
+#endif
|
|
|
+#if __has_builtin(__builtin_bswap16)
|
|
|
+#define DUK_BSWAP16(x) ((duk_uint16_t) __builtin_bswap16((duk_uint16_t) (x)))
|
|
|
+#endif
|
|
|
+#endif
|
|
|
#elif defined(DUK_F_GCC)
|
|
|
/* --- GCC --- */
|
|
|
#if defined(DUK_F_C99) || defined(DUK_F_CPP11)
|
|
@@ -1079,13 +1157,17 @@
|
|
|
#define DUK_VA_COPY(dest,src) __va_copy(dest,src)
|
|
|
#endif
|
|
|
|
|
|
-#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L)
|
|
|
-/* since gcc-2.5 */
|
|
|
+#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L) && (DUK_F_GCC_VERSION < 50000L)
|
|
|
+/* Since gcc-2.5.
|
|
|
+ *
|
|
|
+ * Disabled temporarily in GCC 5+ because of an unresolved noreturn-related
|
|
|
+ * issue: https://github.com/svaarala/duktape/issues/2155.
|
|
|
+ */
|
|
|
#define DUK_NORETURN(decl) decl __attribute__((noreturn))
|
|
|
#endif
|
|
|
|
|
|
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40500L)
|
|
|
-/* since gcc-4.5 */
|
|
|
+/* Since gcc-4.5. */
|
|
|
#define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0)
|
|
|
#endif
|
|
|
|
|
@@ -1191,6 +1273,7 @@
|
|
|
#define DUK_USE_FLEX_ZEROSIZE
|
|
|
#endif
|
|
|
|
|
|
+/* Since 4.6 one can '#pragma GCC diagnostic push/pop'. */
|
|
|
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40600)
|
|
|
#define DUK_USE_GCC_PRAGMAS
|
|
|
#else
|
|
@@ -1198,6 +1281,16 @@
|
|
|
#endif
|
|
|
|
|
|
#define DUK_USE_PACK_GCC_ATTR
|
|
|
+
|
|
|
+/* Availability varies based on platform (between GCC 4.4 and 4.8), and there
|
|
|
+ * are apparently some bugs in GCC 4.x. Check for GCC 5.0 before enabling
|
|
|
+ * these to be safe.
|
|
|
+ */
|
|
|
+#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 50000L)
|
|
|
+#define DUK_BSWAP64(x) ((duk_uint64_t) __builtin_bswap64((duk_uint64_t) (x)))
|
|
|
+#define DUK_BSWAP32(x) ((duk_uint32_t) __builtin_bswap32((duk_uint32_t) (x)))
|
|
|
+#define DUK_BSWAP16(x) ((duk_uint16_t) __builtin_bswap16((duk_uint16_t) (x)))
|
|
|
+#endif
|
|
|
#elif defined(DUK_F_MSVC)
|
|
|
/* --- MSVC --- */
|
|
|
/* http://msdn.microsoft.com/en-us/library/aa235362(VS.60).aspx */
|
|
@@ -2504,7 +2597,7 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_USE_ALIGN_BY 8
|
|
|
#endif
|
|
|
|
|
|
-/* Compiler specific hackery needed to force struct size to match aligment,
|
|
|
+/* Compiler specific hackery needed to force struct size to match alignment,
|
|
|
* see e.g. duk_hbuffer.h.
|
|
|
*
|
|
|
* http://stackoverflow.com/questions/11130109/c-struct-size-alignment
|
|
@@ -2515,6 +2608,13 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_USE_PACK_DUMMY_MEMBER
|
|
|
#endif
|
|
|
|
|
|
+#if !defined(DUK_U64_CONSTANT)
|
|
|
+#define DUK_U64_CONSTANT(x) x##ULL
|
|
|
+#endif
|
|
|
+#if !defined(DUK_I64_CONSTANT)
|
|
|
+#define DUK_I64_CONSTANT(x) x##LL
|
|
|
+#endif
|
|
|
+
|
|
|
#if !defined(DUK_VA_COPY)
|
|
|
/* We need va_copy() which is defined in C99 / C++11, so an awkward
|
|
|
* replacement is needed for pre-C99 / pre-C++11 environments. This
|
|
@@ -2579,12 +2679,15 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_WO_NORETURN(stmt) do { stmt } while (0)
|
|
|
#endif
|
|
|
|
|
|
-#if !defined(DUK_UNREACHABLE)
|
|
|
+#if defined(DUK_UNREACHABLE)
|
|
|
+#define DUK_WO_UNREACHABLE(stmt) do { } while (0)
|
|
|
+#else
|
|
|
/* Don't know how to declare unreachable point, so don't do it; this
|
|
|
* may cause some spurious compilation warnings (e.g. "variable used
|
|
|
* uninitialized").
|
|
|
*/
|
|
|
#define DUK_UNREACHABLE() do { } while (0)
|
|
|
+#define DUK_WO_UNREACHABLE(stmt) do { stmt } while (0)
|
|
|
#endif
|
|
|
|
|
|
#if !defined(DUK_LOSE_CONST)
|
|
@@ -2665,17 +2768,30 @@ typedef struct duk_hthread duk_context;
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
+#if defined(DUK_F_HAVE_64BIT)
|
|
|
+#if !defined(DUK_BSWAP64)
|
|
|
+#define DUK_BSWAP64(x) \
|
|
|
+ ((((duk_uint64_t) (x)) >> 56U) | \
|
|
|
+ ((((duk_uint64_t) (x)) >> 40U) & DUK_U64_CONSTANT(0xff00)) | \
|
|
|
+ ((((duk_uint64_t) (x)) >> 24U) & DUK_U64_CONSTANT(0xff0000)) | \
|
|
|
+ ((((duk_uint64_t) (x)) >> 8U) & DUK_U64_CONSTANT(0xff000000)) | \
|
|
|
+ ((((duk_uint64_t) (x)) << 8U) & DUK_U64_CONSTANT(0xff00000000)) | \
|
|
|
+ ((((duk_uint64_t) (x)) << 24U) & DUK_U64_CONSTANT(0xff0000000000)) | \
|
|
|
+ ((((duk_uint64_t) (x)) << 40U) & DUK_U64_CONSTANT(0xff000000000000)) | \
|
|
|
+ (((duk_uint64_t) (x)) << 56U))
|
|
|
+#endif
|
|
|
+#endif
|
|
|
#if !defined(DUK_BSWAP32)
|
|
|
#define DUK_BSWAP32(x) \
|
|
|
- ((((duk_uint32_t) (x)) >> 24) | \
|
|
|
- ((((duk_uint32_t) (x)) >> 8) & 0xff00UL) | \
|
|
|
- ((((duk_uint32_t) (x)) << 8) & 0xff0000UL) | \
|
|
|
- (((duk_uint32_t) (x)) << 24))
|
|
|
+ ((((duk_uint32_t) (x)) >> 24U) | \
|
|
|
+ ((((duk_uint32_t) (x)) >> 8U) & 0xff00UL) | \
|
|
|
+ ((((duk_uint32_t) (x)) << 8U) & 0xff0000UL) | \
|
|
|
+ (((duk_uint32_t) (x)) << 24U))
|
|
|
#endif
|
|
|
#if !defined(DUK_BSWAP16)
|
|
|
#define DUK_BSWAP16(x) \
|
|
|
- ((duk_uint16_t) (x) >> 8) | \
|
|
|
- ((duk_uint16_t) (x) << 8)
|
|
|
+ ((duk_uint16_t) (x) >> 8U) | \
|
|
|
+ ((duk_uint16_t) (x) << 8U)
|
|
|
#endif
|
|
|
|
|
|
/* DUK_USE_VARIADIC_MACROS: required from compilers, so no fill-in. */
|
|
@@ -2698,13 +2814,6 @@ typedef struct duk_hthread duk_context;
|
|
|
#undef DUK_USE_GCC_PRAGMAS
|
|
|
#endif
|
|
|
|
|
|
-#if !defined(DUK_U64_CONSTANT)
|
|
|
-#define DUK_U64_CONSTANT(x) x##ULL
|
|
|
-#endif
|
|
|
-#if !defined(DUK_I64_CONSTANT)
|
|
|
-#define DUK_I64_CONSTANT(x) x##LL
|
|
|
-#endif
|
|
|
-
|
|
|
/* Workaround for GH-323: avoid inlining control when compiling from
|
|
|
* multiple sources, as it causes compiler portability trouble.
|
|
|
*/
|
|
@@ -2807,7 +2916,8 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_USE_CACHE_ACTIVATION
|
|
|
#define DUK_USE_CACHE_CATCHER
|
|
|
#define DUK_USE_CALLSTACK_LIMIT 10000
|
|
|
-#define DUK_USE_COMMONJS_MODULES
|
|
|
+#define DUK_USE_CBOR_BUILTIN
|
|
|
+#define DUK_USE_CBOR_SUPPORT
|
|
|
#define DUK_USE_COMPILER_RECLIMIT 2500
|
|
|
#define DUK_USE_COROUTINE_SUPPORT
|
|
|
#undef DUK_USE_CPP_EXCEPTIONS
|
|
@@ -2871,7 +2981,7 @@ typedef struct duk_hthread duk_context;
|
|
|
#undef DUK_USE_GC_TORTURE
|
|
|
#undef DUK_USE_GET_MONOTONIC_TIME
|
|
|
#undef DUK_USE_GET_RANDOM_DOUBLE
|
|
|
-#undef DUK_USE_GLOBAL_BINDING
|
|
|
+#define DUK_USE_GLOBAL_BINDING
|
|
|
#define DUK_USE_GLOBAL_BUILTIN
|
|
|
#undef DUK_USE_HEAPPTR16
|
|
|
#undef DUK_USE_HEAPPTR_DEC16
|
|
@@ -2879,6 +2989,7 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_USE_HEX_FASTPATH
|
|
|
#define DUK_USE_HEX_SUPPORT
|
|
|
#define DUK_USE_HOBJECT_ARRAY_ABANDON_LIMIT 2
|
|
|
+#define DUK_USE_HOBJECT_ARRAY_ABANDON_MINSIZE 257
|
|
|
#define DUK_USE_HOBJECT_ARRAY_FAST_RESIZE_LIMIT 9
|
|
|
#define DUK_USE_HOBJECT_ARRAY_MINGROW_ADD 16
|
|
|
#define DUK_USE_HOBJECT_ARRAY_MINGROW_DIVISOR 8
|
|
@@ -2912,6 +3023,7 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_USE_MARK_AND_SWEEP_RECLIMIT 256
|
|
|
#define DUK_USE_MATH_BUILTIN
|
|
|
#define DUK_USE_NATIVE_CALL_RECLIMIT 1000
|
|
|
+#undef DUK_USE_NATIVE_STACK_CHECK
|
|
|
#define DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT
|
|
|
#undef DUK_USE_NONSTD_FUNC_CALLER_PROPERTY
|
|
|
#undef DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY
|
|
@@ -2962,12 +3074,11 @@ typedef struct duk_hthread duk_context;
|
|
|
#define DUK_USE_STRTAB_RESIZE_CHECK_MASK 255
|
|
|
#define DUK_USE_STRTAB_SHRINK_LIMIT 6
|
|
|
#undef DUK_USE_STRTAB_TORTURE
|
|
|
-#undef DUK_USE_SYMBOL_BUILTIN
|
|
|
+#define DUK_USE_SYMBOL_BUILTIN
|
|
|
#define DUK_USE_TAILCALL
|
|
|
#define DUK_USE_TARGET_INFO "unknown"
|
|
|
#define DUK_USE_TRACEBACKS
|
|
|
#define DUK_USE_TRACEBACK_DEPTH 10
|
|
|
-#define DUK_USE_USER_DECLARE() /* no user declarations */
|
|
|
#define DUK_USE_VALSTACK_GROW_SHIFT 2
|
|
|
#define DUK_USE_VALSTACK_LIMIT 1000000L
|
|
|
#define DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT 2
|
|
@@ -3383,6 +3494,9 @@ typedef struct duk_hthread duk_context;
|
|
|
#if defined(DUK_USE_BYTEORDER_FORCED)
|
|
|
#error unsupported config option used (option has been removed): DUK_USE_BYTEORDER_FORCED
|
|
|
#endif
|
|
|
+#if defined(DUK_USE_COMMONJS_MODULES)
|
|
|
+#error unsupported config option used (option has been removed): DUK_USE_COMMONJS_MODULES
|
|
|
+#endif
|
|
|
#if defined(DUK_USE_DATAPTR_DEC16) && !defined(DUK_USE_DATAPTR16)
|
|
|
#error config option DUK_USE_DATAPTR_DEC16 requires option DUK_USE_DATAPTR16 (which is missing)
|
|
|
#endif
|
|
@@ -3629,6 +3743,9 @@ typedef struct duk_hthread duk_context;
|
|
|
#if defined(DUK_USE_UNDERSCORE_SETJMP)
|
|
|
#error unsupported config option used (option has been removed): DUK_USE_UNDERSCORE_SETJMP
|
|
|
#endif
|
|
|
+#if defined(DUK_USE_USER_DECLARE)
|
|
|
+#error unsupported config option used (option has been removed): DUK_USE_USER_DECLARE
|
|
|
+#endif
|
|
|
#if defined(DUK_USE_USER_INITJS)
|
|
|
#error unsupported config option used (option has been removed): DUK_USE_USER_INITJS
|
|
|
#endif
|