From 662b88b605bd686f843296e372a5309555f2e88e Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Wed, 3 Aug 2022 23:07:02 +0100 Subject: [PATCH] JavaScript Webkit testing and detection changes Add testing for javascriptcoregtk-4.1. Simplify configure detection of JSC, relying only only pkg-config. Add javascriptcoregtk-4.1 tests to GHA. --- .github/workflows/ci.yml | 5 ++ Tools/CI-linux-install.sh | 2 +- configure.ac | 103 +++++++++++++++++--------------------- 3 files changed, 53 insertions(+), 57 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2166d9879..a7c89728e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,6 +97,11 @@ jobs: CPPSTD: c++14 - SWIGLANG: javascript ENGINE: jsc + VER: '4.0' + - SWIGLANG: javascript + ENGINE: jsc + VER: '4.1' + os: ubuntu-22.04 - SWIGLANG: lua - SWIGLANG: lua VER: '5.3' diff --git a/Tools/CI-linux-install.sh b/Tools/CI-linux-install.sh index ea811f506..fb3e57de9 100644 --- a/Tools/CI-linux-install.sh +++ b/Tools/CI-linux-install.sh @@ -54,7 +54,7 @@ case "$SWIGLANG" in fi ;; "jsc") - $RETRY sudo apt-get install -qq libjavascriptcoregtk-4.0-dev + $RETRY sudo apt-get install -qq libjavascriptcoregtk-${VER}-dev ;; "v8") $RETRY sudo apt-get install -qq libv8-dev diff --git a/configure.ac b/configure.ac index fd2438dec..242124205 100644 --- a/configure.ac +++ b/configure.ac @@ -1640,69 +1640,60 @@ else fi #---------------------------------------------------------------- - # Look for JavascriptCore (Webkit) settings (JSCOREINCDIR, JSCOREDYNAMICLINKING) + # Look for JavaScriptCore (Webkit) settings #---------------------------------------------------------------- # check for include files - AC_MSG_CHECKING(for JavaScriptCore/JavaScript.h) - AC_ARG_WITH(jscoreinc, [ --with-jscoreinc=path Set location of Javascript include directory], [JSCOREINCDIR="$withval"], [JSCOREINCDIR=]) - - JSCOREVERSION= - - if test -z "$JSCOREINCDIR"; then - JSCOREINCDIR="/usr/include/ /usr/local/include/" - - # Add in default directory for JavaScriptCore headers for Linux and Mac OS X - case $host in - *-*-linux*) - JSCOREINCDIR="/usr/include/webkit-1.0/ /usr/include/webkitgtk-1.0/ /usr/local/include/webkit-1.0/JavaScriptCore/ $JSCOREINCDIR" - ;; - *-*-darwin*) - JSCOREINCDIR="/System/Library/Frameworks/JavaScriptCore.framework/Headers/ $JSCOREINCDIR" - ;; - *) - ;; - esac - fi - - for d in $JSCOREINCDIR ; do - if test -r "$d/JavaScriptCore/JavaScript.h" || test -r "$d/JavaScript.h" ; then - AC_MSG_RESULT($d) - JSCOREINCDIR=$d - JSCOREINC=-I\"$d\" - break - fi - done - - if test "$JSCOREINC" = "" ; then - AC_MSG_RESULT(not found) - fi - + AC_ARG_WITH(jscoreinc, [ --with-jscoreinc=path Set location of JavaScriptCore/Webkit include directory], [JSCOREINCDIR="$withval"], [JSCOREINCDIR=]) # check for JavaScriptCore/Webkit libraries AC_ARG_WITH(jscorelib,[ --with-jscorelib=path Set location of the JavaScriptCore/Webkit library directory],[JSCORELIB="-L$withval"], [JSCORELIB=]) - if test -z "$JSCORELIB" -a -n "$PKG_CONFIG "; then - AC_MSG_CHECKING(for JavaScriptCore/Webkit library) - if $PKG_CONFIG javascriptcoregtk-4.0 2>/dev/null ; then - JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-4.0` - JSCOREINC=`$PKG_CONFIG --cflags-only-I javascriptcoregtk-4.0` - JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-4.0` - elif $PKG_CONFIG javascriptcoregtk-3.0 2>/dev/null ; then - JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-3.0` - JSCOREINC=`$PKG_CONFIG --cflags-only-I javascriptcoregtk-3.0` - JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-3.0` - elif $PKG_CONFIG javascriptcoregtk-1.0 2>/dev/null ; then - JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-1.0` - JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-1.0` - fi - if test -z "$JSCORELIB"; then - AC_MSG_RESULT(not found) - JSCENABLED= - else - AC_MSG_RESULT([$JSCORELIB]) - JSCOREDYNAMICLINKING="$JSCORELIB" - JSCENABLED=1 + JSCOREVERSION= + + if test -z "$JSCOREINCDIR" -a -n "$JSCORELIB"; then + AC_MSG_ERROR([Either both or none of --with-jcoreinc --with-jscorelib should be specified]) + elif test -n "$JSCOREINCDIR" -a -z "$JSCORELIB"; then + AC_MSG_ERROR([Either both or none of --with-jcoreinc --with-jscorelib should be specified]) + elif test -z "$JSCOREINCDIR" -a -z "$JSCORELIB"; then + if test -z "$JSCORELIB" -a -n "$PKG_CONFIG "; then + AC_MSG_CHECKING(for JavaScriptCore/Webkit) + if $PKG_CONFIG javascriptcoregtk-4.1 2>/dev/null ; then + JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-4.1` + JSCOREINC=`$PKG_CONFIG --cflags-only-I javascriptcoregtk-4.1` + JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-4.1` + elif $PKG_CONFIG javascriptcoregtk-4.0 2>/dev/null ; then + JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-4.0` + JSCOREINC=`$PKG_CONFIG --cflags-only-I javascriptcoregtk-4.0` + JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-4.0` + elif $PKG_CONFIG javascriptcoregtk-3.0 2>/dev/null ; then + JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-3.0` + JSCOREINC=`$PKG_CONFIG --cflags-only-I javascriptcoregtk-3.0` + JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-3.0` + elif $PKG_CONFIG javascriptcoregtk-1.0 2>/dev/null ; then + JSCORELIB=`$PKG_CONFIG --libs javascriptcoregtk-1.0` + JSCOREVERSION=`$PKG_CONFIG --modversion javascriptcoregtk-1.0` + fi + if test -z "$JSCORELIB"; then + AC_MSG_RESULT(not found) + JSCENABLED= + else + AC_MSG_RESULT([version $JSCOREVERSION]) + AC_MSG_CHECKING(for JavaScriptCore/Webkit include flags) + AC_MSG_RESULT([$JSCOREINC]) + AC_MSG_CHECKING(for JavaScriptCore/Webkit link flags) + AC_MSG_RESULT([$JSCORELIB]) + JSCOREDYNAMICLINKING="$JSCORELIB" + JSCENABLED=1 + fi fi + else + AC_MSG_CHECKING(for JavaScriptCore/Webkit include flags) + JSCOREINC=-I\"$JSCOREINCDIR\" + AC_MSG_RESULT([$JSCOREINC]) + AC_MSG_CHECKING(for JavaScriptCore/Webkit link flags) + AC_MSG_RESULT([$JSCORELIB]) + JSCOREDYNAMICLINKING="$JSCORELIB" + JSCENABLED=1 fi #----------------------------------------------------------------