internals:windows:todo
This is an old revision of the document!
Todo
Library Stuff
Table of all core extensions, regular extensions, sapi requirements- Decide if we will distribute, third party but we will build/distribute, and third party we can't touch them
- Build and distribute libs (and source/makefiles/etc)
- Update on a regular basis with new libs
- Keep version information and dates current with new builds
5.3 dual built on VC6 and VC9 - VC8 libs still available - PHP6.0 kill VC6 builds- recruit additional help with building libraries
- 64 bit versions for 2k8 of libs
- Document the process of getting a new library in our build systems (rules, naming, platform support, etc.)
Code
- Compiler warning killing spree (Kalle)
- lower deprecation to _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE instead of /wd4996 - and kill new warnings
- remove no deprecate warnings and fix core to use new API (probably not until 6.0)
- get 6.0 compiling with unicode flag? (that would be fun)
- Code audit for problem areas (streams/sockets and process control are two that come to mind)
fix bindlib so it doesn't do bad things to SOCKET in 64 bit, and check for native inet_pton so we can let the compiler set the WIN32_WINNT version instead of hard coding it in readdir.h - this will involve checking to see if the native call is available (vista and 2008 have it) and if not using the bindlib fallback (note theres a _WIN32_WINNT redef in Zend/zend_alloc.c we need to adress aswell) - not funDONE (Pierre) - changed so bindlib is no longer a dependency and native calls are used where availablefix browsecap so it doesn't still try to use ereg even though ereg is no longer in standard (probably flip it to pcre would work, volunteers?)DONE (Nuno)Add support for hardlinks (NT5+) and symbolic links (NT6+) - Use GetVersionInfoEx() to detect Windows version of the running systemDONE (Pierre)
Missing function implementations
Core/Standard:
inet_ntopDone (Kalle)inet_ptonDone (Kalle)getmxrrDone (Pierre)dns_get_mx (alias of getmxrr)Done (Pierre)dns_check_record (alias of checkdnsrr)Done (Pierre)checkdnsrrDone (Pierre)dns_get_recordDone (Pierre)linkinfoDone (Pierre)readlinkDone (Pierre)symlink - MSDN docs for symlinks - available as of Windows Vista / Server 2008Done (Pierre)link - MSDN docs for hardlinks - available as of Windows 2000 / Server 2000Done (Pierre)fnmatchDone (Pierre)touch (See manual about modifying modification time of a directory)Done (Pierre)stream_socket_pairDone (Kalle)time_nanosleepDone (Pierre)time_sleep_untilDone (Pierre)
Extensions:
socket_create_pairDone (Kalle)
Compiler warnings
HEAD / PHP_5_3
Core, SAPIs and Extensions are synced so if one emits warnings during compilation its in both branches. Lots of the warnings in HEAD is caused by the zend_hash stuff not being altered to work with Unicode zstr.
This list is exclusively for 32bit Windows, so we also need to make sure that our 64bit snaps are right once it goes stable.
Core
- Main/
- Win32/
- Zend (zend_vm_generate.php needs to be modified to eliminate the free_op1 warnings)
Extensions
- date (and remove the switch in config.w32)
- fileinfo (Kalle)
- gd
- intl
- ldap
- mbstring
- mysqlnd
- openssl
- pdo (Kalle)
- pdo_sqlite
- session (Kalle)
- soap
- sqlite
- sqlite3
- standard
- tidy (only macro redefs for Windows specific stuff)
- zip
SAPIs
- apache2filter
- apache2handler
Untested
These parts are not tested for warnings yet.
Extensions
- enchant
- dba
- gmp
- interbase
- oci8
- pdo_firebird
- pdo_oci
- pspell
- snmp
- sybase_ct
SAPIs
- aolserver
- apache
- apache_hooks
- nsapi
- pi3web
Linker etc. warnings
- ext/gettext: generates a MSIL .netmodule or module compiled with /GL; add /LTCG to the link command line to improve linker performance
- ext/gd: generates a LNK4098 (default lib conflicts with use of other libs)
- ext/iconv: generates a MSIL .netmodule or module compiled with /GL; add /LTCG to the linker command line to improve linker performance
- ext/xmlreader: generates two LNK4049 (locally defined symbol imported)
- sapi/cli: readline generates U4004 (too many rules for target)
- sapi/embed: generates multiple LNK4044 (unrecognized option)
Configure system
- equivalent of phpize on windows (one extension configure/compile)
fix some extensions that should be threadsafe only (apache2) or error instead of warn and ignore on non-ztsquick checkover of extensions that should be disable able (ereg, mysqlnd)- configs for extensions that can be done for windows (ncurses et al)
Add little ifdef for a pretty string for compiler version used - make available in phpinfo*DONE* and in .rc template, shared extensions will need their own compiler version for their info and .rc
/* pretty string for the compiler we're using */ #if _MSC_VER >= 1500 #define MSVC_COMPILER_STRING "MSVC9 (2008)" #elif _MSC_VER >= 1400 #define MSVC_COMPILER_STRING "MSVC8 (2005)" #elif _MSC_VER >= 1310 #define MSVC_COMPILER_STRING "MSVC7.1 (.NET 2003)" #elif _MSC_VER >= 1300 #define MSVC_COMPILER_STRING "MSVC7 (.NET 2002)" #elif _MSC_VER < 1300 #define MSVC_COMPILER_STRING "MSVC6" #endif
PHP can't be built with anything less than VC6 with all the service packs. There is no way to differentiate between 2005 RTM and 2005 SP1, so always use SP1!
PHP Build Box
re2c on boxDone (Pierre)exchange cygwin build system for php build systemDone (Pierre)- create release build system
- move all pecl extension building to pecl (pecl snaps on pecl)
- 64 bit snaps started for 5.3
reorganize the libraries so we have branches and tagged versions with different libsDone (Pierre)
Partially done - pecl2 now is organized by compiler/arch
Install Oracle Instant Client 11g from http://www.oracle.com/technology/software/tech/oci/instantclient/index.htmldone (Pierre)
PECL Build Box
- Get builds going for snaps (CVS versions), release versions, and alpha/beta if applicable
Windows GCOV Box
- Auto building and testing similar to gcov, only for windows
Documentation
- Update the official Windows build documentation
- Update the PECL on Windows documentation
- Update related FAQs: (obtaining libraries and compiling needs)
- A recent post about installation doc needs
internals/windows/todo.1243197635.txt.gz · Last modified: 2017/09/22 13:28 (external edit)