Skip to content

Commit

Permalink
Add new (optional!) win32 build infrastructure.
Browse files Browse the repository at this point in the history
Will follow up to internals@ shortly.
  • Loading branch information
wez committed Dec 2, 2003
1 parent 30b631d commit 05b9b20
Show file tree
Hide file tree
Showing 29 changed files with 1,439 additions and 0 deletions.
2 changes: 2 additions & 0 deletions buildconf.bat
@@ -0,0 +1,2 @@
@echo off
cscript /nologo win32\build\buildconf.js
14 changes: 14 additions & 0 deletions ext/bcmath/config.w32
@@ -0,0 +1,14 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("bcmath", "bc style precision math functions", "yes");

if (PHP_BCMATH == "yes") {
EXTENSION("bcmath", "bcmath.c", null, "-Iext/bcmath/libbcmath/src");
ADD_SOURCES("ext/bcmath/libbcmath/src", "add.c div.c init.c neg.c \
outofmem.c raisemod.c rt.c sub.c compare.c divmod.c int2num.c \
num2long.c output.c recmul.c sqrt.c zero.c debug.c doaddsub.c \
nearzero.c num2str.c raise.c rmzero.c str2num.c", "bcmath");

AC_DEFINE('WITH_BCMATH', 1, 'Have BCMATH library');
}
10 changes: 10 additions & 0 deletions ext/calendar/config.w32
@@ -0,0 +1,10 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("calendar", "calendar conversion support", "yes");

if (PHP_CALENDAR == "yes") {
EXTENSION("calendar", "calendar.c dow.c french.c gregor.c jewish.c \
julian.c easter.c cal_unix.c");
AC_DEFINE('HAVE_CALENDAR', 1, 'Have calendar');
}
13 changes: 13 additions & 0 deletions ext/com_dotnet/config.w32
@@ -0,0 +1,13 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("com_dotnet", "COM and .Net support", "yes");

if (PHP_COM_DOTNET == "yes") {
EXTENSION("com_dotnet", "com_com.c com_dotnet.c com_extension.c \
com_handlers.c com_iterator.c com_misc.c com_olechar.c \
com_typeinfo.c com_variant.c");
AC_DEFINE('HAVE_COM_DOTNET', 1, 'Have COM_DOTNET support');
// TODO: do a header check for this
AC_DEFINE('HAVE_MSCOREE_H', 0, 'Have .net headers');
}
9 changes: 9 additions & 0 deletions ext/ctype/config.w32
@@ -0,0 +1,9 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("ctype", "ctype", "yes");

if (PHP_CTYPE == "yes") {
EXTENSION("ctype", "ctype.c");
AC_DEFINE('HAVE_CTYPE', 1, 'Have ctype');
}
18 changes: 18 additions & 0 deletions ext/dom/config.w32
@@ -0,0 +1,18 @@
// $Id$
// vim:ft=javascript

ARG_WITH("dom", "DOM support", "yes");

if (PHP_DOM == "yes" && PHP_LIBXML == "yes") {
EXTENSION("dom", "php_dom.c attr.c document.c domerrorhandler.c \
domstringlist.c domexception.c namelist.c processinginstruction.c \
cdatasection.c documentfragment.c domimplementation.c element.c \
node.c string_extend.c characterdata.c documenttype.c \
domimplementationlist.c entity.c nodelist.c text.c comment.c \
domconfiguration.c domimplementationsource.c entityreference.c \
notation.c xpath.c dom_iterators.c typeinfo.c domerror.c \
domlocator.c namednodemap.c userdatahandler.c");
AC_DEFINE("HAVE_DOM", 1, "DOM support");
}


9 changes: 9 additions & 0 deletions ext/ftp/config.w32
@@ -0,0 +1,9 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("ftp", "ftp support", "yes");

if (PHP_FTP == "yes") {
EXTENSION("ftp", "php_ftp.c ftp.c");
AC_DEFINE('HAVE_FTP', 1, 'Have FTP support');
}
12 changes: 12 additions & 0 deletions ext/libxml/config.w32
@@ -0,0 +1,12 @@
// $Id$
// vim:ft=javascript

ARG_WITH("libxml", "LibXML support", "yes");

if (PHP_LIBXML == "yes") {
EXTENSION("libxml", "libxml.c", false /* never shared */);
AC_DEFINE("HAVE_LIBXML", 1, "LibXML support");
ADD_FLAG("LIBS_LIBXML", "libxml2.lib iconv.lib");
}


55 changes: 55 additions & 0 deletions ext/mbstring/config.w32
@@ -0,0 +1,55 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("mbstring", "multibyte string functions", "no");
ARG_ENABLE("mbregex", "multibyte regex support", "no");

if (PHP_MBSTRING == "yes") {

FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.vc6",
"ext\\mbstring\\libmbfl\\config.h", true);
FSO.CopyFile("ext\\mbstring\\oniguruma\\win32\\config.h",
"ext\\mbstring\\oniguruma\\config.h", true);

EXTENSION("mbstring", "mbstring.c php_unicode.c mb_gpc.c", null,
"-Iext/mbstring/libmbfl -Iext/mbstring/libmbfl/mbfl \
/D NOT_RUBY=1 /D LIBMBFL_EXPORTS=1 /D HAVE_STDARG_PROTOTYPES=1 \
/D HAVE_CONFIG_H /D HAVE_STDLIB_H /D HAVE_STRICMP /D MBFL_DLL_EXPORT=1");

ADD_SOURCES("ext/mbstring/libmbfl/filters", "html_entities.c \
mbfilter_7bit.c mbfilter_ascii.c mbfilter_base64.c mbfilter_big5.c \
mbfilter_byte2.c mbfilter_byte4.c mbfilter_cp1251.c mbfilter_cp1252.c \
mbfilter_cp866.c mbfilter_cp932.c mbfilter_cp936.c mbfilter_euc_cn.c \
mbfilter_euc_jp.c mbfilter_euc_jp_win.c mbfilter_euc_kr.c \
mbfilter_euc_tw.c mbfilter_htmlent.c mbfilter_hz.c mbfilter_iso2022_kr.c \
mbfilter_iso8859_1.c mbfilter_iso8859_10.c mbfilter_iso8859_13.c \
mbfilter_iso8859_14.c mbfilter_iso8859_15.c mbfilter_iso8859_2.c \
mbfilter_iso8859_3.c mbfilter_iso8859_4.c mbfilter_iso8859_5.c \
mbfilter_iso8859_6.c mbfilter_iso8859_7.c mbfilter_iso8859_8.c \
mbfilter_iso8859_9.c mbfilter_jis.c mbfilter_koi8r.c mbfilter_qprint.c \
mbfilter_sjis.c mbfilter_ucs2.c mbfilter_ucs4.c mbfilter_uhc.c \
mbfilter_utf16.c mbfilter_utf32.c mbfilter_utf7.c mbfilter_utf7imap.c \
mbfilter_utf8.c mbfilter_uuencode.c", "mbstring");

ADD_SOURCES("ext/mbstring/libmbfl/mbfl", "mbfilter.c mbfilter_8bit.c \
mbfilter_pass.c mbfilter_wchar.c mbfl_convert.c mbfl_encoding.c \
mbfl_filter_output.c mbfl_ident.c mbfl_language.c mbfl_memory_device.c \
mbfl_string.c mbfl_allocators.c", "mbstring");

ADD_SOURCES("ext/mbstring/libmbfl/nls", "nls_de.c nls_en.c nls_ja.c nls_kr.c \
nls_neutral.c nls_ru.c nls_uni.c nls_zh.c", "mbstring");

AC_DEFINE('HAVE_MBSTRING', 1, 'Have mbstring support');
AC_DEFINE('HAVE_MBSTR_CN', 1, 'CN');
AC_DEFINE('HAVE_MBSTR_JA', 1, 'CN');
AC_DEFINE('HAVE_MBSTR_KR', 1, 'CN');
AC_DEFINE('HAVE_MBSTR_RU', 1, 'CN');
AC_DEFINE('HAVE_MBSTR_TW', 1, 'CN');
AC_DEFINE('HAVE_STDARG_PROTOTYPES', 1, 'have stdarg.h');

if (PHP_MBREGEX == "yes") {
ADD_SOURCES("ext/mbstring/oniguruma", "regcomp.c regerror.c \
regexec.c reggnu.c regparse.c regposerr.c", "mbstring");
ADD_SOURCES("ext/mbstring", "php_mbregex.c", "mbstring");
}
}
12 changes: 12 additions & 0 deletions ext/odbc/config.w32
@@ -0,0 +1,12 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("odbc", "ODBC support", "yes");

if (PHP_ODBC == "yes") {
EXTENSION("odbc", "php_odbc.c");
AC_DEFINE("HAVE_UODBC", 1, "ODBC support");
ADD_FLAG('LIBS_ODBC', 'odbc32.lib odbccp32.lib');
}


13 changes: 13 additions & 0 deletions ext/pcre/config.w32
@@ -0,0 +1,13 @@
// $Id$
// vim:ft=javascript

ARG_WITH("pcre-regex", "Perl Compatible Regular Expressions", "yes");

if (PHP_PCRE_REGEX == "yes") {
EXTENSION("pcre", "php_pcre.c", PHP_PCRE_REGEX_SHARED,
"-DSUPPORT_UTF8 -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -Iext/pcre/pcrelib");
ADD_SOURCES("ext/pcre/pcrelib", "maketables.c get.c study.c pcre.c", "pcre");

AC_DEFINE('HAVE_BUNDLED_PCRE', 1, 'Using bundled PCRE library');
AC_DEFINE('HAVE_PCRE', 1, 'Have PCRE library');
}
11 changes: 11 additions & 0 deletions ext/session/config.w32
@@ -0,0 +1,11 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("session", "session support", "yes");

if (PHP_SESSION == "yes") {
EXTENSION("session", "session.c mod_files.c mod_mm.c mod_user.c", false /* never shared */);
AC_DEFINE("HAVE_PHP_SESSION", 1, "Session support");
}


11 changes: 11 additions & 0 deletions ext/simplexml/config.w32
@@ -0,0 +1,11 @@
// $Id$
// vim:ft=javascript

ARG_WITH("simplexml", "Simple XML support", "yes");

if (PHP_SIMPLEXML == "yes" && PHP_LIBXML == "yes") {
EXTENSION("simplexml", "simplexml.c");
AC_DEFINE("HAVE_SIMPLEXML", 1, "Simple XML support");
}


26 changes: 26 additions & 0 deletions ext/sqlite/config.w32
@@ -0,0 +1,26 @@
// $Id$
// vim:ft=javascript

ARG_WITH("sqlite", "SQLite support", "yes");

if (PHP_SQLITE == "yes") {
FSO.CopyFile("ext\\sqlite\\libsqlite\\src\\sqlite.w32.h",
"ext\\sqlite\\libsqlite\\src\\sqlite.h");

FSO.CopyFile("ext\\sqlite\\libsqlite\\src\\sqlite_config.w32.h",
"ext\\sqlite\\libsqlite\\src\\config.h");

EXTENSION("sqlite", "sqlite.c sess_sqlite.c", null,
"/D PHP_SQLITE_EXPORTS /Iext/sqlite/libsqlite/src");

ADD_SOURCES("ext/sqlite/libsqlite/src", "opcodes.c parse.c encode.c \
auth.c btree.c build.c delete.c expr.c func.c hash.c insert.c \
main.c os.c pager.c printf.c random.c select.c table.c tokenize.c \
update.c util.c vdbe.c attach.c btree_rb.c pragma.c vacuum.c \
copy.c where.c trigger.c", "sqlite");

AC_DEFINE("HAVE_SQLITE", 1, "SQLite support");
ADD_DEF_FILE("ext\\sqlite\\php_sqlite.def");
}


23 changes: 23 additions & 0 deletions ext/standard/config.w32
@@ -0,0 +1,23 @@
// vim:ft=javascript
// $Id$

ARG_WITH("config-file-scan-dir", "Dir to check for additional php ini files", "");
AC_DEFINE("PHP_CONFIG_FILE_SCAN_DIR", PHP_CONFIG_FILE_SCAN_DIR);

ARG_WITH("config-file-path", "Where to find php.ini",
'(getenv("SystemRoot"))?getenv("SystemRoot"):""');

AC_DEFINE("PHP_CONFIG_FILE_PATH", PHP_CONFIG_FILE_PATH, null, false);

EXTENSION("standard", "array.c base64.c basic_functions.c browscap.c \
crc32.c crypt.c cyr_convert.c datetime.c dir.c dl.c dns.c exec.c \
file.c filestat.c formatted_print.c fsock.c head.c html.c image.c \
info.c iptc.c lcg.c link.c mail.c math.c md5.c metaphone.c microtime.c \
pack.c pageinfo.c parsedate.c quot_print.c rand.c reg.c soundex.c \
string.c scanf.c syslog.c type.c uniqid.c url.c url_scanner.c var.c \
versioning.c assert.c strnatcmp.c levenshtein.c incomplete_class.c \
url_scanner_ex.c ftp_fopen_wrapper.c http_fopen_wrapper.c \
php_fopen_wrapper.c credits.c css.c var_unserializer.c ftok.c sha1.c \
user_filters.c uuencode.c filters.c proc_open.c sunfuncs.c \
streamsfuncs.c http.c", false /* never shared */);

11 changes: 11 additions & 0 deletions ext/tokenizer/config.w32
@@ -0,0 +1,11 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("tokenizer", "tokenizer support", "yes");

if (PHP_TOKENIZER == "yes") {
EXTENSION("tokenizer", "tokenizer.c");
AC_DEFINE("HAVE_TOKENIZER", 1, "Tokenizer support");
}


11 changes: 11 additions & 0 deletions ext/wddx/config.w32
@@ -0,0 +1,11 @@
// $Id$
// vim:ft=javascript

ARG_WITH("wddx", "WDDX support", "yes");

if (PHP_WDDX == "yes" && PHP_LIBXML == "yes") {
EXTENSION("wddx", "wddx.c");
AC_DEFINE("HAVE_WDDX", 1, "WDDX support");
}


11 changes: 11 additions & 0 deletions ext/xml/config.w32
@@ -0,0 +1,11 @@
// $Id$
// vim:ft=javascript

ARG_WITH("xml", "XML support", "yes");

if (PHP_XML == "yes" && PHP_LIBXML == "yes") {
EXTENSION("xml", "xml.c compat.c");
AC_DEFINE("HAVE_XML", 1, "XML support");
}


12 changes: 12 additions & 0 deletions ext/zlib/config.w32
@@ -0,0 +1,12 @@
// $Id$
// vim:ft=javascript

ARG_ENABLE("zlib", "ZLIB support", "yes");

if (PHP_ZLIB == "yes") {
EXTENSION("zlib", "zlib.c zlib_fopen_wrapper.c", null, "/D ZLIB_EXPORTS");
AC_DEFINE("HAVE_ZLIB", 1, "Tokenizer support");
ADD_FLAG("LIBS_ZLIB", "zlib.lib");
}


39 changes: 39 additions & 0 deletions sapi/apache/config.w32
@@ -0,0 +1,39 @@
// vim:ft=javascript
// $Id$

ARG_ENABLE('apache', 'Build Apache 1.3.x version of PHP', 'yes');

ARG_WITH('apache-includes', 'Where to find Apache 1.3 headers', null);
ARG_WITH('apache-libs', 'Where to find Apache 1.3 libraries', null);

if (PHP_APACHE_INCLUDES == null) {
if (FSO.FileExists('C:\\Program Files\\Apache Group\\Apache\\include\\httpd.h')) {
PHP_APACHE_INCLUDES = "C:\\Program Files\\Apache Group\\Apache\\include";
} else if (FSO.FileExists(PHP_PHP_BUILD + "\\apache\\src\\include\\httpd.h")) {
PHP_APACHE_INCLUDES = PHP_PHP_BUILD + "\\apache\\src\\include";
}
}

if (!FSO.FileExists(PHP_APACHE_INCLUDES + "\\httpd.h")) {
ERROR("Could not find apache headers");
}

if (PHP_APACHE_LIBS == null) {
if (FSO.FileExists('C:\\Program Files\\Apache Group\\Apache\\libexec\\ApacheCore.lib')) {
PHP_APACHE_LIBS = "C:\\Program Files\\Apache Group\\Apache\\libexec";
} else if (FSO.FileExists(PHP_PHP_BUILD + "\\apache\\src\\corer\\ApacheCore.lib")) {
PHP_APACHE_LIBS = PHP_PHP_BUILD + "\\apache\\src\\corer";
}
}

if (!FSO.FileExists(PHP_APACHE_LIBS + "\\ApacheCore.lib")) {
ERROR("Could not find apache libraries");
}


if (PHP_APACHE == "yes") {
SAPI('apache', 'mod_php5.c sapi_apache.c php_apache.c',
'php' + PHP_VERSION + 'apache.dll',
'/D APACHEPHP4_EXPORTS /D APACHE_READDIR_H /I "' + PHP_APACHE_INCLUDES + '"');
ADD_FLAG('LIBS_APACHE', '/libpath:"' + PHP_APACHE_LIBS + '" ApacheCore.lib');
}
25 changes: 25 additions & 0 deletions sapi/cgi/config.w32
@@ -0,0 +1,25 @@
// vim:ft=javascript
// $Id$

ARG_ENABLE('cgi', 'Build CGI version of PHP', 'yes');
ARG_ENABLE('fastcgi', 'Build FastCGI support into CGI binary', 'yes');
ARG_ENABLE('path-info-check',
'If this is disabled, paths such as /info.php/test?a=b will fail to work', 'yes');

ARG_ENABLE("force-cgi-redirect", "Enable the security check for internal \
server redirects. You should use this if you are running the CGI \
version with Apache.", "yes");

AC_DEFINE("FORCE_CGI_REDIRECT", PHP_FORCE_CGI_REDIRECT == "yes" ? 1 : 0, "CGI redirect mode");
AC_DEFINE("ENABLE_PATHINFO_CHECK", PHP_PATH_INFO_CHECK == "yes" ? 1 : 0, "Pathinfo check");

if (PHP_CGI == "yes") {
AC_DEFINE('PHP_FASTCGI', PHP_FASTCGI == "yes" ? 1 : 0);
if (PHP_FASTCGI == "yes") {
SAPI('cgi', 'cgi_main.c getopt.c', 'php-cgi.exe', '-Isapi/cgi/libfcgi/include /D FCGI_STATIC');
ADD_SOURCES('sapi/cgi/libfcgi', 'fcgi_stdio.c fcgiapp.c os_win32.c', 'cgi');
ADD_FLAG('LIBS_CGI', 'ws2_32.lib kernel32.lib advapi32.lib');
} else {
SAPI('cgi', 'cgi_main.c getopt.c', 'php-cgi.exe');
}
}
9 changes: 9 additions & 0 deletions sapi/cli/config.w32
@@ -0,0 +1,9 @@
// vim:ft=javascript
// $Id$

ARG_ENABLE('cli', 'Build CLI version of PHP', 'yes');

if (PHP_CLI == "yes") {
SAPI('cli', 'getopt.c php_cli.c', 'php.exe');
}

9 changes: 9 additions & 0 deletions sapi/isapi/config.w32
@@ -0,0 +1,9 @@
// vim:ft=javascript
// $Id$

ARG_ENABLE('isapi', 'Build ISAPI version of PHP', 'yes');

if (PHP_ISAPI == "yes") {
SAPI('isapi', 'php4isapi.c', 'php' + PHP_VERSION + 'isapi.dll', '/D PHP4ISAPI_EXPORTS');
ADD_FLAG('LDFLAGS_ISAPI', '/DEF:sapi\\isapi\\php4isapi.def');
}

0 comments on commit 05b9b20

Please sign in to comment.