Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100755 682 lines (536 sloc) 20.137 kb
14b04b0 ry Remove SCONS deprecate WAF
ry authored
1 #!/usr/bin/env python
2 import optparse
3 import os
45605c9 Johan Bergström gyp: switch json for pprint when generating config
jbergstroem authored
4 import pprint
30b29d8 Ben Noordhuis build: disable -fstrict-aliasing if gcc < 4.6.0
bnoordhuis authored
5 import re
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
6 import shlex
b9e1bb3 Ben Noordhuis build: auto-run tools/gyp_node after ./configure
bnoordhuis authored
7 import subprocess
14b04b0 ry Remove SCONS deprecate WAF
ry authored
8 import sys
5cf4cef ry add configure
ry authored
9
5062741 Ben Noordhuis build: make CC command in -fstrict-aliasing check configurable
bnoordhuis authored
10 CC = os.environ.get('CC', 'cc')
11
14b04b0 ry Remove SCONS deprecate WAF
ry authored
12 root_dir = os.path.dirname(__file__)
13 sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
97c9745 ry Back to WAF
ry authored
14
14b04b0 ry Remove SCONS deprecate WAF
ry authored
15 # parse our options
16 parser = optparse.OptionParser()
97c9745 ry Back to WAF
ry authored
17
14b04b0 ry Remove SCONS deprecate WAF
ry authored
18 parser.add_option("--debug",
19 action="store_true",
20 dest="debug",
21 help="Also build debug build")
22
23 parser.add_option("--prefix",
24 action="store",
25 dest="prefix",
26 help="Select the install prefix (defaults to /usr/local)")
27
a9f2c4a Fedor Indutny --without-npm option
indutny authored
28 parser.add_option("--without-npm",
29 action="store_true",
30 dest="without_npm",
31 help="Don\'t install the bundled npm package manager")
32
14b04b0 ry Remove SCONS deprecate WAF
ry authored
33 parser.add_option("--without-ssl",
34 action="store_true",
35 dest="without_ssl",
36 help="Build without SSL")
37
38 parser.add_option("--without-snapshot",
39 action="store_true",
40 dest="without_snapshot",
41 help="Build without snapshotting V8 libraries. You might want to set"
42 " this for cross-compiling. [Default: False]")
43
44 parser.add_option("--shared-v8",
45 action="store_true",
46 dest="shared_v8",
47 help="Link to a shared V8 DLL instead of static linking")
48
49 parser.add_option("--shared-v8-includes",
50 action="store",
51 dest="shared_v8_includes",
52 help="Directory containing V8 header files")
53
54 parser.add_option("--shared-v8-libpath",
55 action="store",
56 dest="shared_v8_libpath",
57 help="A directory to search for the shared V8 DLL")
58
59 parser.add_option("--shared-v8-libname",
60 action="store",
61 dest="shared_v8_libname",
62 help="Alternative lib name to link to (default: 'v8')")
63
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
64 parser.add_option("--shared-openssl",
65 action="store_true",
66 dest="shared_openssl",
67 help="Link to a shared OpenSSl DLL instead of static linking")
68
69 parser.add_option("--shared-openssl-includes",
70 action="store",
71 dest="shared_openssl_includes",
72 help="Directory containing OpenSSL header files")
73
74 parser.add_option("--shared-openssl-libpath",
75 action="store",
76 dest="shared_openssl_libpath",
77 help="A directory to search for the shared OpenSSL DLLs")
78
79 parser.add_option("--shared-openssl-libname",
80 action="store",
81 dest="shared_openssl_libname",
82 help="Alternative lib name to link to (default: 'crypto,ssl')")
83
84 # deprecated
e61de70 ry gyp: use built-in openssl by default
ry authored
85 parser.add_option("--openssl-use-sys",
70e6889 Nathan Rajlich build: make --openssl-use-sys a boolean option
TooTallNate authored
86 action="store_true",
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
87 dest="shared_openssl",
88 help=optparse.SUPPRESS_HELP)
e61de70 ry gyp: use built-in openssl by default
ry authored
89
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
90 # deprecated
14b04b0 ry Remove SCONS deprecate WAF
ry authored
91 parser.add_option("--openssl-includes",
92 action="store",
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
93 dest="shared_openssl_includes",
94 help=optparse.SUPPRESS_HELP)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
95
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
96 # deprecated
14b04b0 ry Remove SCONS deprecate WAF
ry authored
97 parser.add_option("--openssl-libpath",
98 action="store",
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
99 dest="shared_openssl_libpath",
100 help=optparse.SUPPRESS_HELP)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
101
2f5fa08 Ben Noordhuis build: add --systemtap-includes configure switch
bnoordhuis authored
102 # TODO document when we've decided on what the tracing API and its options will
103 # look like
104 parser.add_option("--systemtap-includes",
105 action="store",
106 dest="systemtap_includes",
107 help=optparse.SUPPRESS_HELP)
108
14b04b0 ry Remove SCONS deprecate WAF
ry authored
109 parser.add_option("--no-ssl2",
110 action="store_true",
111 dest="no_ssl2",
112 help="Disable OpenSSL v2")
113
d03b848 T.C. Hollingsworth build: support shared zlib
tchollingsworth authored
114 parser.add_option("--shared-zlib",
115 action="store_true",
116 dest="shared_zlib",
117 help="Link to a shared zlib DLL instead of static linking")
118
119 parser.add_option("--shared-zlib-includes",
120 action="store",
121 dest="shared_zlib_includes",
122 help="Directory containing zlib header files")
123
124 parser.add_option("--shared-zlib-libpath",
125 action="store",
126 dest="shared_zlib_libpath",
127 help="A directory to search for the shared zlib DLL")
128
129 parser.add_option("--shared-zlib-libname",
130 action="store",
131 dest="shared_zlib_libname",
132 help="Alternative lib name to link to (default: 'z')")
133
bfd78b6 Stephen Gallagher build: allow linking against system http_parser
sgallagher authored
134 parser.add_option("--shared-http-parser",
135 action="store_true",
136 dest="shared_http_parser",
137 help="Link to a shared http_parser DLL instead of static linking")
138
139 parser.add_option("--shared-http-parser-includes",
140 action="store",
141 dest="shared_http_parser_includes",
142 help="Directory containing http_parser header files")
143
144 parser.add_option("--shared-http-parser-libpath",
145 action="store",
146 dest="shared_http_parser_libpath",
147 help="A directory to search for the shared http_parser DLL")
148
149 parser.add_option("--shared-http-parser-libname",
150 action="store",
151 dest="shared_http_parser_libname",
152 help="Alternative lib name to link to (default: 'http_parser')")
153
73ff653 Stephen Gallagher build: allow linking against system c-ares
sgallagher authored
154 parser.add_option("--shared-cares",
155 action="store_true",
156 dest="shared_cares",
157 help="Link to a shared cares DLL instead of static linking")
158
159 parser.add_option("--shared-cares-includes",
160 action="store",
161 dest="shared_cares_includes",
162 help="Directory containing cares header files")
163
164 parser.add_option("--shared-cares-libpath",
165 action="store",
166 dest="shared_cares_libpath",
167 help="A directory to search for the shared cares DLL")
168
169 parser.add_option("--shared-cares-libname",
170 action="store",
171 dest="shared_cares_libname",
172 help="Alternative lib name to link to (default: 'cares')")
173
38809e3 Stephen Gallagher build: allow linking against system libuv
sgallagher authored
174 parser.add_option("--shared-libuv",
175 action="store_true",
176 dest="shared_libuv",
177 help="Link to a shared libuv DLL instead of static linking")
178
179 parser.add_option("--shared-libuv-includes",
180 action="store",
181 dest="shared_libuv_includes",
182 help="Directory containing libuv header files")
183
184 parser.add_option("--shared-libuv-libpath",
185 action="store",
186 dest="shared_libuv_libpath",
187 help="A directory to search for the shared libuv DLL")
188
189 parser.add_option("--shared-libuv-libname",
190 action="store",
191 dest="shared_libuv_libname",
192 help="Alternative lib name to link to (default: 'uv')")
193
14b04b0 ry Remove SCONS deprecate WAF
ry authored
194 parser.add_option("--with-dtrace",
195 action="store_true",
196 dest="with_dtrace",
148f5e6 Shigeki Ohtsu build: fix default dtrace flag on Linux
shigeki authored
197 help="Build with DTrace (default is true on sunos)")
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
198
199 parser.add_option("--without-dtrace",
200 action="store_true",
201 dest="without_dtrace",
202 help="Build without DTrace")
14b04b0 ry Remove SCONS deprecate WAF
ry authored
203
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
204 parser.add_option("--with-etw",
205 action="store_true",
206 dest="with_etw",
207 help="Build with ETW (default is true on Windows)")
208
209 parser.add_option("--without-etw",
210 action="store_true",
211 dest="without_etw",
212 help="Build without ETW")
213
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
214 parser.add_option("--with-perfctr",
215 action="store_true",
216 dest="with_perfctr",
217 help="Build with performance counters (default is true on Windows)")
218
219 parser.add_option("--without-perfctr",
220 action="store_true",
221 dest="without_perfctr",
222 help="Build without performance counters")
223
14b04b0 ry Remove SCONS deprecate WAF
ry authored
224 # CHECKME does this still work with recent releases of V8?
225 parser.add_option("--gdb",
226 action="store_true",
227 dest="gdb",
228 help="add gdb support")
229
230 parser.add_option("--dest-cpu",
231 action="store",
232 dest="dest_cpu",
233 help="CPU architecture to build for. Valid values are: arm, ia32, x64")
234
608898c Nathan Rajlich configure: add a "--dest-os" option to force a gyp "flavor"
TooTallNate authored
235 parser.add_option("--dest-os",
236 action="store",
237 dest="dest_os",
238 help="Operating system to build for. Valid values are: "
239 "win, mac, solaris, freebsd, linux")
240
0ef6cfd isaacs Fix #3465 Add ./configure --no-ifaddrs flag
isaacs authored
241 parser.add_option("--no-ifaddrs",
242 action="store_true",
243 dest="no_ifaddrs",
244 help="Use on deprecated SunOS systems that do not support ifaddrs.h")
245
90efdb3 Adam Malcontenti-Wilson build: improve armv7 / hard-float detection
adammw authored
246 parser.add_option("--with-arm-float-abi",
247 action="store",
248 dest="arm_float_abi",
249 help="Specifies which floating-point ABI to use. Valid values are: "
250 "soft, softfp, hard")
251
d3135e0 Timothy J Fontaine build: add configure option to build with ninja
tjfontaine authored
252 parser.add_option("--ninja",
253 action="store_true",
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
254 dest="use_ninja",
d3135e0 Timothy J Fontaine build: add configure option to build with ninja
tjfontaine authored
255 help="Generate files for the ninja build system")
256
28e6403 Ben Noordhuis build: add --unsafe-optimizations configure switch
bnoordhuis authored
257 # Using --unsafe-optimizations voids your warranty.
258 parser.add_option("--unsafe-optimizations",
259 action="store_true",
260 dest="unsafe_optimizations",
261 help=optparse.SUPPRESS_HELP)
262
ac04716 Timothy J Fontaine build: add configure option to generate xcode build files
tjfontaine authored
263 parser.add_option("--xcode",
264 action="store_true",
265 dest="use_xcode",
266 help="Generate build files for use with xcode")
267
f84bf5b Maciej Małecki build: allow to specify custom tags
mmalecki authored
268 parser.add_option("--tag",
269 action="store",
270 dest="tag",
271 help="Custom build tag")
272
14b04b0 ry Remove SCONS deprecate WAF
ry authored
273 (options, args) = parser.parse_args()
274
275
a033261 Ben Noordhuis build: DRY configure script
bnoordhuis authored
276 def b(value):
277 """Returns the string 'true' if value is truthy, 'false' otherwise."""
278 if value:
279 return 'true'
280 else:
281 return 'false'
282
283
14b04b0 ry Remove SCONS deprecate WAF
ry authored
284 def pkg_config(pkg):
285 cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
286 libs = cmd.readline().strip()
287 ret = cmd.close()
288 if (ret): return None
289
290 cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
291 cflags = cmd.readline().strip()
292 ret = cmd.close()
293 if (ret): return None
294
295 return (libs, cflags)
296
297
90efdb3 Adam Malcontenti-Wilson build: improve armv7 / hard-float detection
adammw authored
298 def cc_macros():
299 """Checks predefined macros using the CC command."""
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
300
792d9a9 Javier Hernández Antúnez build: print error message if no compiler found
javihernandez authored
301 try:
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
302 p = subprocess.Popen(shlex.split(CC) + ['-dM', '-E', '-'],
792d9a9 Javier Hernández Antúnez build: print error message if no compiler found
javihernandez authored
303 stdin=subprocess.PIPE,
304 stdout=subprocess.PIPE,
305 stderr=subprocess.PIPE)
306 except OSError:
307 print '''Node.js configure error: No acceptable C compiler found!
308
309 Please make sure you have a C compiler installed on your system and/or
310 consider adjusting the CC environment variable if you installed
311 it in a non-standard prefix.
312 '''
313 sys.exit()
314
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
315 p.stdin.write('\n')
316 out = p.communicate()[0]
317
318 out = str(out).split('\n')
319
320 k = {}
321 for line in out:
322 lst = shlex.split(line)
323 if len(lst) > 2:
324 key = lst[1]
325 val = lst[2]
326 k[key] = val
90efdb3 Adam Malcontenti-Wilson build: improve armv7 / hard-float detection
adammw authored
327 return k
328
329
330 def is_arch_armv7():
331 """Check for ARMv7 instructions"""
332 cc_macros_cache = cc_macros()
333 return ('__ARM_ARCH_7__' in cc_macros_cache or
334 '__ARM_ARCH_7A__' in cc_macros_cache or
335 '__ARM_ARCH_7R__' in cc_macros_cache or
336 '__ARM_ARCH_7M__' in cc_macros_cache)
337
338
b916774 Nathan Rajlich configure: define "arm_fpu" and "arm_neon" for ARM
TooTallNate authored
339 def is_arm_neon():
340 """Check for ARM NEON support"""
341 return '__ARM_NEON__' in cc_macros()
342
343
90efdb3 Adam Malcontenti-Wilson build: improve armv7 / hard-float detection
adammw authored
344 def arm_hard_float_abi():
345 """Check for hardfloat or softfloat eabi on ARM"""
346 # GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
347 # the Floating Point ABI used (PCS stands for Procedure Call Standard).
348 # We use these as well as a couple of other defines to statically determine
349 # what FP ABI used.
350 # GCC versions 4.4 and below don't support hard-fp.
351 # GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
352 # __ARM_PCS_VFP.
353
354 if compiler_version() >= (4, 6, 0):
355 return '__ARM_PCS_VFP' in cc_macros()
356 elif compiler_version() < (4, 5, 0):
357 return False
358 elif '__ARM_PCS_VFP' in cc_macros():
359 return True
360 elif ('__ARM_PCS' in cc_macros() or
361 '__SOFTFP' in cc_macros() or
362 not '__VFP_FP__' in cc_macros()):
363 return False
364 else:
365 print '''Node.js configure error: Your version of GCC does not report
366 the Floating-Point ABI to compile for your hardware
367
368 Please manually specify which floating-point ABI to use with the
369 --with-arm-float-abi option.
370 '''
371 sys.exit()
372
373
374 def host_arch_cc():
375 """Host architecture check using the CC command."""
376
377 k = cc_macros()
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
378
379 matchup = {
380 '__x86_64__' : 'x64',
381 '__i386__' : 'ia32',
382 '__arm__' : 'arm',
09ccbef Karl Skomski build: detect host_arch better
Skomski authored
383 }
384
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
385 rtn = 'ia32' # default
386
387 for i in matchup:
388 if i in k and k[i] != '0':
389 rtn = matchup[i]
390 break
09ccbef Karl Skomski build: detect host_arch better
Skomski authored
391
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
392 return rtn
14b04b0 ry Remove SCONS deprecate WAF
ry authored
393
394
dc75232 Nathan Rajlich vcbuild: run the 'configure' script in vcbuild.bat
TooTallNate authored
395 def host_arch_win():
396 """Host architecture check using environ vars (better way to do this?)"""
397
398 arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
399
400 matchup = {
401 'AMD64' : 'x64',
402 'x86' : 'ia32',
403 'arm' : 'arm',
404 }
405
406 return matchup.get(arch, 'ia32')
407
408
07e5877 Ben Noordhuis build: disable strict aliasing in v8 with gcc 4.5.x
bnoordhuis authored
409 def compiler_version():
3e5139f Bert Belder Fix the Windows build
piscisaureus authored
410 try:
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
411 proc = subprocess.Popen(shlex.split(CC) + ['--version'], stdout=subprocess.PIPE)
3e5139f Bert Belder Fix the Windows build
piscisaureus authored
412 except WindowsError:
413 return (0, False)
414
a0add91 Ben Noordhuis build: detect cc version with -dumpversion
bnoordhuis authored
415 is_clang = 'clang' in proc.communicate()[0].split('\n')[0]
f78ce08 Ben Noordhuis build: handle output of localized gcc or clang
bnoordhuis authored
416
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
417 proc = subprocess.Popen(shlex.split(CC) + ['-dumpversion'], stdout=subprocess.PIPE)
a0add91 Ben Noordhuis build: detect cc version with -dumpversion
bnoordhuis authored
418 version = tuple(map(int, proc.communicate()[0].split('.')))
f78ce08 Ben Noordhuis build: handle output of localized gcc or clang
bnoordhuis authored
419
420 return (version, is_clang)
421
14b04b0 ry Remove SCONS deprecate WAF
ry authored
422
bbf6b4e Ben Noordhuis configure: turn on VFPv3 on ARMv7
bnoordhuis authored
423 def configure_arm(o):
424 # V8 on ARM requires that armv7 is set. CPU Model detected by
425 # the presence of __ARM_ARCH_7__ and the like defines in compiler
426 if options.arm_float_abi:
427 hard_float = options.arm_float_abi == 'hard'
428 else:
429 hard_float = arm_hard_float_abi()
430
431 armv7 = is_arch_armv7()
b916774 Nathan Rajlich configure: define "arm_fpu" and "arm_neon" for ARM
TooTallNate authored
432 # CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
433 fpu = 'vfpv3' if armv7 else 'vfpv2'
434
bbf6b4e Ben Noordhuis configure: turn on VFPv3 on ARMv7
bnoordhuis authored
435 o['variables']['armv7'] = int(armv7)
b916774 Nathan Rajlich configure: define "arm_fpu" and "arm_neon" for ARM
TooTallNate authored
436 o['variables']['arm_fpu'] = fpu
437 o['variables']['arm_neon'] = int(is_arm_neon())
438 o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
bbf6b4e Ben Noordhuis configure: turn on VFPv3 on ARMv7
bnoordhuis authored
439
440
14b04b0 ry Remove SCONS deprecate WAF
ry authored
441 def configure_node(o):
160e4d0 Ben Noordhuis build: re-enable gdbjit, honor --gdb again
bnoordhuis authored
442 o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0
98b1ce9 Ben Noordhuis build: fix mksnapshot crash on sunos
bnoordhuis authored
443 o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
06c82c5 Ben Noordhuis build: expand ~ in `./configure --prefix=~/a/b/c`
bnoordhuis authored
444 o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
a9f2c4a Fedor Indutny --without-npm option
indutny authored
445 o['variables']['node_install_npm'] = b(not options.without_npm)
28e6403 Ben Noordhuis build: add --unsafe-optimizations configure switch
bnoordhuis authored
446 o['variables']['node_unsafe_optimizations'] = (
447 1 if options.unsafe_optimizations else 0)
680d75a Shigeki Ohtsu build: make default_configuration consistent with BUILDTYPE
shigeki authored
448 o['default_configuration'] = 'Debug' if options.debug else 'Release'
14b04b0 ry Remove SCONS deprecate WAF
ry authored
449
c6bb361 Ben Noordhuis build: partially fix configure on ARM
bnoordhuis authored
450 host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
451 target_arch = options.dest_cpu or host_arch
452 o['variables']['host_arch'] = host_arch
453 o['variables']['target_arch'] = target_arch
454
455 if target_arch == 'arm':
bbf6b4e Ben Noordhuis configure: turn on VFPv3 on ARMv7
bnoordhuis authored
456 configure_arm(o)
07e5877 Ben Noordhuis build: disable strict aliasing in v8 with gcc 4.5.x
bnoordhuis authored
457
c6bb361 Ben Noordhuis build: partially fix configure on ARM
bnoordhuis authored
458 cc_version, is_clang = compiler_version()
100e163 Ben Noordhuis build: compile with -fno-tree-vrp when gcc >= 4.0
bnoordhuis authored
459 o['variables']['clang'] = 1 if is_clang else 0
460
8677860 isaacs build: Don't set gcc_version for Windows
isaacs authored
461 if not is_clang and cc_version != 0:
100e163 Ben Noordhuis build: compile with -fno-tree-vrp when gcc >= 4.0
bnoordhuis authored
462 o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
463
464 # clang has always supported -fvisibility=hidden, right?
07e5877 Ben Noordhuis build: disable strict aliasing in v8 with gcc 4.5.x
bnoordhuis authored
465 if not is_clang and cc_version < (4,0,0):
5ebc05f Ben Noordhuis build: disable -fvisibility=hidden if gcc < 4.0.0
bnoordhuis authored
466 o['variables']['visibility'] = ''
30b29d8 Ben Noordhuis build: disable -fstrict-aliasing if gcc < 4.6.0
bnoordhuis authored
467
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
468 # By default, enable DTrace on SunOS systems. Don't allow it on other
469 # systems, since it won't work. (The MacOS build process is different than
470 # SunOS, and we haven't implemented it.)
471 if sys.platform.startswith('sunos'):
b40f813 Ben Noordhuis build: fix spurious mksnapshot crashes for good
bnoordhuis authored
472 o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
06810b2 tracing: add systemtap support
Jan Wynholds authored
473 elif sys.platform.startswith('linux'):
474 o['variables']['node_use_dtrace'] = 'false'
148f5e6 Shigeki Ohtsu build: fix default dtrace flag on Linux
shigeki authored
475 o['variables']['node_use_systemtap'] = b(options.with_dtrace)
2f5fa08 Ben Noordhuis build: add --systemtap-includes configure switch
bnoordhuis authored
476 if options.systemtap_includes:
477 o['include_dirs'] += [options.systemtap_includes]
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
478 elif options.with_dtrace:
06810b2 tracing: add systemtap support
Jan Wynholds authored
479 raise Exception(
480 'DTrace is currently only supported on SunOS or Linux systems.')
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
481 else:
482 o['variables']['node_use_dtrace'] = 'false'
148f5e6 Shigeki Ohtsu build: fix default dtrace flag on Linux
shigeki authored
483 o['variables']['node_use_systemtap'] = 'false'
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
484
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
485 if options.no_ifaddrs:
486 o['defines'] += ['SUNOS_NO_IFADDRS']
14b04b0 ry Remove SCONS deprecate WAF
ry authored
487
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
488 # By default, enable ETW on Windows.
489 if sys.platform.startswith('win32'):
490 o['variables']['node_use_etw'] = b(not options.without_etw);
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
491 elif options.with_etw:
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
492 raise Exception('ETW is only supported on Windows.')
493 else:
494 o['variables']['node_use_etw'] = 'false'
495
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
496 # By default, enable Performance counters on Windows.
497 if sys.platform.startswith('win32'):
498 o['variables']['node_use_perfctr'] = b(not options.without_perfctr);
499 elif options.with_perfctr:
500 raise Exception('Performance counter is only supported on Windows.')
501 else:
502 o['variables']['node_use_perfctr'] = 'false'
503
4be9c69 isaacs build: Add hyphen to custom build tags
isaacs authored
504 if options.tag:
505 o['variables']['node_tag'] = '-' + options.tag
506 else:
507 o['variables']['node_tag'] = ''
f84bf5b Maciej Małecki build: allow to specify custom tags
mmalecki authored
508
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
509
14b04b0 ry Remove SCONS deprecate WAF
ry authored
510 def configure_libz(o):
d03b848 T.C. Hollingsworth build: support shared zlib
tchollingsworth authored
511 o['variables']['node_shared_zlib'] = b(options.shared_zlib)
512
513 # assume shared_zlib if one of these is set?
514 if options.shared_zlib_libpath:
515 o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
516 if options.shared_zlib_libname:
517 o['libraries'] += ['-l%s' % options.shared_zlib_libname]
518 elif options.shared_zlib:
519 o['libraries'] += ['-lz']
520 if options.shared_zlib_includes:
521 o['include_dirs'] += [options.shared_zlib_includes]
14b04b0 ry Remove SCONS deprecate WAF
ry authored
522
523
bfd78b6 Stephen Gallagher build: allow linking against system http_parser
sgallagher authored
524 def configure_http_parser(o):
525 o['variables']['node_shared_http_parser'] = b(options.shared_http_parser)
526
527 # assume shared http_parser if one of these is set?
528 if options.shared_http_parser_libpath:
529 o['libraries'] += ['-L%s' % options.shared_http_parser_libpath]
530 if options.shared_http_parser_libname:
531 o['libraries'] += ['-l%s' % options.shared_http_parser_libname]
532 elif options.shared_http_parser:
533 o['libraries'] += ['-lhttp_parser']
534 if options.shared_http_parser_includes:
535 o['include_dirs'] += [options.shared_http_parser_includes]
536
537
73ff653 Stephen Gallagher build: allow linking against system c-ares
sgallagher authored
538 def configure_cares(o):
539 o['variables']['node_shared_cares'] = b(options.shared_cares)
540
541 # assume shared cares if one of these is set?
542 if options.shared_cares_libpath:
543 o['libraries'] += ['-L%s' % options.shared_cares_libpath]
544 if options.shared_cares_libname:
545 o['libraries'] += ['-l%s' % options.shared_cares_libname]
546 elif options.shared_cares:
547 o['libraries'] += ['-lcares']
548 if options.shared_cares_includes:
549 o['include_dirs'] += [options.shared_cares_includes]
550
551
38809e3 Stephen Gallagher build: allow linking against system libuv
sgallagher authored
552 def configure_libuv(o):
553 o['variables']['node_shared_libuv'] = b(options.shared_libuv)
554
555 # assume shared libuv if one of these is set?
556 if options.shared_libuv_libpath:
557 o['libraries'] += ['-L%s' % options.shared_libuv_libpath]
558 if options.shared_libuv_libname:
559 o['libraries'] += ['-l%s' % options.shared_libuv_libname]
560 elif options.shared_libuv:
561 o['libraries'] += ['-luv']
562 if options.shared_libuv_includes:
563 o['include_dirs'] += [options.shared_libuv_includes]
564
565
14b04b0 ry Remove SCONS deprecate WAF
ry authored
566 def configure_v8(o):
a033261 Ben Noordhuis build: DRY configure script
bnoordhuis authored
567 o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
568 o['variables']['node_shared_v8'] = b(options.shared_v8)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
569
570 # assume shared_v8 if one of these is set?
571 if options.shared_v8_libpath:
572 o['libraries'] += ['-L%s' % options.shared_v8_libpath]
573 if options.shared_v8_libname:
574 o['libraries'] += ['-l%s' % options.shared_v8_libname]
59ecf2c isaacs Revert "Revert "build: support shared V8 properly""
isaacs authored
575 elif options.shared_v8:
576 o['libraries'] += ['-lv8']
14b04b0 ry Remove SCONS deprecate WAF
ry authored
577 if options.shared_v8_includes:
578 o['include_dirs'] += [options.shared_v8_includes]
579
580
581 def configure_openssl(o):
a033261 Ben Noordhuis build: DRY configure script
bnoordhuis authored
582 o['variables']['node_use_openssl'] = b(not options.without_ssl)
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
583 o['variables']['node_shared_openssl'] = b(options.shared_openssl)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
584
585 if options.without_ssl:
586 return
587
588 if options.no_ssl2:
589 o['defines'] += ['OPENSSL_NO_SSL2=1']
590
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
591 if options.shared_openssl:
592 (libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
14b04b0 ry Remove SCONS deprecate WAF
ry authored
593
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
594 if options.shared_openssl_libpath:
595 o['libraries'] += ['-L%s' % options.shared_openssl_libpath]
596
597 if options.shared_openssl_libname:
598 libnames = options.shared_openssl_libname.split(',')
599 o['libraries'] += ['-l%s' % s for s in libnames]
e61de70 ry gyp: use built-in openssl by default
ry authored
600 else:
601 o['libraries'] += libs.split()
602
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
603 if options.shared_openssl_includes:
604 o['include_dirs'] += [options.shared_openssl_includes]
e61de70 ry gyp: use built-in openssl by default
ry authored
605 else:
606 o['cflags'] += cflags.split()
14b04b0 ry Remove SCONS deprecate WAF
ry authored
607
608
841b7f5 Scott Blomquist Ease building with VS Express by checking in generated files.
sblom authored
609 def configure_winsdk(o):
610 if not sys.platform.startswith('win32'):
611 return
612
a616774 Scott Blomquist windows: improve Visual Studio Express build support
sblom authored
613 winsdk_dir = os.environ.get("WindowsSdkDir")
614
615 if winsdk_dir and os.path.isfile(winsdk_dir + '\\bin\\ctrpp.exe'):
616 print "Found ctrpp in WinSDK--will build generated files into tools/msvs/genfiles."
617 o['variables']['node_has_winsdk'] = 'true'
841b7f5 Scott Blomquist Ease building with VS Express by checking in generated files.
sblom authored
618 return
619
a616774 Scott Blomquist windows: improve Visual Studio Express build support
sblom authored
620 print "ctrpp not found in WinSDK path--using pre-gen files from tools/msvs/genfiles."
841b7f5 Scott Blomquist Ease building with VS Express by checking in generated files.
sblom authored
621
622
14b04b0 ry Remove SCONS deprecate WAF
ry authored
623 output = {
1e738c5 Ben Noordhuis build: make python executable configurable
bnoordhuis authored
624 'variables': { 'python': sys.executable },
14b04b0 ry Remove SCONS deprecate WAF
ry authored
625 'include_dirs': [],
626 'libraries': [],
627 'defines': [],
628 'cflags': [],
629 }
630
631 configure_node(output)
632 configure_libz(output)
bfd78b6 Stephen Gallagher build: allow linking against system http_parser
sgallagher authored
633 configure_http_parser(output)
73ff653 Stephen Gallagher build: allow linking against system c-ares
sgallagher authored
634 configure_cares(output)
38809e3 Stephen Gallagher build: allow linking against system libuv
sgallagher authored
635 configure_libuv(output)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
636 configure_v8(output)
637 configure_openssl(output)
841b7f5 Scott Blomquist Ease building with VS Express by checking in generated files.
sblom authored
638 configure_winsdk(output)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
639
640 # variables should be a root level element,
641 # move everything else to target_defaults
642 variables = output['variables']
643 del output['variables']
644 output = {
645 'variables': variables,
646 'target_defaults': output
647 }
624f70e ry GYP: rename options.gypi to config.gypi
ry authored
648 pprint.pprint(output, indent=2)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
649
e493b29 Ben Noordhuis build: respect --debug configure switch
bnoordhuis authored
650 def write(filename, data):
651 filename = os.path.join(root_dir, filename)
652 print "creating ", filename
fdeeabb Nathan Rajlich configure: don't use "with" for Python 2.5 and older
TooTallNate authored
653 f = open(filename, 'w+')
654 f.write(data)
e493b29 Ben Noordhuis build: respect --debug configure switch
bnoordhuis authored
655
656 write('config.gypi', "# Do not edit. Generated by the configure script.\n" +
9b7a6c5 Nathan Rajlich configure: output a newline at the end of config.gypi
TooTallNate authored
657 pprint.pformat(output, indent=2) + "\n")
e493b29 Ben Noordhuis build: respect --debug configure switch
bnoordhuis authored
658
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
659 config = {
660 'BUILDTYPE': 'Debug' if options.debug else 'Release',
661 'USE_NINJA': str(int(options.use_ninja or 0)),
ac04716 Timothy J Fontaine build: add configure option to generate xcode build files
tjfontaine authored
662 'USE_XCODE': str(int(options.use_xcode or 0)),
1e738c5 Ben Noordhuis build: make python executable configurable
bnoordhuis authored
663 'PYTHON': sys.executable,
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
664 }
665 config = '\n'.join(map('='.join, config.iteritems())) + '\n'
666
667 write('config.mk',
668 '# Do not edit. Generated by the configure script.\n' + config)
97c9745 ry Back to WAF
ry authored
669
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
670 if options.use_ninja:
d3135e0 Timothy J Fontaine build: add configure option to build with ninja
tjfontaine authored
671 gyp_args = ['-f', 'ninja']
ac04716 Timothy J Fontaine build: add configure option to generate xcode build files
tjfontaine authored
672 elif options.use_xcode:
673 gyp_args = ['-f', 'xcode']
d3135e0 Timothy J Fontaine build: add configure option to build with ninja
tjfontaine authored
674 elif os.name == 'nt':
cfbfaaa Frederico Silva build: let gyp choose msvs version
fredericosilva authored
675 gyp_args = ['-f', 'msvs', '-G', 'msvs_version=auto']
608898c Nathan Rajlich configure: add a "--dest-os" option to force a gyp "flavor"
TooTallNate authored
676 elif options.dest_os:
677 gyp_args = ['-f', 'make-' + options.dest_os]
dc75232 Nathan Rajlich vcbuild: run the 'configure' script in vcbuild.bat
TooTallNate authored
678 else:
d5f13f6 Ben Noordhuis build: use proper python interpreter
bnoordhuis authored
679 gyp_args = ['-f', 'make']
680
681 subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)
Something went wrong with that request. Please try again.