From c01f24f5e45a9a14c0a668fd79dc48136e3c65d9 Mon Sep 17 00:00:00 2001 From: Joshua Behrens Date: Sat, 7 Sep 2024 16:05:07 +0200 Subject: [PATCH 1/4] Split include and lib directory variables Solves #522 Solves #529 --- config.m4 | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/config.m4 b/config.m4 index 9cb3b16..b42a0ea 100644 --- a/config.m4 +++ b/config.m4 @@ -3,8 +3,8 @@ PHP_ARG_WITH(v8js, for V8 Javascript Engine, if test "$PHP_V8JS" != "no"; then SEARCH_PATH="/usr/local /usr" - SEARCH_FOR="$PHP_LIBDIR/libv8.$SHLIB_SUFFIX_NAME" - + SEARCH_FOR="libv8.$SHLIB_SUFFIX_NAME" + if test -r $PHP_V8JS/$SEARCH_FOR; then case $host_os in darwin* ) @@ -14,26 +14,28 @@ if test "$PHP_V8JS" != "no"; then LDFLAGS="$LDFLAGS -Wl,--rpath=$PHP_V8JS/$PHP_LIBDIR" ;; esac - V8_DIR=$PHP_V8JS + V8_INCLUDE_DIR=$PHP_V8JS/include/v8 + V8_LIBRARY_DIR=$PHP_V8JS/$PHP_LIBDIR else AC_MSG_CHECKING([for V8 files in default path]) for i in $SEARCH_PATH ; do - if test -r $i/$SEARCH_FOR; then - V8_DIR=$i + if test -r $i/$PHP_LIBDIR/$SEARCH_FOR; then + V8_INCLUDE_DIR=$i/include/v8 + V8_LIBRARY_DIR=$i/$PHP_LIBDIR AC_MSG_RESULT(found in $i) fi done fi - AC_DEFINE_UNQUOTED([PHP_V8_EXEC_PATH], "$V8_DIR/$SEARCH_FOR", [Full path to libv8 library file]) + AC_DEFINE_UNQUOTED([PHP_V8_EXEC_PATH], "$V8_LIBRARY_DIR/$SEARCH_FOR", [Full path to libv8 library file]) - if test -z "$V8_DIR"; then + if test -z "$V8_INCLUDE_DIR" || test -z "$V8_LIBRARY_DIR"; then AC_MSG_RESULT([not found]) AC_MSG_ERROR([Please reinstall the v8 distribution]) fi - PHP_ADD_INCLUDE($V8_DIR/include) - PHP_ADD_LIBRARY_WITH_PATH(v8, $V8_DIR/$PHP_LIBDIR, V8JS_SHARED_LIBADD) + PHP_ADD_INCLUDE($V8_INCLUDE_DIR) + PHP_ADD_LIBRARY_WITH_PATH(v8, $V8_LIBRARY_DIR, V8JS_SHARED_LIBADD) PHP_SUBST(V8JS_SHARED_LIBADD) PHP_REQUIRE_CXX() @@ -89,8 +91,8 @@ if test "$PHP_V8JS" != "no"; then AC_LANG_PUSH([C++]) - CPPFLAGS="$CPPFLAGS -I$V8_DIR/include -std=$ac_cv_v8_cstd" - LDFLAGS="$LDFLAGS -L$V8_DIR/$PHP_LIBDIR" + CPPFLAGS="$CPPFLAGS -I$V8_INCLUDE_DIR -std=$ac_cv_v8_cstd" + LDFLAGS="$LDFLAGS -L$V8_LIBRARY_DIR" AC_MSG_CHECKING([for libv8_libplatform]) AC_DEFUN([V8_CHECK_LINK], [ @@ -161,7 +163,7 @@ int main () AC_MSG_CHECKING([for $1]) blob_found=0 - for i in "$V8_DIR/$PHP_LIBDIR" "$V8_DIR/share/v8"; do + for i in "$V8_LIBRARY_DIR" "$V8_INCLUDE_DIR/../share/v8"; do if test -r "$i/$1"; then AC_MSG_RESULT([found ($i/$1)]) AC_DEFINE_UNQUOTED([$2], "$i/$1", [Full path to $1 file]) @@ -219,7 +221,7 @@ int main () AC_DEFINE([V8_DEPRECATION_WARNINGS], [1], [Enable compiler warnings when using V8_DEPRECATED apis.]) - PHP_ADD_INCLUDE($V8_DIR) + PHP_ADD_INCLUDE($V8_INCLUDE_DIR) PHP_NEW_EXTENSION(v8js, [ \ v8js_array_access.cc \ v8js_class.cc \ From be6e1a809af25f9cc1fb8741878606852d4e58dd Mon Sep 17 00:00:00 2001 From: Joshua Behrens Date: Sat, 7 Sep 2024 16:08:04 +0200 Subject: [PATCH 2/4] Add opinionated checks for installations on debian 12 and different architectures --- config.m4 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/config.m4 b/config.m4 index b42a0ea..3cad7b0 100644 --- a/config.m4 +++ b/config.m4 @@ -18,12 +18,20 @@ if test "$PHP_V8JS" != "no"; then V8_LIBRARY_DIR=$PHP_V8JS/$PHP_LIBDIR else AC_MSG_CHECKING([for V8 files in default path]) + ARCH=$(uname -m) + for i in $SEARCH_PATH ; do if test -r $i/$PHP_LIBDIR/$SEARCH_FOR; then V8_INCLUDE_DIR=$i/include/v8 V8_LIBRARY_DIR=$i/$PHP_LIBDIR AC_MSG_RESULT(found in $i) fi + + if test -r $i/$PHP_LIBDIR/$ARCH-linux-gnu/$SEARCH_FOR; then + V8_INCLUDE_DIR=$i/include/v8 + V8_LIBRARY_DIR=$i/$PHP_LIBDIR/$ARCH-linux-gnu + AC_MSG_RESULT(found in $i) + fi done fi From 66d155679bb314e8e123353a7f692192840f8d8e Mon Sep 17 00:00:00 2001 From: Joshua Behrens Date: Sat, 7 Sep 2024 23:43:20 +0200 Subject: [PATCH 3/4] Restructure code so an always false condition is moved to skimming loop --- config.m4 | 56 +++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/config.m4 b/config.m4 index 3cad7b0..21a9b32 100644 --- a/config.m4 +++ b/config.m4 @@ -5,36 +5,36 @@ if test "$PHP_V8JS" != "no"; then SEARCH_PATH="/usr/local /usr" SEARCH_FOR="libv8.$SHLIB_SUFFIX_NAME" - if test -r $PHP_V8JS/$SEARCH_FOR; then - case $host_os in - darwin* ) - # MacOS does not support --rpath - ;; - * ) - LDFLAGS="$LDFLAGS -Wl,--rpath=$PHP_V8JS/$PHP_LIBDIR" - ;; - esac - V8_INCLUDE_DIR=$PHP_V8JS/include/v8 - V8_LIBRARY_DIR=$PHP_V8JS/$PHP_LIBDIR - else - AC_MSG_CHECKING([for V8 files in default path]) - ARCH=$(uname -m) - - for i in $SEARCH_PATH ; do - if test -r $i/$PHP_LIBDIR/$SEARCH_FOR; then - V8_INCLUDE_DIR=$i/include/v8 - V8_LIBRARY_DIR=$i/$PHP_LIBDIR - AC_MSG_RESULT(found in $i) - fi - - if test -r $i/$PHP_LIBDIR/$ARCH-linux-gnu/$SEARCH_FOR; then - V8_INCLUDE_DIR=$i/include/v8 - V8_LIBRARY_DIR=$i/$PHP_LIBDIR/$ARCH-linux-gnu - AC_MSG_RESULT(found in $i) - fi - done + if test -d "$PHP_V8JS"; then + SEARCH_PATH="$PHP_V8JS $SEARCH_PATH" fi + case $host_os in + darwin* ) + # MacOS does not support --rpath + ;; + * ) + LDFLAGS="$LDFLAGS -Wl,--rpath=$PHP_V8JS/$PHP_LIBDIR" + ;; + esac + + AC_MSG_CHECKING([for V8 files in default path]) + ARCH=$(uname -m) + + for i in $SEARCH_PATH ; do + if test -r $i/$PHP_LIBDIR/$SEARCH_FOR; then + V8_INCLUDE_DIR=$i/include/v8 + V8_LIBRARY_DIR=$i/$PHP_LIBDIR + AC_MSG_RESULT(found in $i) + fi + + if test -r $i/$PHP_LIBDIR/$ARCH-linux-gnu/$SEARCH_FOR; then + V8_INCLUDE_DIR=$i/include/v8 + V8_LIBRARY_DIR=$i/$PHP_LIBDIR/$ARCH-linux-gnu + AC_MSG_RESULT(found in $i) + fi + done + AC_DEFINE_UNQUOTED([PHP_V8_EXEC_PATH], "$V8_LIBRARY_DIR/$SEARCH_FOR", [Full path to libv8 library file]) if test -z "$V8_INCLUDE_DIR" || test -z "$V8_LIBRARY_DIR"; then From 32aa91305dab6ae6c2a4e34efbbaeb2b9276c4bc Mon Sep 17 00:00:00 2001 From: Joshua Behrens Date: Sun, 8 Sep 2024 01:11:00 +0200 Subject: [PATCH 4/4] Allow manual path assignments still match a {lib,include} pattern --- config.m4 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/config.m4 b/config.m4 index 21a9b32..59fd2c9 100644 --- a/config.m4 +++ b/config.m4 @@ -28,11 +28,19 @@ if test "$PHP_V8JS" != "no"; then AC_MSG_RESULT(found in $i) fi + # Debian installations if test -r $i/$PHP_LIBDIR/$ARCH-linux-gnu/$SEARCH_FOR; then V8_INCLUDE_DIR=$i/include/v8 V8_LIBRARY_DIR=$i/$PHP_LIBDIR/$ARCH-linux-gnu AC_MSG_RESULT(found in $i) fi + + # Manual installations + if test -r $i/$PHP_LIBDIR/$SEARCH_FOR && test -r $i/include/libplatform/libplatform.h; then + V8_INCLUDE_DIR=$i/include + V8_LIBRARY_DIR=$i/$PHP_LIBDIR + AC_MSG_RESULT(found in $i) + fi done AC_DEFINE_UNQUOTED([PHP_V8_EXEC_PATH], "$V8_LIBRARY_DIR/$SEARCH_FOR", [Full path to libv8 library file])