summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Magalhães <mail@pmmaga.net>2018-02-21 22:44:06 +0000
committerJoe Watkins <krakjoe@php.net>2018-02-22 08:04:33 +0100
commit230ef2d94774939f92128bcbbc54ffc046c2000e (patch)
tree1f7cf25517d942e5e53c5bbf56e3c7d92926b52a
parent927748b2716f4f01cdbcc52c4ae8ecd52d6b185f (diff)
downloadphp-git-230ef2d94774939f92128bcbbc54ffc046c2000e.tar.gz
improve extension skeleton generator
-rw-r--r--ext/ext_skel.php6
-rw-r--r--ext/skeleton/.gitignore.in36
-rw-r--r--ext/skeleton/config.m4.in76
3 files changed, 114 insertions, 4 deletions
diff --git a/ext/ext_skel.php b/ext/ext_skel.php
index b5e3aad0a9..adfe76d39c 100644
--- a/ext/ext_skel.php
+++ b/ext/ext_skel.php
@@ -140,7 +140,7 @@ function process_args($argv, $argc) {
continue;
}
- $options[$opt] = ($opt == 'dir' ? realpath($argv[$i + 1]) : $argv[$i + 1]);
+ $options[$opt] = ($opt == 'dir' ? realpath($argv[$i + 1]) . DIRECTORY_SEPARATOR : $argv[$i + 1]);
}
break;
default: {
@@ -249,9 +249,7 @@ function copy_config_scripts() {
$files[] = 'config.w32';
}
- if (!$files) {
- return;
- }
+ $files[] = '.gitignore';
foreach($files as $config_script) {
$new_config_script = $options['dir'] . $options['ext'] . DIRECTORY_SEPARATOR . $config_script;
diff --git a/ext/skeleton/.gitignore.in b/ext/skeleton/.gitignore.in
new file mode 100644
index 0000000000..912ca92c74
--- /dev/null
+++ b/ext/skeleton/.gitignore.in
@@ -0,0 +1,36 @@
+.deps
+*.lo
+*.la
+.libs
+acinclude.m4
+aclocal.m4
+autom4te.cache
+build
+config.guess
+config.h
+config.h.in
+config.log
+config.nice
+config.status
+config.sub
+configure
+configure.ac
+configure.in
+include
+install-sh
+libtool
+ltmain.sh
+Makefile
+Makefile.fragments
+Makefile.global
+Makefile.objects
+missing
+mkinstalldirs
+modules
+run-tests.php
+tests/*/*.diff
+tests/*/*.out
+tests/*/*.php
+tests/*/*.exp
+tests/*/*.log
+tests/*/*.sh
diff --git a/ext/skeleton/config.m4.in b/ext/skeleton/config.m4.in
index fe2a1c48ed..3cea301e01 100644
--- a/ext/skeleton/config.m4.in
+++ b/ext/skeleton/config.m4.in
@@ -1,7 +1,83 @@
+dnl $Id$
+dnl config.m4 for extension %EXTNAME%
+
+dnl Comments in this file start with the string 'dnl'.
+dnl Remove where necessary.
+
+dnl If your extension references something external, use with:
+
+dnl PHP_ARG_WITH(%EXTNAME%, for %EXTNAME% support,
+dnl Make sure that the comment is aligned:
+dnl [ --with-%EXTNAME% Include %EXTNAME% support])
+
+dnl Otherwise use enable:
+
PHP_ARG_ENABLE(%EXTNAME%, whether to enable %EXTNAME% support,
+dnl Make sure that the comment is aligned:
[ --enable-%EXTNAME% Enable %EXTNAME% support], no)
if test "$PHP_%EXTNAMECAPS%" != "no"; then
+ dnl Write more examples of tests here...
+
+ dnl # get library FOO build options from pkg-config output
+ dnl AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ dnl AC_MSG_CHECKING(for libfoo)
+ dnl if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists foo; then
+ dnl if $PKG_CONFIG foo --atleast-version 1.2.3; then
+ dnl LIBFOO_CFLAGS=\`$PKG_CONFIG foo --cflags\`
+ dnl LIBFOO_LIBDIR=\`$PKG_CONFIG foo --libs\`
+ dnl LIBFOO_VERSON=\`$PKG_CONFIG foo --modversion\`
+ dnl AC_MSG_RESULT(from pkgconfig: version $LIBFOO_VERSON)
+ dnl else
+ dnl AC_MSG_ERROR(system libfoo is too old: version 1.2.3 required)
+ dnl fi
+ dnl else
+ dnl AC_MSG_ERROR(pkg-config not found)
+ dnl fi
+ dnl PHP_EVAL_LIBLINE($LIBFOO_LIBDIR, %EXTNAMECAPS%_SHARED_LIBADD)
+ dnl PHP_EVAL_INCLINE($LIBFOO_CFLAGS)
+
+ dnl # --with-%EXTNAME% -> check with-path
+ dnl SEARCH_PATH="/usr/local /usr" # you might want to change this
+ dnl SEARCH_FOR="/include/%EXTNAME%.h" # you most likely want to change this
+ dnl if test -r $PHP_%EXTNAMECAPS%/$SEARCH_FOR; then # path given as parameter
+ dnl %EXTNAMECAPS%_DIR=$PHP_%EXTNAMECAPS%
+ dnl else # search default path list
+ dnl AC_MSG_CHECKING([for %EXTNAME% files in default path])
+ dnl for i in $SEARCH_PATH ; do
+ dnl if test -r $i/$SEARCH_FOR; then
+ dnl %EXTNAMECAPS%_DIR=$i
+ dnl AC_MSG_RESULT(found in $i)
+ dnl fi
+ dnl done
+ dnl fi
+ dnl
+ dnl if test -z "$%EXTNAMECAPS%_DIR"; then
+ dnl AC_MSG_RESULT([not found])
+ dnl AC_MSG_ERROR([Please reinstall the %EXTNAME% distribution])
+ dnl fi
+
+ dnl # --with-%EXTNAME% -> add include path
+ dnl PHP_ADD_INCLUDE($%EXTNAMECAPS%_DIR/include)
+
+ dnl # --with-%EXTNAME% -> check for lib and symbol presence
+ dnl LIBNAME=%EXTNAMECAPS% # you may want to change this
+ dnl LIBSYMBOL=%EXTNAMECAPS% # you most likely want to change this
+
+ dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
+ dnl [
+ dnl PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $%EXTNAMECAPS%_DIR/$PHP_LIBDIR, %EXTNAMECAPS%_SHARED_LIBADD)
+ dnl AC_DEFINE(HAVE_%EXTNAMECAPS%LIB,1,[ ])
+ dnl ],[
+ dnl AC_MSG_ERROR([wrong %EXTNAME% lib version or lib not found])
+ dnl ],[
+ dnl -L$%EXTNAMECAPS%_DIR/$PHP_LIBDIR -lm
+ dnl ])
+ dnl
+ dnl PHP_SUBST(%EXTNAMECAPS%_SHARED_LIBADD)
+
+ dnl # In case of no dependencies
AC_DEFINE(HAVE_%EXTNAMECAPS%, 1, [ Have %EXTNAME% support ])
+
PHP_NEW_EXTENSION(%EXTNAME%, %EXTNAME%.c, $ext_shared)
fi