From ea6d4e94c802f648e296eec0bde1661728d82024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 30 Sep 2009 15:48:07 +0200 Subject: Add configure flags to force turning on or off JavaScriptCore JIT Also add configure test to see if arm toolchain can compile JavaScript JIT Task-number:QTBUG-4632 Reviewed-by:Simon Hausmann , Marius Storm-Olsen --- .../unix/javascriptcore-jit/hwcap_test.cpp | 46 ++++++++++++++++++++++ .../unix/javascriptcore-jit/javascriptcore-jit.pro | 2 + configure | 37 ++++++++++++++++- .../JavaScriptCore/JavaScriptCore.pri | 3 ++ .../webkit/JavaScriptCore/JavaScriptCore.pri | 2 + 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 config.tests/unix/javascriptcore-jit/hwcap_test.cpp create mode 100644 config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro diff --git a/config.tests/unix/javascriptcore-jit/hwcap_test.cpp b/config.tests/unix/javascriptcore-jit/hwcap_test.cpp new file mode 100644 index 0000000..f0f5d40 --- /dev/null +++ b/config.tests/unix/javascriptcore-jit/hwcap_test.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include + +int main (int argc, char **argv) +{ + return 0; +} diff --git a/config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro b/config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro new file mode 100644 index 0000000..0d5a20d --- /dev/null +++ b/config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro @@ -0,0 +1,2 @@ +SOURCES = hwcap_test.cpp +CONFIG -= qt dylib diff --git a/configure b/configure index e86d008..1430d78 100755 --- a/configure +++ b/configure @@ -673,6 +673,7 @@ CFG_PHONON_BACKEND=yes CFG_MULTIMEDIA=yes CFG_SVG=yes CFG_WEBKIT=auto # (yes|no|auto) +CFG_JAVASCRIPTCORE_JIT=auto CFG_GFX_AVAILABLE="linuxfb transformed qvfb vnc multiscreen directfb" CFG_GFX_ON="linuxfb multiscreen" @@ -911,7 +912,7 @@ while [ "$#" -gt 0 ]; do VAL=no ;; #Qt style yes options - -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-svg|-webkit|-script|-scripttools|-rpath|-force-pkg-config) + -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-svg|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config) VAR=`echo $1 | sed "s,^-\(.*\),\1,"` VAL=yes ;; @@ -1854,6 +1855,13 @@ while [ "$#" -gt 0 ]; do fi fi ;; + javascript-jit) + if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ] || [ "$VAL" = "no" ]; then + CFG_JAVASCRIPTCORE_JIT="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; confirm-license) if [ "$VAL" = "yes" ]; then OPT_CONFIRM_LICENSE="$VAL" @@ -3225,7 +3233,7 @@ Usage: $relconf [-h] [-prefix ] [-prefix-install] [-bindir ] [-libdir [-no-optimized-qmake] [-optimized-qmake] [-no-xmlpatterns] [-xmlpatterns] [-no-multimedia] [-multimedia] [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend] [-no-openssl] [-openssl] [-openssl-linked] - [-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] + [-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] [-no-javascript-jit] [-javascript-jit] [-no-script] [-script] [-no-scripttools] [-scripttools] [additional platform specific options (see below)] @@ -3375,6 +3383,9 @@ fi + -webkit ............ Build the WebKit module. WebKit is built if a decent C++ compiler is used. + -no-javascript-jit . Do not build the JavaScriptCore JIT compiler. + + -javascript-jit .... Build the JavaScriptCore JIT compiler. + -no-script ......... Do not build the QtScript module. + -script ............ Build the QtScript module. @@ -5757,6 +5768,21 @@ if [ "$CFG_ALSA" = "auto" ]; then fi fi +if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ] || [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then + if [ "$CFG_ARCH" = "arm" ] || [ "$CFG_ARCH" = "armv6" ]; then + "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/javascriptcore-jit "javascriptcore-jit" $L_FLAGS $I_FLAGS $l_FLAGS + if [ $? != "0" ]; then + CFG_JAVASCRIPTCORE_JIT=no + fi + fi +fi + +if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ]; then + QMakeVar set JAVASCRIPTCORE_JIT yes +elif [ "$CFG_JAVASCRIPTCORE_JIT" = "no" ]; then + QMakeVar set JAVASCRIPTCORE_JIT no +fi + #------------------------------------------------------------------------------- # ask for all that hasn't been auto-detected or specified in the arguments #------------------------------------------------------------------------------- @@ -7268,6 +7294,13 @@ echo "Phonon module ....... $CFG_PHONON" echo "Multimedia module ... $CFG_MULTIMEDIA" echo "SVG module .......... $CFG_SVG" echo "WebKit module ....... $CFG_WEBKIT" +if [ "$CFG_WEBKIT" = "yes" ]; then + if [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then + echo "JavaScriptCore JIT .. To be decided by JavaScriptCore" + else + echo "JavaScriptCore JIT .. $CFG_JAVASCRIPTCORE_JIT" + fi +fi echo "STL support ......... $CFG_STL" echo "PCH support ......... $CFG_PRECOMPILE" echo "MMX/3DNOW/SSE/SSE2.. ${CFG_MMX}/${CFG_3DNOW}/${CFG_SSE}/${CFG_SSE2}" diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri index 8483469..965f3d6 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri @@ -37,6 +37,9 @@ win32-* { LIBS += -lwinmm } +contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1 +contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0 + # In debug mode JIT disabled until crash fixed win32-* { CONFIG(debug):!contains(DEFINES, ENABLE_JIT=1): DEFINES+=ENABLE_JIT=0 diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri index 73791e0..d8b6f4b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri @@ -36,6 +36,8 @@ GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP} win32-* { LIBS += -lwinmm } +contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1 +contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0 # In debug mode JIT disabled until crash fixed win32-* { -- cgit v0.12