source: trunk/config.w32 @ 694

Last change on this file since 694 was 694, checked in by moo, 4 years ago

fix quote for gnu win32 native tools

  • Property svn:eol-style set to native
File size: 5.1 KB
RevLine 
[11]1// vim:ft=javascript
2
3
4ARG_ENABLE("xcache", "Include XCache support", "yes,shared");
5
6if (PHP_XCACHE != "no") {
[95]7    // {{{ check for xcache-constant
8    ARG_ENABLE("xcache-constant", "XCache: Handle new constants made by php compiler (e.g.: for __halt_compiler)", "yes");
9    if (PHP_XCACHE_CONSTANT != "no") {
10        AC_DEFINE("HAVE_XCACHE_CONSTANT", 1, "Define to enable XCache handling of compile time constants");
11    }
12    // }}}
13
[11]14    var xcache_sources = "processor.c \
15                          xcache.c \
16                          mmap.c \
17                          mem.c \
[148]18                          xc_shm.c \
[11]19                          const_string.c \
20                          opcode_spec.c \
21                          stack.c \
22                          utils.c \
23                          lock.c \
24                          ";
25    // {{{ add sources on enabled
26    ARG_ENABLE("xcache-optimizer",    "(N/A)", "no");
[37]27    ARG_ENABLE("xcache-coverager",    "Enable code coverage dumper, useful for testing php scripts", "no");
[11]28    ARG_ENABLE("xcache-assembler",    "(N/A)", "no");
29    ARG_ENABLE("xcache-disassembler", "Enable opcode to php variable dumper, NOT for production server", "no");
30    ARG_ENABLE("xcache-encoder",      "(N/A)", "no");
31    ARG_ENABLE("xcache-decoder",      "(N/A)", "no");
32
[26]33    var XCACHE_MODULES = "cacher";
[11]34    var options = ["optimizer",
[27]35                   "coverager",
[11]36                   "assembler", "disassembler",
37                   "encoder", "decoder"];
38    for (var i in options) {
39        var name = options[i];
40        var uname = name.toUpperCase();
41        var withval = eval("PHP_XCACHE_" + uname);
42        if (withval != "no") {
43            xcache_sources += " " + name + ".c";
[26]44            XCACHE_MODULES += " " + name;
[11]45            STDOUT.WriteLine("Enabling XCache Module: " + name);
46            AC_DEFINE("HAVE_XCACHE_" + uname, 1, "Define for XCache: " + name)
47        }
48    }
[26]49    AC_DEFINE("XCACHE_MODULES", XCACHE_MODULES);
[11]50    // }}}
51    // {{{ check for programs needed
52    var apps = ["m4", "grep", "sed"];
53    for (var i in apps) {
54        if (!PATH_PROG(apps[i])) {
55            ERROR(apps[i] + " is currently required to build XCache");
56        }
57    }
[694]58    DEFINE("XCACHE_BACKTICK", "`")
[355]59    PATH_PROG("gawk", null, "XCACHE_AWK") || PATH_PROG("awk", null, "XCACHE_AWK");
[11]60
61    // the cygwin indent is known broken on our output
62    var indent = false; // PATH_PROG("indent");
63    if (indent) {
64        indent += " -kr --use-tabs --tab-size 4 -sob -nce";
65    }
66    else {
67        indent = PATH_PROG("cat");
68        if (!indent) {
69            indent = '';
70        }
71    }
72    DEFINE("XCACHE_INDENT", indent);
73    // }}}
[478]74    // {{{ check for xcache-test
75    ARG_ENABLE("xcache-test", "XCache: Enable self test - FOR DEVELOPERS ONLY!!", "no");
76    if (PHP_XCACHE_TEST != "no") {
77        ADD_FLAG("XCACHE_ENABLE_TEST", "-DXCACHE_ENABLE_TEST");
78        xcache_sources += " xc_malloc.c";
79        AC_DEFINE("HAVE_XCACHE_TEST", 1, "Define to enable XCache self test");
80    }
81    else {
82        ADD_FLAG("XCACHE_ENABLE_TEST", "");
83    }
84    // }}}
85    // {{{ check for xcache-test
86    ARG_ENABLE("xcache-dprint", "XCache: Enable self debug print functions - FOR DEVELOPERS ONLY!!", "no");
87    if (PHP_XCACHE_DPRINT != "no") {
88        AC_DEFINE("HAVE_XCACHE_DPRINT", 1, "Define to enable XCache debug print functions");
89    }
90    // }}}
[11]91    // {{{ create extension
92    EXTENSION("xcache", xcache_sources);
93    var srcdir = configure_module_dirname;
94    // it's a bit harder to get builddir
95    var mfofile = "Makefile.objects";
96    MFO.Close();
97
98    var mfo = file_get_contents(mfofile);
[412]99    mfo.match(/(.*)\\xcache.obj:/);
[11]100    var builddir = RegExp.$1;
[412]101    mfo.match(/(.*\$\(CC\).* )\/c.*\\xcache.c.*/i);
[11]102    var ccrule = RegExp.$1;
103
104    MFO = FSO.OpenTextFile(mfofile, 8);
105    mfo = null;
106    // }}}
107    // {{{ add make fragments
108    var file = srcdir + "\\Makefile.frag";
109    STDOUT.WriteLine("Adding Makefile.frag: " + file);
110    var frag = file_get_contents(file);
111    frag = frag.replace(/\$\(srcdir\)\//g,   srcdir + '\\');
112    frag = frag.replace(/\$\(srcdir\)/g,     srcdir);
113    frag = frag.replace(/\$\(builddir\)\//g, builddir + '\\');
114    frag = frag.replace(/\$\(builddir\)/g,   builddir);
115    frag = frag.replace(/processor\//g,      "processor\\");
116    frag = frag.replace(/\.lo:/g, ".obj:");
117    frag = frag.replace(/.*\$\(CC\).* -E (.*) -o (.*)/, ccrule + " /E $1 > $2");
118    frag = frag.replace(/ -o /g, " /Fo");
[642]119    frag = frag.replace(/cp /g, "copy ");
120    frag = frag.replace(/mv /g, "move ");
[31]121    frag = frag.replace(/ \|\| /g, "\r\n\tif errorlevel 1 ");
[30]122    frag = frag.replace(/ && /g, "\r\n\tif not errorlevel 1 ");
[11]123    if (indent == '') {
124        frag = frag.replace(/\| +\$\(XCACHE_INDENT\)/, '');
125        frag = frag.replace(/\$\(XCACHE_INDENT\) < /, 'type ');
126    }
127    MFO.WriteLine(frag);
128    ADD_FLAG("CFLAGS_XCACHE", "/I " + builddir);
129    /// }}}
130    XCACHE_PROC_SOURCES=glob(srcdir + "\\processor\\*.m4").join(' ');
131    ADD_FLAG("XCACHE_PROC_SOURCES", XCACHE_PROC_SOURCES);
132    // {{{ check for opcode_spec_def.h
133    STDOUT.Write("Checking if you have opcode_spec_def.h for XCache ... ");
134    var file = srcdir + "\\opcode_spec_def.h";
135    if (FSO.FileExists(file)) {
136        STDOUT.WriteLine("yes");
137        AC_DEFINE("HAVE_XCACHE_OPCODE_SPEC_DEF", 1, "Define if you have opcode_spec_def.h for XCache");
138    }
139    else {
140        STDOUT.WriteLine("no");
141
142        // check for features depend on opcode_spec_def.h
143        var xcache_require_opcode_spec_def = function(withval, name) {
144            if (withval != "no") {
145                ERROR(file + " is required to enable XCache " + name);
146            }
147        }
148        xcache_require_opcode_spec_def(PHP_XCACHE_DISASSEMBLER, "disassembler");
149    }
150    // }}}
151}
Note: See TracBrowser for help on using the repository browser.