From f25d26de776f9927e1d2c92f031085a9b9323087 Mon Sep 17 00:00:00 2001 From: Qing He Date: Tue, 10 Aug 2010 13:35:21 +0800 Subject: js: fix configure use autoconf to generate jsautocfg.h instead of preparing different headers for different archs size_of and align_of tests also work under cross-compilation. Signed-off-by: Qing He --- meta/packages/js/files/configure.ac | 28 ++++++++++ meta/packages/js/files/jsautocfg.h | 104 +++++++++++++++++++++--------------- 2 files changed, 90 insertions(+), 42 deletions(-) create mode 100644 meta/packages/js/files/configure.ac (limited to 'meta/packages/js/files') diff --git a/meta/packages/js/files/configure.ac b/meta/packages/js/files/configure.ac new file mode 100644 index 000000000..41af29845 --- /dev/null +++ b/meta/packages/js/files/configure.ac @@ -0,0 +1,28 @@ +AC_INIT + +AC_CHECK_SIZEOF([char]) +AC_CHECK_SIZEOF([short]) +AC_CHECK_SIZEOF([int]) +AC_CHECK_SIZEOF([int64_t]) +AC_CHECK_SIZEOF([long]) +AC_CHECK_SIZEOF([long long]) +AC_CHECK_SIZEOF([int *]) +AC_CHECK_SIZEOF([float]) +AC_CHECK_SIZEOF([double]) + +AC_CHECK_ALIGNOF([char]) +AC_CHECK_ALIGNOF([short]) +AC_CHECK_ALIGNOF([int]) +AC_CHECK_ALIGNOF([int64_t]) +AC_CHECK_ALIGNOF([long]) +AC_CHECK_ALIGNOF([long long]) +AC_CHECK_ALIGNOF([int *]) +AC_CHECK_ALIGNOF([float]) +AC_CHECK_ALIGNOF([double]) + +AC_C_BIGENDIAN + +AC_TYPE_LONG_LONG_INT + +AC_CONFIG_HEADER([conf.h]) +AC_OUTPUT diff --git a/meta/packages/js/files/jsautocfg.h b/meta/packages/js/files/jsautocfg.h index efaf807ac..16e38bf8d 100644 --- a/meta/packages/js/files/jsautocfg.h +++ b/meta/packages/js/files/jsautocfg.h @@ -3,52 +3,72 @@ /* AUTOMATICALLY GENERATED - DO NOT EDIT */ -#define IS_LITTLE_ENDIAN 1 -#undef IS_BIG_ENDIAN - -#define JS_BYTES_PER_BYTE 1L -#define JS_BYTES_PER_SHORT 2L -#define JS_BYTES_PER_INT 4L -#define JS_BYTES_PER_INT64 8L -#define JS_BYTES_PER_LONG 8L -#define JS_BYTES_PER_FLOAT 4L -#define JS_BYTES_PER_DOUBLE 8L -#define JS_BYTES_PER_WORD 4L -#define JS_BYTES_PER_DWORD 8L +#include "../conf.h" + +#ifdef WORDS_BIGENDIAN +# undef IS_LITTLE_ENDIAN +# define IS_BIG_ENDIAN 1 +#else +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +#endif + +#define __I_LOG2(n) ( \ + ((n) == 1)? 0: \ + ((n) == 2)? 1: \ + ((n) == 4)? 2: \ + ((n) == 8)? 3: \ + ((n) == 16)? 4: \ + ((n) == 32)? 5: \ + ((n) == 64)? 6: \ + ((n) == 128)? 7: \ + -1) + +#define JS_BYTES_PER_BYTE SIZEOF_CHAR +#define JS_BYTES_PER_SHORT SIZEOF_SHORT +#define JS_BYTES_PER_INT SIZEOF_INT +#define JS_BYTES_PER_INT64 SIZEOF_INT64_T +#define JS_BYTES_PER_LONG SIZEOF_LONG +#define JS_BYTES_PER_FLOAT SIZEOF_FLOAT +#define JS_BYTES_PER_DOUBLE SIZEOF_DOUBLE +#define JS_BYTES_PER_WORD SIZEOF_LONG +#define JS_BYTES_PER_DWORD SIZEOF_LONG_LONG #define JS_BITS_PER_BYTE 8L -#define JS_BITS_PER_SHORT 16L -#define JS_BITS_PER_INT 32L -#define JS_BITS_PER_INT64 64L -#define JS_BITS_PER_LONG 64L -#define JS_BITS_PER_FLOAT 32L -#define JS_BITS_PER_DOUBLE 64L -#define JS_BITS_PER_WORD 32L - -#define JS_BITS_PER_BYTE_LOG2 3L -#define JS_BITS_PER_SHORT_LOG2 4L -#define JS_BITS_PER_INT_LOG2 5L -#define JS_BITS_PER_INT64_LOG2 6L -#define JS_BITS_PER_LONG_LOG2 6L -#define JS_BITS_PER_FLOAT_LOG2 5L -#define JS_BITS_PER_DOUBLE_LOG2 6L -#define JS_BITS_PER_WORD_LOG2 3L - -#define JS_ALIGN_OF_SHORT 2L -#define JS_ALIGN_OF_INT 4L -#define JS_ALIGN_OF_LONG 8L -#define JS_ALIGN_OF_INT64 8L -#define JS_ALIGN_OF_FLOAT 4L -#define JS_ALIGN_OF_DOUBLE 8L -#define JS_ALIGN_OF_POINTER 8L -#define JS_ALIGN_OF_WORD 4L - -#define JS_BYTES_PER_WORD_LOG2 2L -#define JS_BYTES_PER_DWORD_LOG2 3L -#define JS_WORDS_PER_DWORD_LOG2 0L +#define JS_BITS_PER_SHORT (JS_BITS_PER_BYTE * JS_BYTES_PER_SHORT) +#define JS_BITS_PER_INT (JS_BITS_PER_BYTE * JS_BYTES_PER_INT) +#define JS_BITS_PER_INT64 (JS_BITS_PER_BYTE * JS_BYTES_PER_INT64) +#define JS_BITS_PER_LONG (JS_BITS_PER_BYTE * JS_BYTES_PER_LONG) +#define JS_BITS_PER_FLOAT (JS_BITS_PER_BYTE * JS_BYTES_PER_GLOAT) +#define JS_BITS_PER_DOUBLE (JS_BITS_PER_BYTE * JS_BYTES_PER_DOUBLE) +#define JS_BITS_PER_WORD (JS_BITS_PER_BYTE * JS_BYTES_PER_WORD) + +#define JS_BITS_PER_BYTE_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_SHORT_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_INT_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_INT64_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_LONG_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_FLOAT_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_DOUBLE_LOG2 __I_LOG2(JS_BITS_PER_BYTE) +#define JS_BITS_PER_WORD_LOG2 __I_LOG2(JS_BITS_PER_BYTE) + +#define JS_ALIGN_OF_SHORT ALIGNOF_SHORT +#define JS_ALIGN_OF_INT ALIGNOF_INT +#define JS_ALIGN_OF_LONG ALIGNOF_LONG +#define JS_ALIGN_OF_INT64 ALIGNOF_INT64_T +#define JS_ALIGN_OF_FLOAT ALIGNOF_FLOAT +#define JS_ALIGN_OF_DOUBLE ALIGNOF_DOUBLE +#define JS_ALIGN_OF_POINTER ALIGNOF_INT_P +#define JS_ALIGN_OF_WORD ALIGNOF_LONG + +#define JS_BYTES_PER_WORD_LOG2 __I_LOG2(JS_BYTES_PER_WORD) +#define JS_BYTES_PER_DWORD_LOG2 __I_LOG2(JS_BYTES_PER_DWORDS) +#define JS_WORDS_PER_DWORD_LOG2 __I_LOG2(JS_BYTES_PER_DWORDS / JS_BYTES_PER_WORD) #define JS_STACK_GROWTH_DIRECTION (-1) -#define JS_HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT +# define JS_HAVE_LONG_LONG +#endif #endif /* js_cpucfg___ */ -- cgit v1.2.3