config.w32 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. ARG_WITH("v8js", "for V8 Javascript Engine", "no");
  2. function v8js_zeroPad(num, places) {
  3. var zero = places - num.toString().length + 1;
  4. return Array(+(zero > 0 && zero)).join("0") + num;
  5. }
  6. if (PHP_V8JS != "no") {
  7. if (CHECK_LIB("winmm.lib", "v8js") &&
  8. CHECK_HEADER_ADD_INCLUDE("v8.h", "CFLAGS_V8JS")) {
  9. ADD_FLAG("CFLAGS_V8JS", "/EHcs");
  10. ADD_FLAG("CFLAGS_V8JS", "/D _ALLOW_KEYWORD_MACROS");
  11. ADD_FLAG("CFLAGS_V8JS", "/D ZEND_WIN32_FORCE_INLINE");
  12. ADD_FLAG("CFLAGS_V8JS", "/D __STDC_LIMIT_MACROS");
  13. // defaults
  14. var v8major = 4;
  15. var v8minor = 7;
  16. var v8build = 75;
  17. var v8patch = 0;
  18. var v8pinc = search_paths("v8-version.h", php_usual_include_suspects, null);
  19. if (typeof(v8pinc) == "string") {
  20. var v8versionh = file_get_contents(v8pinc + '\\v8-version.h');
  21. if (v8versionh.match(/#define V8_MAJOR_VERSION ([0-9]*)/i)) {
  22. v8major = RegExp.$1;
  23. }
  24. if (v8versionh.match(/#define V8_MINOR_VERSION ([0-9]*)/i)) {
  25. v8minor = RegExp.$1;
  26. }
  27. if (v8versionh.match(/#define V8_BUILD_NUMBER ([0-9]*)/i)) {
  28. v8build = RegExp.$1;
  29. }
  30. if (v8versionh.match(/#define V8_PATCH_LEVEL ([0-9]*)/i)) {
  31. v8patch = RegExp.$1;
  32. }
  33. } else {
  34. WARNING("Could not parse v8-version.h");
  35. }
  36. var v8api = v8major + v8js_zeroPad(v8minor, 3) + v8js_zeroPad(v8build, 3);
  37. var v8ver = v8major + "." + v8minor + "." + v8build + "." + v8patch;
  38. if (v8api >= 5002000) {
  39. CHECK_LIB("v8.dll.lib", "v8js");
  40. // created by 'cd obj\v8_libplatform && lib /out:v8_libplatform.lib *.obj'
  41. CHECK_LIB("v8_libplatform.lib", "v8js");
  42. // created by 'cd obj\v8_libbase && lib /out:v8_libbase.lib *.obj'
  43. CHECK_LIB("v8_libbase.lib", "v8js");
  44. } else {
  45. CHECK_LIB("v8.lib", "v8js");
  46. CHECK_LIB("v8_libplatform.lib", "v8js");
  47. CHECK_LIB("v8_libbase.lib", "v8js");
  48. }
  49. if (v8api >= 5003000) {
  50. // For SymLoadModule64 e.a.
  51. // #include <dbghelp.h> in src\base\win32-headers.h
  52. // Adds dependency on dbghelp.dll
  53. CHECK_LIB("dbghelp.lib", "v8js");
  54. }
  55. if (v8api >= 5004000) {
  56. // For PathRemoveFileSpecW in v8_libbase.lib(stack_trace_win)
  57. CHECK_LIB("Shlwapi.lib", "v8js");
  58. }
  59. AC_DEFINE("PHP_V8_API_VERSION", v8api, "", false);
  60. AC_DEFINE("PHP_V8_VERSION", v8ver, "", true);
  61. EXTENSION("v8js", "v8js_array_access.cc v8js.cc v8js_class.cc v8js_commonjs.cc v8js_convert.cc v8js_exceptions.cc v8js_generator_export.cc v8js_methods.cc v8js_object_export.cc v8js_timer.cc v8js_v8.cc v8js_v8object_class.cc v8js_variables.cc", "yes");
  62. } else {
  63. WARNING("v8js not enabled, headers or libs not found");
  64. }
  65. }