-
Notifications
You must be signed in to change notification settings - Fork 46
/
config.w32
147 lines (137 loc) · 4.9 KB
/
config.w32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// vim:ft=javascript
ARG_ENABLE("xcache", "XCache Extension", "no");
if (PHP_XCACHE != "no") {
EXTENSION("xcache", "xcache.c", null, "/I " + configure_module_dirname);
// {{{ check for xcache-constant
ARG_ENABLE("xcache-constant", "XCache: Handle new constants made by php compiler (e.g.: for __halt_compiler)", "yes");
if (PHP_XCACHE_CONSTANT != "no") {
AC_DEFINE("HAVE_XCACHE_CONSTANT", 1, "Define to enable XCache handling of compile time constants");
}
// }}}
ADD_SOURCES(configure_module_dirname + "/util", " \
xc_trace.c \
", "xcache");
ADD_SOURCES(configure_module_dirname + "/xcache", " \
xc_allocator.c \
xc_allocator_bestfit.c \
xc_compatibility.c \
xc_const_string.c \
xc_extension.c \
xc_ini.c \
xc_mutex.c \
xc_opcode_spec.c \
xc_processor.c \
xc_sandbox.c \
xc_shm.c \
xc_shm_mmap.c \
xc_utils.c \
", "xcache");
ADD_SOURCES(configure_module_dirname + "/mod_cacher", " \
xc_cacher.c \
", "xcache");
// {{{ add sources on enabled
ARG_ENABLE("xcache-optimizer", "(N/A)", "no");
ARG_ENABLE("xcache-coverager", "Code coverage dumper, useful for testing php scripts", "no");
ARG_ENABLE("xcache-assembler", "(N/A)", "no");
ARG_ENABLE("xcache-disassembler", "Opcode to php variable dumper, not for server usage", "no");
ARG_ENABLE("xcache-encoder", "(N/A)", "no");
ARG_ENABLE("xcache-decoder", "(N/A)", "no");
var XCACHE_MODULES = "cacher";
AC_DEFINE("HAVE_XCACHE_CACHER", 1, "Define for XCache: cacher")
var options = ["optimizer",
"coverager",
"assembler", "disassembler",
"encoder", "decoder"];
for (var i in options) {
var name = options[i];
var uname = name.toUpperCase();
var withval = eval("PHP_XCACHE_" + uname);
if (withval != "no") {
ADD_SOURCES(configure_module_dirname + "/mod_" + name, "xc_" + name + ".c", "xcache");
XCACHE_MODULES += " " + name;
STDOUT.WriteLine("Enabling XCache Module: " + name);
AC_DEFINE("HAVE_XCACHE_" + uname, 1, "Define for XCache: " + name)
}
}
AC_DEFINE("XCACHE_MODULES", XCACHE_MODULES);
// }}}
// {{{ check for programs needed
var apps = ["m4", "grep", "sed"];
for (var i in apps) {
if (!PATH_PROG(apps[i])) {
ERROR(apps[i] + " is currently required to build XCache");
}
}
PATH_PROG("gawk", null, "XCACHE_AWK") || PATH_PROG("awk", null, "XCACHE_AWK");
// the cygwin indent is known broken on our output
var indent = false; // PATH_PROG("indent");
if (indent) {
indent += " -kr --use-tabs --tab-size 4 -sob -nce";
}
else {
indent = PATH_PROG("cat");
if (!indent) {
indent = '';
}
}
DEFINE("XCACHE_INDENT", indent);
// }}}
// {{{ check for xcache-test
ARG_ENABLE("xcache-test", "XCache: Self test - FOR DEVELOPERS ONLY!!", "no");
if (PHP_XCACHE_TEST != "no") {
ADD_FLAG("XCACHE_ENABLE_TEST", "-DXCACHE_ENABLE_TEST");
ADD_SOURCES(configure_module_dirname + "/xcache", "xc_malloc.c", "xcache");
AC_DEFINE("HAVE_XCACHE_TEST", 1, "Define to enable XCache self test");
}
else {
ADD_FLAG("XCACHE_ENABLE_TEST", "");
}
// }}}
// {{{ check for xcache-test
ARG_ENABLE("xcache-dprint", "XCache: Debug print functions - FOR DEVELOPERS ONLY!!", "no");
if (PHP_XCACHE_DPRINT != "no") {
AC_DEFINE("HAVE_XCACHE_DPRINT", 1, "Define to enable XCache debug print functions");
}
// }}}
// {{{ get ccrule
var srcdir = configure_module_dirname;
// it's a bit harder to get builddir
var mfofile = "Makefile.objects";
MFO.Close();
var mfo = file_get_contents(mfofile);
mfo.match(/(.*)\\xcache.obj:/);
var builddir = RegExp.$1;
mfo.match(/(.*\$\(CC\).* )\/c.*\\xcache.c.*/i);
var ccrule = RegExp.$1;
MFO = FSO.OpenTextFile(mfofile, 8);
mfo = null;
// }}}
// {{{ add make fragments
var makefileFrag = srcdir + "\\Makefile.frag";
var makefileFragDeps = srcdir + "\\Makefile.frag.deps";
STDOUT.WriteLine("Adding Makefile.frag: " + makefileFrag);
STDOUT.WriteLine("Adding Makefile.frag.deps: " + makefileFragDeps);
var frag = file_get_contents(makefileFrag) + "\r\n" + file_get_contents(makefileFragDeps);
frag = frag.replace(/\$\(srcdir\)\//g, srcdir + '\\');
frag = frag.replace(/\$\(srcdir\)/g, srcdir);
frag = frag.replace(/\$\(builddir\)\//g, builddir + '\\');
frag = frag.replace(/\$\(builddir\)/g, builddir);
frag = frag.replace(/processor\//g, "processor\\");
frag = frag.replace(/\.lo:/g, ".obj:");
frag = frag.replace(/.*\$\(CC\).* -E (.*) -o (.*)/g, ccrule + " /E $1 > $2");
frag = frag.replace(/ -o /g, " /Fo");
frag = frag.replace(/cp /g, "copy ");
frag = frag.replace(/mv /g, "move ");
if (indent == '') {
frag = frag.replace(/\| *\$\(XCACHE_INDENT\)/g, '');
frag = frag.replace(/\$\(XCACHE_INDENT\) *< */g, 'type ');
}
MFO.WriteLine(frag);
ADD_FLAG("CFLAGS_XCACHE", "/I " + builddir);
/// }}}
XCACHE_PROC_SOURCES = [];
XCACHE_PROC_SOURCES.concat(glob(srcdir + "\\processor\\*.m4"));
XCACHE_PROC_SOURCES.concat(glob(srcdir + "\\processor\\*.h"));
XCACHE_PROC_SOURCES = XCACHE_PROC_SOURCES.join(' ');
ADD_FLAG("XCACHE_PROC_SOURCES", XCACHE_PROC_SOURCES);
}