]> granicus.if.org Git - php/commitdiff
Integrate README.EXT_SKEL to help option
authorPeter Kokot <peterkokot@gmail.com>
Mon, 11 Mar 2019 01:01:25 +0000 (02:01 +0100)
committerPeter Kokot <peterkokot@gmail.com>
Wed, 13 Mar 2019 19:56:10 +0000 (20:56 +0100)
- Sync help output using heredoc
- Add extension building instructions
- Building with phpize is preferred option. Mention also tests
- Refactor print_success()

README.EXT_SKEL [deleted file]
README.SELF-CONTAINED-EXTENSIONS
ext/ext_skel.php

diff --git a/README.EXT_SKEL b/README.EXT_SKEL
deleted file mode 100644 (file)
index ea450c0..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-WHAT IT IS
-
-  It's a tool for automatically creating the basic framework for a PHP extension.
-
-HOW TO USE IT
-
-  Very simple. First, change to the ext/ directory of the PHP sources. Then
-  run the following
-
-   php ext_skel.php --ext extension_name
-
-  and everything you need will be placed in directory ext/extension_name.
-
-  If you don't need to test the existence of any external header files,
-  libraries or functions in them, the extension is ready to be compiled in
-  PHP. To compile the extension, run the following:
-
-    ./buildconf; ./configure --enable-extension_name; make
-
-  The definition of PHP_extension_NAME_VERSION will be present in the
-  php_extension_name.h and injected into the zend_extension_entry definition. This
-  is required by the PECL website for the version string conformity checks
-  against package.xml
-
-SOURCE AND HEADER FILE NAME
-
-  The ext_skel.php script generates 'extension_name.c' and 'php_extension_name.h'
-  as the main source and header files. Keep these names.
-
-  extension functions (User functions) must be named
-
-  extension_name_function()
-
-  When you need to expose extension functions to other extensions, expose functions
-  strictly needed by others. Exposed internal function must be named
-
-  php_extension_name_function()
-
-  See also CODING_STANDARDS.
-
-OTHER OPTIONS
-
-  Run php ext_skel.php --help to see the available options.
index e28ec4d6db546506edd5ff8aacd1f47f92980581..1aaec6d6c4a60c5116f46d90461d870618f223d5 100644 (file)
@@ -104,8 +104,8 @@ CREATING SOURCE FILES
 
   ext_skel can be of great help when creating the common code for all modules
   in PHP for you and also writing basic function definitions and C code for
-  handling arguments passed to your functions. See README.EXT_SKEL for further
-  information.
+  handling arguments passed to your functions. See `./ext/ext_skel.php --help`
+  for further information.
 
   As for the rest, you are currently alone here. There are a lot of existing
   modules, use a simple module as a starting point and add your own code.
index ff41ee8ccf12a7b4831031d869f35246a91e707e..4623910ecfd79c98ebd9605678fd3d6e3325afea 100755 (executable)
@@ -31,23 +31,91 @@ function error($message) {
 /* {{{ print_help
  */
 function print_help() {
-       printf('php ext_skel.php --ext <name> [--experimental] [--author <name>]%s', PHP_EOL);
-       printf('                 [--dir <path>] [--std] [--onlyunix]%s', PHP_EOL);
-       printf('                 [--onlywindows] [--help]%1$s%1$s', PHP_EOL);
-       printf('  --ext <name>          The name of the extension defined as <name>%s', PHP_EOL);
-       printf('  --experimental        Passed if this extension is experimental, this creates%s', PHP_EOL);
-       printf('                        the EXPERIMENTAL file in the root of the extension%s', PHP_EOL);
-       printf('  --author <name>       Your name, this is used if --std is passed and%s', PHP_EOL);
-       printf('                        for the CREDITS file%s', PHP_EOL);
-       printf('  --dir <path>          Path to the directory for where extension should be%s', PHP_EOL);
-       printf('                        created. Defaults to the directory of where this script%s', PHP_EOL);
-       printf('                        lives%s', PHP_EOL);
-       printf('  --std                 If passed, the standard header used%s', PHP_EOL);
-       printf('                        in extensions that is included in the core, will be used%s', PHP_EOL);
-       printf('  --onlyunix            Only generate configure scripts for Unix%s', PHP_EOL);
-       printf('  --onlywindows         Only generate configure scripts for Windows%s', PHP_EOL);
-       printf('  --help                This help%s', PHP_EOL);
+    if (PHP_OS_FAMILY != 'Windows') {
+        $file_prefix = './';
+        $make_prefix = '';
+    } else {
+        $file_prefix = '';
+        $make_prefix = 'n';
+    }
 
+    echo <<<HELP
+WHAT IT IS
+
+  It's a tool for automatically creating the basic framework for a PHP extension.
+
+HOW TO USE IT
+
+  Very simple. First, change to the ext/ directory of the PHP sources. Then run
+  the following
+
+    php ext_skel.php --ext extension_name
+
+  and everything you need will be placed in directory ext/extension_name.
+
+  If you don't need to test the existence of any external header files,
+  libraries or functions in them, the extension is ready to be compiled in PHP.
+  To compile the extension run the following:
+
+    cd extension_name
+    phpize
+    {$file_prefix}configure
+    {$make_prefix}make
+
+  Don't forget to run tests once the compilation is done:
+
+    {$make_prefix}make test
+
+  Alternatively, to compile extension in the PHP:
+
+    cd /path/to/php-src
+    {$file_prefix}buildconf
+    {$file_prefix}configure --enable-extension_name
+    {$make_prefix}make
+    {$make_prefix}make test TESTS=ext/extension_name/tests
+
+  The definition of PHP_extension_NAME_VERSION will be present in the
+  php_extension_name.h and injected into the zend_extension_entry definition.
+  This is required by the PECL website for the version string conformity checks
+  against package.xml
+
+SOURCE AND HEADER FILE NAME
+
+  The ext_skel.php script generates 'extension_name.c' and 'php_extension_name.h'
+  as the main source and header files. Keep these names.
+
+  extension functions (User functions) must be named
+
+  extension_name_function()
+
+  When you need to expose extension functions to other extensions, expose
+  functions strictly needed by others. Exposed internal function must be named
+
+  php_extension_name_function()
+
+  See also CODING_STANDARDS.
+
+OPTIONS
+
+  php ext_skel.php --ext <name> [--experimental] [--author <name>]
+                   [--dir <path>] [--std] [--onlyunix]
+                   [--onlywindows] [--help]
+
+  --ext <name>          The name of the extension defined as <name>
+  --experimental        Passed if this extension is experimental, this creates
+                        the EXPERIMENTAL file in the root of the extension
+  --author <name>       Your name, this is used if --std is passed and for the
+                        CREDITS file
+  --dir <path>          Path to the directory for where extension should be
+                        created. Defaults to the directory of where this script
+                        lives
+  --std                 If passed, the standard header used in extensions that
+                        is included in the core, will be used
+  --onlyunix            Only generate configure scripts for Unix
+  --onlywindows         Only generate configure scripts for Windows
+  --help                This help
+
+HELP;
        exit;
 }
 /* }}} */
@@ -76,14 +144,14 @@ function print_success() {
                $make_prefix = 'n';
        }
 
-       printf('%1$sSuccess. The extension is now ready to be compiled into PHP. To do so, use the%s', PHP_EOL);
+       printf('%1$sSuccess. The extension is now ready to be compiled. To do so, use the%s', PHP_EOL);
        printf('following steps:%1$s%1$s', PHP_EOL);
-       printf('cd /path/to/php-src%s', PHP_EOL);
-       printf('%sbuildconf%s', $file_prefix, PHP_EOL);
-       printf('%sconfigure --enable-%s%s', $file_prefix, $options['ext'], PHP_EOL);
+       printf('cd /path/to/php-src/%s%s', $options['ext'], PHP_EOL);
+       printf('phpize%s', PHP_EOL);
+       printf('%sconfigure%s', $file_prefix, PHP_EOL);
        printf('%smake%2$s%2$s', $make_prefix, PHP_EOL);
        printf('Don\'t forget to run tests once the compilation is done:%s', PHP_EOL);
-       printf('%smake test TESTS=ext/%s/tests%3$s%3$s', $make_prefix, $options['ext'], PHP_EOL);
+       printf('%smake test%2$s%2$s', $make_prefix, PHP_EOL);
        printf('Thank you for using PHP!%s', PHP_EOL);
 }
 /* }}} */