Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions sapi/cli/cli.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#endif


extern PHP_CLI_API int do_php_cli(int argc, char *argv[]);

extern PHP_CLI_API ssize_t sapi_cli_single_write(const char *str, size_t str_length);

typedef struct {
Expand Down
30 changes: 19 additions & 11 deletions sapi/cli/php_cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -1179,18 +1179,10 @@ static int do_cli(int argc, char **argv) /* {{{ */
}
/* }}} */

/* {{{ main */
#ifdef PHP_CLI_WIN32_NO_CONSOLE
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
#else
int main(int argc, char *argv[])
#endif
/* {{{ do_php_cli */
PHP_CLI_API int do_php_cli(int argc, char *argv[])
{
#if defined(PHP_WIN32)
# ifdef PHP_CLI_WIN32_NO_CONSOLE
int argc = __argc;
char **argv = __argv;
# endif
int num_args;
wchar_t **argv_wide;
char **argv_save = argv;
Expand Down Expand Up @@ -1393,6 +1385,22 @@ int main(int argc, char *argv[])
* exiting.
*/
cleanup_ps_args(argv);
exit(exit_status);
return exit_status;
}
/* }}} */

/* {{{ main */
#ifndef PHP_EMBED_SAPI
# ifdef PHP_CLI_WIN32_NO_CONSOLE
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
exit(do_php_cli(__argc, __argv));
}
# else
int main(int argc, char *argv[])
{
exit(do_php_cli(argc, argv));
}
# endif
#endif /* PHP_EMBED_SAPI */
/* }}} */
18 changes: 18 additions & 0 deletions sapi/embed/Makefile.frag
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Redirect cli source objects to sapi/embed/cli, so the version without main() doesn't conflict with cli sapis version with main()
EMBED_CLI_SRCDIR = $(top_srcdir)/sapi/cli
EMBED_CLI_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) -Isapi/cli/ -I$(EMBED_CLI_SRCDIR) -DPHP_EMBED_SAPI -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1

sapi/embed/cli/php_cli.lo: $(EMBED_CLI_SRCDIR)/php_cli.c
$(EMBED_CLI_CC) -c $< -o $@

sapi/embed/cli/php_http_parser.lo: $(EMBED_CLI_SRCDIR)/php_http_parser.c
$(EMBED_CLI_CC) -c $< -o $@

sapi/embed/cli/php_cli_server.lo: $(EMBED_CLI_SRCDIR)/php_cli_server.c
$(EMBED_CLI_CC) -c $< -o $@

sapi/embed/cli/ps_title.lo: $(EMBED_CLI_SRCDIR)/ps_title.c
$(EMBED_CLI_CC) -c $< -o $@

sapi/embed/cli/php_cli_process_title.lo: $(EMBED_CLI_SRCDIR)/php_cli_process_title.c
$(EMBED_CLI_CC) -c $< -o $@
7 changes: 7 additions & 0 deletions sapi/embed/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,14 @@ if test "$PHP_EMBED" != "no"; then
[$PHP_EMBED_TYPE],
[php_embed.c],
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])

dnl Include CLI sources in embed SAPI so do_php_cli() is available
PHP_ADD_BUILD_DIR([sapi/embed/cli])
PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/embed/Makefile.frag])
PHP_SAPI_OBJS="$PHP_SAPI_OBJS sapi/embed/cli/php_cli.lo sapi/embed/cli/php_http_parser.lo sapi/embed/cli/php_cli_server.lo sapi/embed/cli/ps_title.lo sapi/embed/cli/php_cli_process_title.lo"

PHP_INSTALL_HEADERS([sapi/embed], [php_embed.h])
PHP_INSTALL_HEADERS([sapi/cli], [cli.h])
])
else
AC_MSG_RESULT([no])
Expand Down
4 changes: 4 additions & 0 deletions sapi/embed/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,9 @@ var PHP_EMBED_PGO = false;

if (PHP_EMBED != "no") {
SAPI('embed', 'php_embed.c', 'php' + PHP_VERSION + 'embed.lib', '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
ADD_SOURCES("sapi/cli", "php_cli.c php_http_parser.c php_cli_server.c ps_title.c php_cli_process_title.c", "embed", "/DPHP_EMBED_SAPI");
ADD_FLAG("LIBS_EMBED", "ws2_32.lib");
ADD_FLAG("LIBS_EMBED", "shell32.lib");
PHP_INSTALL_HEADERS("sapi/embed", "php_embed.h");
PHP_INSTALL_HEADERS("sapi/cli", "cli.h");
}
3 changes: 3 additions & 0 deletions sapi/embed/php_embed.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ BEGIN_EXTERN_C()
EMBED_SAPI_API int php_embed_init(int argc, char **argv);
EMBED_SAPI_API void php_embed_shutdown(void);
extern EMBED_SAPI_API sapi_module_struct php_embed_module;

#define HAVE_EMBED_CLI 1
EMBED_SAPI_API int do_php_cli(int argc, char *argv[]);
END_EXTERN_C()


Expand Down
Loading