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 <qing.he@intel.com>
This commit is contained in:
Qing He 2010-08-10 13:35:21 +08:00
parent 15ecd98c54
commit f25d26de77
3 changed files with 98 additions and 45 deletions

View File

@ -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

View File

@ -3,52 +3,72 @@
/* AUTOMATICALLY GENERATED - DO NOT EDIT */
#define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN
#include "../conf.h"
#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
#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_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 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_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 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_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 2L
#define JS_BYTES_PER_DWORD_LOG2 3L
#define JS_WORDS_PER_DWORD_LOG2 0L
#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___ */

View File

@ -5,26 +5,31 @@ SECTION = "libs"
# the package is licensed under either of the following
LICENSE = "MPL1.1 | GPLv2+ | LGPLv2.1+"
LIC_FILES_CHKSUM = "file://jsapi.c;beginline=4;endline=39;md5=347c6bbf4fb4547de1fa5ad830030063"
PR = "r0"
PR = "r1"
SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz \
file://link_with_gcc.patch \
file://usepic.patch \
file://buildcc.patch;striplevel=2 \
file://jsautocfg.h"
file://jsautocfg.h \
file://configure.ac"
S = "${WORKDIR}/js/src"
# use local autoconf script to generate a usable jsautocfg.h
# don't bother with automake
inherit autotools
do_configure_prepend() {
cp -f ${WORKDIR}/configure.ac ${S}
cp -f ${WORKDIR}/jsautocfg.h ${S}
}
EXTRA_OEMAKE = "'CC=${CC}' 'LD=${LD}' 'XCFLAGS=${CFLAGS}' 'XLDFLAGS=${LDFLAGS} -Wl,-soname=libjs' \
'BUILD_CC=${BUILD_CC}' 'BUILD_CFLAGS=${BUILD_CFLAGS}' 'BUILD_LDFLAGS=${BUILD_LDFLAGS}'"
PARALLEL_MAKE = ""
# XXX: this is only guaranteed to work for i386 targets!
do_compile_prepend() {
cp ${WORKDIR}/jsautocfg.h ${S}/
}
do_compile() {
oe_runmake -f Makefile.ref JS_EDITLINE=1 PREBUILT_CPUCFG=1 BUILD_OPT=1
}