wez Sun Jul 18 08:03:51 2004 EDT Added files: /php-src/build order_by_dep.awk
Modified files: /php-src acinclude.m4 configure.in /php-src/build genif.sh /php-src/ext/dom config.m4 /php-src/ext/simplexml config.m4 /php-src/ext/spl config.m4 /php-src/ext/xml config.m4 /php-src/ext/xsl config.m4 Log: Implement extension load-order deps.
http://cvs.php.net/diff.php/php-src/acinclude.m4?r1=1.271&r2=1.272&ty=u Index: php-src/acinclude.m4 diff -u php-src/acinclude.m4:1.271 php-src/acinclude.m4:1.272 --- php-src/acinclude.m4:1.271 Fri Mar 26 21:03:44 2004 +++ php-src/acinclude.m4 Sun Jul 18 08:03:51 2004 @@ -1,4 +1,4 @@ -dnl $Id: acinclude.m4,v 1.271 2004/03/27 02:03:44 abies Exp $ +dnl $Id: acinclude.m4,v 1.272 2004/07/18 12:03:51 wez Exp $ dnl dnl This file contains local autoconf functions. @@ -1920,3 +1920,14 @@ LIBS=$old_LIBS ]) ]) + +dnl This macro is currently a placeholder in the config.m4 file +dnl it is scanned by genif.sh when it builds the internal functions +dnl list, so that modules can be init'd in the correct order +dnl $1 = name of extension, $2 = extension upon which it depends +dnl $3 = optional: if true, it's ok for $2 to have not been configured +dnl default is false and should halt the build. +dnl See ADD_EXTENSION_DEP in win32 build +AC_DEFUN(PHP_ADD_EXTENSION_DEP, []) + + http://cvs.php.net/diff.php/php-src/configure.in?r1=1.514&r2=1.515&ty=u Index: php-src/configure.in diff -u php-src/configure.in:1.514 php-src/configure.in:1.515 --- php-src/configure.in:1.514 Tue Jul 13 15:56:48 2004 +++ php-src/configure.in Sun Jul 18 08:03:51 2004 @@ -1,4 +1,4 @@ -dnl ## $Id: configure.in,v 1.514 2004/07/13 19:56:48 andi Exp $ -*- sh -*- +dnl ## $Id: configure.in,v 1.515 2004/07/18 12:03:51 wez Exp $ -*- sh -*- dnl ## Process this file with autoconf to produce a configure script. divert(1) @@ -130,7 +130,31 @@ PHP_PROG_RE2C AC_PROG_RANLIB AC_PROG_LN_S -AC_PROG_AWK + +dnl Some vendors force mawk before gawk; mawk is broken so we don't like that, +dnl and check manually +dnl AC_PROG_AWK +AC_CHECK_PROGS(AWK, gawk nawk awk mawk, bork, /usr/xpg4/bin/:$PATH) +case "$AWK" in + *mawk) + AC_MSG_WARN([mawk is known to have problems on some systems. You should install GNU awk]) + ;; + *gawk) + ;; + bork) + AC_MSG_ERROR([Could not find awk; Install GNU awk]) + ;; + *) + AC_MSG_CHECKING([if $AWK is broken]) + if ! $AWK 'function foo() {}' >/dev/null 2>&1 ; then + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([You should install GNU awk]) + else + AC_MSG_RESULT([no - good!]) + fi + ;; +esac + AC_PROG_YACC if test "$YACC" != "bison -y"; then AC_MSG_WARN([You will need bison if you want to regenerate the PHP parsers.]) http://cvs.php.net/diff.php/php-src/build/genif.sh?r1=1.3&r2=1.4&ty=u Index: php-src/build/genif.sh diff -u php-src/build/genif.sh:1.3 php-src/build/genif.sh:1.4 --- php-src/build/genif.sh:1.3 Fri Mar 22 05:22:41 2002 +++ php-src/build/genif.sh Sun Jul 18 08:03:51 2004 @@ -1,6 +1,6 @@ #! /bin/sh -# $Id: genif.sh,v 1.3 2002/03/22 10:22:41 sas Exp $ +# $Id: genif.sh,v 1.4 2004/07/18 12:03:51 wez Exp $ # replacement for genif.pl infile=$1 @@ -17,13 +17,13 @@ exit 1 fi -module_ptrs=$extra_module_ptrs header_list= olddir=`pwd` cd $srcdir +module_ptrs="$extra_module_ptrs`echo $@ | $awk -f ./build/order_by_dep.awk`" + for ext in ${1+"$@"} ; do - module_ptrs=" phpext_${ext}_ptr,@[EMAIL PROTECTED]" header_list="$header_list ext/$ext/*.h" done http://cvs.php.net/diff.php/php-src/ext/dom/config.m4?r1=1.15&r2=1.16&ty=u Index: php-src/ext/dom/config.m4 diff -u php-src/ext/dom/config.m4:1.15 php-src/ext/dom/config.m4:1.16 --- php-src/ext/dom/config.m4:1.15 Sun Dec 7 10:37:30 2003 +++ php-src/ext/dom/config.m4 Sun Jul 18 08:03:51 2004 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.15 2003/12/07 15:37:30 sniper Exp $ +dnl $Id: config.m4,v 1.16 2004/07/18 12:03:51 wez Exp $ dnl PHP_ARG_ENABLE(dom, whether to enable DOM support, @@ -26,6 +26,7 @@ typeinfo.c domerror.c domlocator.c namednodemap.c userdatahandler.c], $ext_shared) PHP_SUBST(DOM_SHARED_LIBADD) + PHP_ADD_EXTENSION_DEP(dom, libxml) ], [ AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.]) ]) http://cvs.php.net/diff.php/php-src/ext/simplexml/config.m4?r1=1.7&r2=1.8&ty=u Index: php-src/ext/simplexml/config.m4 diff -u php-src/ext/simplexml/config.m4:1.7 php-src/ext/simplexml/config.m4:1.8 --- php-src/ext/simplexml/config.m4:1.7 Wed Nov 12 18:42:35 2003 +++ php-src/ext/simplexml/config.m4 Sun Jul 18 08:03:51 2004 @@ -1,4 +1,4 @@ -dnl $Id: config.m4,v 1.7 2003/11/12 23:42:35 sniper Exp $ +dnl $Id: config.m4,v 1.8 2004/07/18 12:03:51 wez Exp $ dnl config.m4 for extension simplexml PHP_ARG_ENABLE(simplexml, whether to enable simplexml support, @@ -18,4 +18,5 @@ ], [ AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.]) ]) + PHP_ADD_EXTENSION_DEP(simplexml, libxml) fi http://cvs.php.net/diff.php/php-src/ext/spl/config.m4?r1=1.10&r2=1.11&ty=u Index: php-src/ext/spl/config.m4 diff -u php-src/ext/spl/config.m4:1.10 php-src/ext/spl/config.m4:1.11 --- php-src/ext/spl/config.m4:1.10 Mon Feb 9 13:18:00 2004 +++ php-src/ext/spl/config.m4 Sun Jul 18 08:03:51 2004 @@ -1,4 +1,4 @@ -dnl $Id: config.m4,v 1.10 2004/02/09 18:18:00 sniper Exp $ +dnl $Id: config.m4,v 1.11 2004/07/18 12:03:51 wez Exp $ dnl config.m4 for extension SPL PHP_ARG_ENABLE(spl, enable SPL suppport, @@ -10,4 +10,5 @@ fi AC_DEFINE(HAVE_SPL, 1, [Whether you want SPL (Standard PHP Library) support]) PHP_NEW_EXTENSION(spl, php_spl.c spl_functions.c spl_engine.c spl_iterators.c spl_array.c spl_directory.c spl_sxe.c, $ext_shared) + PHP_ADD_EXTENSION_DEP(spl, simplexml) fi http://cvs.php.net/diff.php/php-src/ext/xml/config.m4?r1=1.48&r2=1.49&ty=u Index: php-src/ext/xml/config.m4 diff -u php-src/ext/xml/config.m4:1.48 php-src/ext/xml/config.m4:1.49 --- php-src/ext/xml/config.m4:1.48 Wed Nov 12 18:42:36 2003 +++ php-src/ext/xml/config.m4 Sun Jul 18 08:03:51 2004 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.48 2003/11/12 23:42:36 sniper Exp $ +dnl $Id: config.m4,v 1.49 2004/07/18 12:03:51 wez Exp $ dnl PHP_ARG_ENABLE(xml,whether to enable XML support, @@ -47,5 +47,6 @@ PHP_NEW_EXTENSION(xml, xml.c $xml_extra_sources, $ext_shared) PHP_SUBST(XML_SHARED_LIBADD) + PHP_ADD_EXTENSION_DEP(xml, libxml) AC_DEFINE(HAVE_XML, 1, [ ]) fi http://cvs.php.net/diff.php/php-src/ext/xsl/config.m4?r1=1.7&r2=1.8&ty=u Index: php-src/ext/xsl/config.m4 diff -u php-src/ext/xsl/config.m4:1.7 php-src/ext/xsl/config.m4:1.8 --- php-src/ext/xsl/config.m4:1.7 Wed Nov 19 07:07:59 2003 +++ php-src/ext/xsl/config.m4 Sun Jul 18 08:03:51 2004 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.7 2003/11/19 12:07:59 chregu Exp $ +dnl $Id: config.m4,v 1.8 2004/07/18 12:03:51 wez Exp $ dnl PHP_ARG_WITH(xsl, for XSL support, @@ -59,4 +59,5 @@ AC_DEFINE(HAVE_XSL,1,[ ]) PHP_NEW_EXTENSION(xsl, php_xsl.c xsltprocessor.c, $ext_shared) PHP_SUBST(XSL_SHARED_LIBADD) + PHP_ADD_EXTENSION_DEP(xsl, libxml) fi http://cvs.php.net/co.php/php-src/build/order_by_dep.awk?r=1.1&p=1 Index: php-src/build/order_by_dep.awk +++ php-src/build/order_by_dep.awk BEGIN { orig_rs = RS; orig_fs = FS; RS=" "; mod_count = 0; SUBSEP=":"; } function get_deps(module_name, depline, cmd) { # this could probably be made *much* better RS=orig_rs; FS="[(,) \t]+" cmd = "grep PHP_ADD_EXTENSION_DEP ext/" module_name "/config*.m4" while (cmd | getline) { # printf("GOT: %s,%s,%s,%s,%s\n", $1, $2, $3, $4, $5); if (!length($5)) { $5 = 0; } mod_deps[module_name, $4] = $5; } close(cmd) RS=" "; FS=orig_fs; } function get_module_index(name, i) { for (i in mods) { if (mods[i] == name) { return i; } } return -1; } function do_deps(mod_idx, module_name, mod_name_len, dep, ext, val, depidx) { module_name = mods[mod_idx]; mod_name_len = length(module_name); for (ext in mod_deps) { if (substr(ext, 0, mod_name_len+1) != module_name SUBSEP) { continue; } val = mod_deps[ext]; ext = substr(ext, mod_name_len+2, length(ext)-mod_name_len); depidx = get_module_index(ext); if (depidx >= 0) { do_deps(depidx); } } #printf(" phpext_%s_ptr,\n", module_name); printf(" phpext_%s_ptr,@NEWLINE@", module_name); delete mods[mod_idx]; } function count(arr, n, i) { n = 0; for (i in arr) n++; return n; } /^[a-zA-Z0-9_-]+/ { # mini hack for pedantic awk gsub("[^a-zA-Z0-9_-]", "", $1) # add each item to array mods[mod_count++] = $1 # see if it has any module deps get_deps($1); } END { # order it correctly out_count = 0; while (count(mods)) { # count down, since we need to assemble it in reverse order for (i = mod_count-1; i >= 0; --i) { if (i in mods) { do_deps(i); } } } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php