Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100755 651 lines (515 sloc) 19.342 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
14b04b0 ry Remove SCONS deprecate WAF
ry authored
268 (options, args) = parser.parse_args()
269
270
a033261 Ben Noordhuis build: DRY configure script
bnoordhuis authored
271 def b(value):
272 """Returns the string 'true' if value is truthy, 'false' otherwise."""
273 if value:
274 return 'true'
275 else:
276 return 'false'
277
278
14b04b0 ry Remove SCONS deprecate WAF
ry authored
279 def pkg_config(pkg):
280 cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
281 libs = cmd.readline().strip()
282 ret = cmd.close()
283 if (ret): return None
284
285 cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
286 cflags = cmd.readline().strip()
287 ret = cmd.close()
288 if (ret): return None
289
290 return (libs, cflags)
291
292
90efdb3 Adam Malcontenti-Wilson build: improve armv7 / hard-float detection
adammw authored
293 def cc_macros():
294 """Checks predefined macros using the CC command."""
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
295
792d9a9 Javier Hernández Antúnez build: print error message if no compiler found
javihernandez authored
296 try:
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
297 p = subprocess.Popen(shlex.split(CC) + ['-dM', '-E', '-'],
792d9a9 Javier Hernández Antúnez build: print error message if no compiler found
javihernandez authored
298 stdin=subprocess.PIPE,
299 stdout=subprocess.PIPE,
300 stderr=subprocess.PIPE)
301 except OSError:
302 print '''Node.js configure error: No acceptable C compiler found!
303
304 Please make sure you have a C compiler installed on your system and/or
305 consider adjusting the CC environment variable if you installed
306 it in a non-standard prefix.
307 '''
308 sys.exit()
309
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
310 p.stdin.write('\n')
311 out = p.communicate()[0]
312
313 out = str(out).split('\n')
314
315 k = {}
316 for line in out:
317 lst = shlex.split(line)
318 if len(lst) > 2:
319 key = lst[1]
320 val = lst[2]
321 k[key] = val
90efdb3 Adam Malcontenti-Wilson build: improve armv7 / hard-float detection
adammw authored
322 return k
323
324
325 def is_arch_armv7():
326 """Check for ARMv7 instructions"""
327 cc_macros_cache = cc_macros()
328 return ('__ARM_ARCH_7__' in cc_macros_cache or
329 '__ARM_ARCH_7A__' in cc_macros_cache or
330 '__ARM_ARCH_7R__' in cc_macros_cache or
331 '__ARM_ARCH_7M__' in cc_macros_cache)
332
333
334 def arm_hard_float_abi():
335 """Check for hardfloat or softfloat eabi on ARM"""
336 # GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
337 # the Floating Point ABI used (PCS stands for Procedure Call Standard).
338 # We use these as well as a couple of other defines to statically determine
339 # what FP ABI used.
340 # GCC versions 4.4 and below don't support hard-fp.
341 # GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
342 # __ARM_PCS_VFP.
343
344 if compiler_version() >= (4, 6, 0):
345 return '__ARM_PCS_VFP' in cc_macros()
346 elif compiler_version() < (4, 5, 0):
347 return False
348 elif '__ARM_PCS_VFP' in cc_macros():
349 return True
350 elif ('__ARM_PCS' in cc_macros() or
351 '__SOFTFP' in cc_macros() or
352 not '__VFP_FP__' in cc_macros()):
353 return False
354 else:
355 print '''Node.js configure error: Your version of GCC does not report
356 the Floating-Point ABI to compile for your hardware
357
358 Please manually specify which floating-point ABI to use with the
359 --with-arm-float-abi option.
360 '''
361 sys.exit()
362
363
364 def host_arch_cc():
365 """Host architecture check using the CC command."""
366
367 k = cc_macros()
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
368
369 matchup = {
370 '__x86_64__' : 'x64',
371 '__i386__' : 'ia32',
372 '__arm__' : 'arm',
09ccbef Karl Skomski build: detect host_arch better
Skomski authored
373 }
374
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
375 rtn = 'ia32' # default
376
377 for i in matchup:
378 if i in k and k[i] != '0':
379 rtn = matchup[i]
380 break
09ccbef Karl Skomski build: detect host_arch better
Skomski authored
381
19133ca Nathan Rajlich build: better host_arch() definition in configure
TooTallNate authored
382 return rtn
14b04b0 ry Remove SCONS deprecate WAF
ry authored
383
384
dc75232 Nathan Rajlich vcbuild: run the 'configure' script in vcbuild.bat
TooTallNate authored
385 def host_arch_win():
386 """Host architecture check using environ vars (better way to do this?)"""
387
388 arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')
389
390 matchup = {
391 'AMD64' : 'x64',
392 'x86' : 'ia32',
393 'arm' : 'arm',
394 }
395
396 return matchup.get(arch, 'ia32')
397
398
07e5877 Ben Noordhuis build: disable strict aliasing in v8 with gcc 4.5.x
bnoordhuis authored
399 def compiler_version():
3e5139f Bert Belder Fix the Windows build
piscisaureus authored
400 try:
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
401 proc = subprocess.Popen(shlex.split(CC) + ['--version'], stdout=subprocess.PIPE)
3e5139f Bert Belder Fix the Windows build
piscisaureus authored
402 except WindowsError:
403 return (0, False)
404
a0add91 Ben Noordhuis build: detect cc version with -dumpversion
bnoordhuis authored
405 is_clang = 'clang' in proc.communicate()[0].split('\n')[0]
f78ce08 Ben Noordhuis build: handle output of localized gcc or clang
bnoordhuis authored
406
fb6c314 Alex Xu configure: always use shlex instead of split
Hello71 authored
407 proc = subprocess.Popen(shlex.split(CC) + ['-dumpversion'], stdout=subprocess.PIPE)
a0add91 Ben Noordhuis build: detect cc version with -dumpversion
bnoordhuis authored
408 version = tuple(map(int, proc.communicate()[0].split('.')))
f78ce08 Ben Noordhuis build: handle output of localized gcc or clang
bnoordhuis authored
409
410 return (version, is_clang)
411
14b04b0 ry Remove SCONS deprecate WAF
ry authored
412
bbf6b4e Ben Noordhuis configure: turn on VFPv3 on ARMv7
bnoordhuis authored
413 def configure_arm(o):
414 # V8 on ARM requires that armv7 is set. CPU Model detected by
415 # the presence of __ARM_ARCH_7__ and the like defines in compiler
416 if options.arm_float_abi:
417 hard_float = options.arm_float_abi == 'hard'
418 else:
419 hard_float = arm_hard_float_abi()
420 o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
421
422 armv7 = is_arch_armv7()
423 if armv7:
424 # CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
425 o['variables']['arm_fpu'] = 'vfpv3'
426 o['variables']['arm_neon'] = 0
427 o['variables']['armv7'] = int(armv7)
428
429
14b04b0 ry Remove SCONS deprecate WAF
ry authored
430 def configure_node(o):
160e4d0 Ben Noordhuis build: re-enable gdbjit, honor --gdb again
bnoordhuis authored
431 o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0
98b1ce9 Ben Noordhuis build: fix mksnapshot crash on sunos
bnoordhuis authored
432 o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
06c82c5 Ben Noordhuis build: expand ~ in `./configure --prefix=~/a/b/c`
bnoordhuis authored
433 o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
a9f2c4a Fedor Indutny --without-npm option
indutny authored
434 o['variables']['node_install_npm'] = b(not options.without_npm)
28e6403 Ben Noordhuis build: add --unsafe-optimizations configure switch
bnoordhuis authored
435 o['variables']['node_unsafe_optimizations'] = (
436 1 if options.unsafe_optimizations else 0)
680d75a Shigeki Ohtsu build: make default_configuration consistent with BUILDTYPE
shigeki authored
437 o['default_configuration'] = 'Debug' if options.debug else 'Release'
14b04b0 ry Remove SCONS deprecate WAF
ry authored
438
c6bb361 Ben Noordhuis build: partially fix configure on ARM
bnoordhuis authored
439 host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
440 target_arch = options.dest_cpu or host_arch
441 o['variables']['host_arch'] = host_arch
442 o['variables']['target_arch'] = target_arch
443
444 if target_arch == 'arm':
bbf6b4e Ben Noordhuis configure: turn on VFPv3 on ARMv7
bnoordhuis authored
445 configure_arm(o)
07e5877 Ben Noordhuis build: disable strict aliasing in v8 with gcc 4.5.x
bnoordhuis authored
446
c6bb361 Ben Noordhuis build: partially fix configure on ARM
bnoordhuis authored
447 cc_version, is_clang = compiler_version()
100e163 Ben Noordhuis build: compile with -fno-tree-vrp when gcc >= 4.0
bnoordhuis authored
448 o['variables']['clang'] = 1 if is_clang else 0
449
8677860 isaacs build: Don't set gcc_version for Windows
isaacs authored
450 if not is_clang and cc_version != 0:
100e163 Ben Noordhuis build: compile with -fno-tree-vrp when gcc >= 4.0
bnoordhuis authored
451 o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
452
453 # clang has always supported -fvisibility=hidden, right?
07e5877 Ben Noordhuis build: disable strict aliasing in v8 with gcc 4.5.x
bnoordhuis authored
454 if not is_clang and cc_version < (4,0,0):
5ebc05f Ben Noordhuis build: disable -fvisibility=hidden if gcc < 4.0.0
bnoordhuis authored
455 o['variables']['visibility'] = ''
30b29d8 Ben Noordhuis build: disable -fstrict-aliasing if gcc < 4.6.0
bnoordhuis authored
456
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
457 # By default, enable DTrace on SunOS systems. Don't allow it on other
458 # systems, since it won't work. (The MacOS build process is different than
459 # SunOS, and we haven't implemented it.)
460 if sys.platform.startswith('sunos'):
b40f813 Ben Noordhuis build: fix spurious mksnapshot crashes for good
bnoordhuis authored
461 o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
06810b2 tracing: add systemtap support
Jan Wynholds authored
462 elif sys.platform.startswith('linux'):
463 o['variables']['node_use_dtrace'] = 'false'
148f5e6 Shigeki Ohtsu build: fix default dtrace flag on Linux
shigeki authored
464 o['variables']['node_use_systemtap'] = b(options.with_dtrace)
2f5fa08 Ben Noordhuis build: add --systemtap-includes configure switch
bnoordhuis authored
465 if options.systemtap_includes:
466 o['include_dirs'] += [options.systemtap_includes]
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
467 elif options.with_dtrace:
06810b2 tracing: add systemtap support
Jan Wynholds authored
468 raise Exception(
469 'DTrace is currently only supported on SunOS or Linux systems.')
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
470 else:
471 o['variables']['node_use_dtrace'] = 'false'
148f5e6 Shigeki Ohtsu build: fix default dtrace flag on Linux
shigeki authored
472 o['variables']['node_use_systemtap'] = 'false'
cc15299 David Pacheco build: add support for DTrace and postmortem
davepacheco authored
473
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
474 if options.no_ifaddrs:
475 o['defines'] += ['SUNOS_NO_IFADDRS']
14b04b0 ry Remove SCONS deprecate WAF
ry authored
476
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
477 # By default, enable ETW on Windows.
478 if sys.platform.startswith('win32'):
479 o['variables']['node_use_etw'] = b(not options.without_etw);
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
480 elif options.with_etw:
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
481 raise Exception('ETW is only supported on Windows.')
482 else:
483 o['variables']['node_use_etw'] = 'false'
484
f657ce6 Scott Blomquist windows: add tracing with performance counters
sblom authored
485 # By default, enable Performance counters on Windows.
486 if sys.platform.startswith('win32'):
487 o['variables']['node_use_perfctr'] = b(not options.without_perfctr);
488 elif options.with_perfctr:
489 raise Exception('Performance counter is only supported on Windows.')
490 else:
491 o['variables']['node_use_perfctr'] = 'false'
492
35a1421 Windows: Enable ETW events.
Igor Zinkovsky authored
493
14b04b0 ry Remove SCONS deprecate WAF
ry authored
494 def configure_libz(o):
d03b848 T.C. Hollingsworth build: support shared zlib
tchollingsworth authored
495 o['variables']['node_shared_zlib'] = b(options.shared_zlib)
496
497 # assume shared_zlib if one of these is set?
498 if options.shared_zlib_libpath:
499 o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
500 if options.shared_zlib_libname:
501 o['libraries'] += ['-l%s' % options.shared_zlib_libname]
502 elif options.shared_zlib:
503 o['libraries'] += ['-lz']
504 if options.shared_zlib_includes:
505 o['include_dirs'] += [options.shared_zlib_includes]
14b04b0 ry Remove SCONS deprecate WAF
ry authored
506
507
bfd78b6 Stephen Gallagher build: allow linking against system http_parser
sgallagher authored
508 def configure_http_parser(o):
509 o['variables']['node_shared_http_parser'] = b(options.shared_http_parser)
510
511 # assume shared http_parser if one of these is set?
512 if options.shared_http_parser_libpath:
513 o['libraries'] += ['-L%s' % options.shared_http_parser_libpath]
514 if options.shared_http_parser_libname:
515 o['libraries'] += ['-l%s' % options.shared_http_parser_libname]
516 elif options.shared_http_parser:
517 o['libraries'] += ['-lhttp_parser']
518 if options.shared_http_parser_includes:
519 o['include_dirs'] += [options.shared_http_parser_includes]
520
521
73ff653 Stephen Gallagher build: allow linking against system c-ares
sgallagher authored
522 def configure_cares(o):
523 o['variables']['node_shared_cares'] = b(options.shared_cares)
524
525 # assume shared cares if one of these is set?
526 if options.shared_cares_libpath:
527 o['libraries'] += ['-L%s' % options.shared_cares_libpath]
528 if options.shared_cares_libname:
529 o['libraries'] += ['-l%s' % options.shared_cares_libname]
530 elif options.shared_cares:
531 o['libraries'] += ['-lcares']
532 if options.shared_cares_includes:
533 o['include_dirs'] += [options.shared_cares_includes]
534
535
38809e3 Stephen Gallagher build: allow linking against system libuv
sgallagher authored
536 def configure_libuv(o):
537 o['variables']['node_shared_libuv'] = b(options.shared_libuv)
538
539 # assume shared libuv if one of these is set?
540 if options.shared_libuv_libpath:
541 o['libraries'] += ['-L%s' % options.shared_libuv_libpath]
542 if options.shared_libuv_libname:
543 o['libraries'] += ['-l%s' % options.shared_libuv_libname]
544 elif options.shared_libuv:
545 o['libraries'] += ['-luv']
546 if options.shared_libuv_includes:
547 o['include_dirs'] += [options.shared_libuv_includes]
548
549
14b04b0 ry Remove SCONS deprecate WAF
ry authored
550 def configure_v8(o):
a033261 Ben Noordhuis build: DRY configure script
bnoordhuis authored
551 o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
552 o['variables']['node_shared_v8'] = b(options.shared_v8)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
553
554 # assume shared_v8 if one of these is set?
555 if options.shared_v8_libpath:
556 o['libraries'] += ['-L%s' % options.shared_v8_libpath]
557 if options.shared_v8_libname:
558 o['libraries'] += ['-l%s' % options.shared_v8_libname]
59ecf2c isaacs Revert "Revert "build: support shared V8 properly""
isaacs authored
559 elif options.shared_v8:
560 o['libraries'] += ['-lv8']
14b04b0 ry Remove SCONS deprecate WAF
ry authored
561 if options.shared_v8_includes:
562 o['include_dirs'] += [options.shared_v8_includes]
563
564
565 def configure_openssl(o):
a033261 Ben Noordhuis build: DRY configure script
bnoordhuis authored
566 o['variables']['node_use_openssl'] = b(not options.without_ssl)
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
567 o['variables']['node_shared_openssl'] = b(options.shared_openssl)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
568
569 if options.without_ssl:
570 return
571
572 if options.no_ssl2:
573 o['defines'] += ['OPENSSL_NO_SSL2=1']
574
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
575 if options.shared_openssl:
576 (libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
14b04b0 ry Remove SCONS deprecate WAF
ry authored
577
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
578 if options.shared_openssl_libpath:
579 o['libraries'] += ['-L%s' % options.shared_openssl_libpath]
580
581 if options.shared_openssl_libname:
582 libnames = options.shared_openssl_libname.split(',')
583 o['libraries'] += ['-l%s' % s for s in libnames]
e61de70 ry gyp: use built-in openssl by default
ry authored
584 else:
585 o['libraries'] += libs.split()
586
f315029 Ben Noordhuis build: rename openssl configure switches
bnoordhuis authored
587 if options.shared_openssl_includes:
588 o['include_dirs'] += [options.shared_openssl_includes]
e61de70 ry gyp: use built-in openssl by default
ry authored
589 else:
590 o['cflags'] += cflags.split()
14b04b0 ry Remove SCONS deprecate WAF
ry authored
591
592
593 output = {
1e738c5 Ben Noordhuis build: make python executable configurable
bnoordhuis authored
594 'variables': { 'python': sys.executable },
14b04b0 ry Remove SCONS deprecate WAF
ry authored
595 'include_dirs': [],
596 'libraries': [],
597 'defines': [],
598 'cflags': [],
599 }
600
601 configure_node(output)
602 configure_libz(output)
bfd78b6 Stephen Gallagher build: allow linking against system http_parser
sgallagher authored
603 configure_http_parser(output)
73ff653 Stephen Gallagher build: allow linking against system c-ares
sgallagher authored
604 configure_cares(output)
38809e3 Stephen Gallagher build: allow linking against system libuv
sgallagher authored
605 configure_libuv(output)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
606 configure_v8(output)
607 configure_openssl(output)
608
609 # variables should be a root level element,
610 # move everything else to target_defaults
611 variables = output['variables']
612 del output['variables']
613 output = {
614 'variables': variables,
615 'target_defaults': output
616 }
624f70e ry GYP: rename options.gypi to config.gypi
ry authored
617 pprint.pprint(output, indent=2)
14b04b0 ry Remove SCONS deprecate WAF
ry authored
618
e493b29 Ben Noordhuis build: respect --debug configure switch
bnoordhuis authored
619 def write(filename, data):
620 filename = os.path.join(root_dir, filename)
621 print "creating ", filename
fdeeabb Nathan Rajlich configure: don't use "with" for Python 2.5 and older
TooTallNate authored
622 f = open(filename, 'w+')
623 f.write(data)
e493b29 Ben Noordhuis build: respect --debug configure switch
bnoordhuis authored
624
625 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
626 pprint.pformat(output, indent=2) + "\n")
e493b29 Ben Noordhuis build: respect --debug configure switch
bnoordhuis authored
627
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
628 config = {
629 'BUILDTYPE': 'Debug' if options.debug else 'Release',
630 'USE_NINJA': str(int(options.use_ninja or 0)),
ac04716 Timothy J Fontaine build: add configure option to generate xcode build files
tjfontaine authored
631 'USE_XCODE': str(int(options.use_xcode or 0)),
1e738c5 Ben Noordhuis build: make python executable configurable
bnoordhuis authored
632 'PYTHON': sys.executable,
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
633 }
634 config = '\n'.join(map('='.join, config.iteritems())) + '\n'
635
636 write('config.mk',
637 '# Do not edit. Generated by the configure script.\n' + config)
97c9745 ry Back to WAF
ry authored
638
7b6d3ce Ben Noordhuis build: add ninja support to Makefile
bnoordhuis authored
639 if options.use_ninja:
d3135e0 Timothy J Fontaine build: add configure option to build with ninja
tjfontaine authored
640 gyp_args = ['-f', 'ninja']
ac04716 Timothy J Fontaine build: add configure option to generate xcode build files
tjfontaine authored
641 elif options.use_xcode:
642 gyp_args = ['-f', 'xcode']
d3135e0 Timothy J Fontaine build: add configure option to build with ninja
tjfontaine authored
643 elif os.name == 'nt':
cfbfaaa Frederico Silva build: let gyp choose msvs version
fredericosilva authored
644 gyp_args = ['-f', 'msvs', '-G', 'msvs_version=auto']
608898c Nathan Rajlich configure: add a "--dest-os" option to force a gyp "flavor"
TooTallNate authored
645 elif options.dest_os:
646 gyp_args = ['-f', 'make-' + options.dest_os]
dc75232 Nathan Rajlich vcbuild: run the 'configure' script in vcbuild.bat
TooTallNate authored
647 else:
d5f13f6 Ben Noordhuis build: use proper python interpreter
bnoordhuis authored
648 gyp_args = ['-f', 'make']
649
650 subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)
Something went wrong with that request. Please try again.