OLD | NEW |
1 # Copyright 2008 the V8 project authors. All rights reserved. | 1 # Copyright 2008 the V8 project authors. All rights reserved. |
2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
4 # met: | 4 # met: |
5 # | 5 # |
6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 ANDROID_TOP + '/system/core/include'] | 83 ANDROID_TOP + '/system/core/include'] |
84 | 84 |
85 ANDROID_LINKFLAGS = ['-nostdlib', | 85 ANDROID_LINKFLAGS = ['-nostdlib', |
86 '-Bdynamic', | 86 '-Bdynamic', |
87 '-Wl,-T,' + ANDROID_TOP + '/build/core/armelf.x', | 87 '-Wl,-T,' + ANDROID_TOP + '/build/core/armelf.x', |
88 '-Wl,-dynamic-linker,/system/bin/linker', | 88 '-Wl,-dynamic-linker,/system/bin/linker', |
89 '-Wl,--gc-sections', | 89 '-Wl,--gc-sections', |
90 '-Wl,-z,nocopyreloc', | 90 '-Wl,-z,nocopyreloc', |
91 '-Wl,-rpath-link=' + ANDROID_TOP + '/out/target/product/gen
eric/obj/lib', | 91 '-Wl,-rpath-link=' + ANDROID_TOP + '/out/target/product/gen
eric/obj/lib', |
92 ANDROID_TOP + '/out/target/product/generic/obj/lib/crtbegin
_dynamic.o', | 92 ANDROID_TOP + '/out/target/product/generic/obj/lib/crtbegin
_dynamic.o', |
93 ANDROID_TOP + '/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1
/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a', | 93 ANDROID_TOP + '/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a', |
94 ANDROID_TOP + '/out/target/product/generic/obj/lib/crtend_a
ndroid.o']; | 94 ANDROID_TOP + '/out/target/product/generic/obj/lib/crtend_a
ndroid.o']; |
95 | 95 |
96 LIBRARY_FLAGS = { | 96 LIBRARY_FLAGS = { |
97 'all': { | 97 'all': { |
98 'CPPPATH': [join(root_dir, 'src')], | 98 'CPPPATH': [join(root_dir, 'src')], |
99 'regexp:native': { | 99 'regexp:native': { |
100 'CPPDEFINES': ['V8_NATIVE_REGEXP'] | 100 'CPPDEFINES': ['V8_NATIVE_REGEXP'] |
101 }, | 101 }, |
102 'mode:debug': { | 102 'mode:debug': { |
103 'CPPDEFINES': ['V8_ENABLE_CHECKS'] | 103 'CPPDEFINES': ['V8_ENABLE_CHECKS'] |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 'all': { | 364 'all': { |
365 'WARNINGFLAGS': ['/WX', '/wd4018', '/wd4244'] | 365 'WARNINGFLAGS': ['/WX', '/wd4018', '/wd4244'] |
366 } | 366 } |
367 } | 367 } |
368 } | 368 } |
369 | 369 |
370 | 370 |
371 CCTEST_EXTRA_FLAGS = { | 371 CCTEST_EXTRA_FLAGS = { |
372 'all': { | 372 'all': { |
373 'CPPPATH': [join(root_dir, 'src')], | 373 'CPPPATH': [join(root_dir, 'src')], |
374 'LIBS': ['$LIBRARY'] | |
375 }, | 374 }, |
376 'gcc': { | 375 'gcc': { |
377 'all': { | 376 'all': { |
378 'LIBPATH': [abspath('.')] | 377 'LIBPATH': [abspath('.')] |
379 }, | 378 }, |
380 'os:linux': { | 379 'os:linux': { |
381 'LIBS': ['pthread'], | 380 'LIBS': ['pthread'], |
382 }, | 381 }, |
383 'os:macos': { | 382 'os:macos': { |
384 'LIBS': ['pthread'], | 383 'LIBS': ['pthread'], |
385 }, | 384 }, |
386 'os:freebsd': { | 385 'os:freebsd': { |
387 'LIBS': ['execinfo', 'pthread'] | 386 'LIBS': ['execinfo', 'pthread'] |
388 }, | 387 }, |
389 'os:solaris': { | 388 'os:solaris': { |
390 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'], | 389 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'], |
391 'LINKFLAGS': ['-mt'] | 390 'LINKFLAGS': ['-mt'] |
392 }, | 391 }, |
393 'os:openbsd': { | 392 'os:openbsd': { |
394 'LIBS': ['execinfo', 'pthread'] | 393 'LIBS': ['execinfo', 'pthread'] |
395 }, | 394 }, |
396 'os:win32': { | 395 'os:win32': { |
397 'LIBS': ['winmm', 'ws2_32'] | 396 'LIBS': ['winmm', 'ws2_32'] |
398 }, | 397 }, |
399 'os:android': { | 398 'os:android': { |
400 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__', | 399 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__', |
401 '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'], | 400 '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'], |
402 'CCFLAGS': ANDROID_FLAGS, | 401 'CCFLAGS': ANDROID_FLAGS, |
403 'CPPPATH': ANDROID_INCLUDES, | 402 'CPPPATH': ANDROID_INCLUDES, |
404 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib'], | 403 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib', |
| 404 ANDROID_TOP + '/prebuilt/linux-x86/toolchain/arm-eabi-4.4.
0/lib/gcc/arm-eabi/4.4.0/interwork'], |
405 'LINKFLAGS': ANDROID_LINKFLAGS, | 405 'LINKFLAGS': ANDROID_LINKFLAGS, |
406 'LIBS': ['log', 'c', 'stdc++', 'm'], | 406 'LIBS': ['log', 'c', 'stdc++', 'm', 'gcc'], |
407 'mode:release': { | 407 'mode:release': { |
408 'CPPDEFINES': ['SK_RELEASE', 'NDEBUG'] | 408 'CPPDEFINES': ['SK_RELEASE', 'NDEBUG'] |
409 } | 409 } |
410 }, | 410 }, |
411 }, | 411 }, |
412 'msvc': { | 412 'msvc': { |
413 'all': { | 413 'all': { |
414 'CPPDEFINES': ['_HAS_EXCEPTIONS=0'], | 414 'CPPDEFINES': ['_HAS_EXCEPTIONS=0'], |
415 'LIBS': ['winmm', 'ws2_32'] | 415 'LIBS': ['winmm', 'ws2_32'] |
416 }, | 416 }, |
417 'library:shared': { | 417 'library:shared': { |
418 'CPPDEFINES': ['USING_V8_SHARED'] | 418 'CPPDEFINES': ['USING_V8_SHARED'] |
419 }, | 419 }, |
420 'arch:ia32': { | 420 'arch:ia32': { |
421 'CPPDEFINES': ['V8_TARGET_ARCH_IA32'] | 421 'CPPDEFINES': ['V8_TARGET_ARCH_IA32'] |
422 }, | 422 }, |
423 'arch:x64': { | 423 'arch:x64': { |
424 'CPPDEFINES': ['V8_TARGET_ARCH_X64'], | 424 'CPPDEFINES': ['V8_TARGET_ARCH_X64'], |
425 'LINKFLAGS': ['/STACK:2091752'] | 425 'LINKFLAGS': ['/STACK:2091752'] |
426 }, | 426 }, |
427 } | 427 } |
428 } | 428 } |
429 | 429 |
430 | 430 |
431 SAMPLE_FLAGS = { | 431 SAMPLE_FLAGS = { |
432 'all': { | 432 'all': { |
433 'CPPPATH': [join(abspath('.'), 'include')], | 433 'CPPPATH': [join(abspath('.'), 'include')], |
434 'LIBS': ['$LIBRARY'], | |
435 }, | 434 }, |
436 'gcc': { | 435 'gcc': { |
437 'all': { | 436 'all': { |
438 'LIBPATH': ['.'], | 437 'LIBPATH': ['.'], |
439 'CCFLAGS': ['-fno-rtti', '-fno-exceptions'] | 438 'CCFLAGS': ['-fno-rtti', '-fno-exceptions'] |
440 }, | 439 }, |
441 'os:linux': { | 440 'os:linux': { |
442 'LIBS': ['pthread'], | 441 'LIBS': ['pthread'], |
443 }, | 442 }, |
444 'os:macos': { | 443 'os:macos': { |
(...skipping 13 matching lines...) Expand all Loading... |
458 'LIBS': ['execinfo', 'pthread'] | 457 'LIBS': ['execinfo', 'pthread'] |
459 }, | 458 }, |
460 'os:win32': { | 459 'os:win32': { |
461 'LIBS': ['winmm', 'ws2_32'] | 460 'LIBS': ['winmm', 'ws2_32'] |
462 }, | 461 }, |
463 'os:android': { | 462 'os:android': { |
464 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__', | 463 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__', |
465 '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'], | 464 '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'], |
466 'CCFLAGS': ANDROID_FLAGS, | 465 'CCFLAGS': ANDROID_FLAGS, |
467 'CPPPATH': ANDROID_INCLUDES, | 466 'CPPPATH': ANDROID_INCLUDES, |
468 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib'], | 467 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib', |
| 468 ANDROID_TOP + '/prebuilt/linux-x86/toolchain/arm-eabi-4.4.
0/lib/gcc/arm-eabi/4.4.0/interwork'], |
469 'LINKFLAGS': ANDROID_LINKFLAGS, | 469 'LINKFLAGS': ANDROID_LINKFLAGS, |
470 'LIBS': ['log', 'c', 'stdc++', 'm'], | 470 'LIBS': ['log', 'c', 'stdc++', 'm', 'gcc'], |
471 'mode:release': { | 471 'mode:release': { |
472 'CPPDEFINES': ['SK_RELEASE', 'NDEBUG'] | 472 'CPPDEFINES': ['SK_RELEASE', 'NDEBUG'] |
473 } | 473 } |
474 }, | 474 }, |
475 'arch:ia32': { | 475 'arch:ia32': { |
476 'CCFLAGS': ['-m32'], | 476 'CCFLAGS': ['-m32'], |
477 'LINKFLAGS': ['-m32'] | 477 'LINKFLAGS': ['-m32'] |
478 }, | 478 }, |
479 'arch:x64': { | 479 'arch:x64': { |
480 'CCFLAGS': ['-m64'], | 480 'CCFLAGS': ['-m64'], |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
583 'LIBS': ['pthread'], | 583 'LIBS': ['pthread'], |
584 }, | 584 }, |
585 'os:solaris': { | 585 'os:solaris': { |
586 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'], | 586 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'], |
587 'LINKFLAGS': ['-mt'] | 587 'LINKFLAGS': ['-mt'] |
588 }, | 588 }, |
589 'os:openbsd': { | 589 'os:openbsd': { |
590 'LIBS': ['pthread'], | 590 'LIBS': ['pthread'], |
591 }, | 591 }, |
592 'os:android': { | 592 'os:android': { |
593 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib'], | 593 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib', |
| 594 ANDROID_TOP + '/prebuilt/linux-x86/toolchain/arm-eabi-4.4.
0/lib/gcc/arm-eabi/4.4.0/interwork'], |
594 'LINKFLAGS': ANDROID_LINKFLAGS, | 595 'LINKFLAGS': ANDROID_LINKFLAGS, |
595 'LIBS': ['log', 'c', 'stdc++', 'm'], | 596 'LIBS': ['log', 'c', 'stdc++', 'm', 'gcc'], |
596 }, | 597 }, |
597 'os:win32': { | 598 'os:win32': { |
598 'LIBS': ['winmm', 'ws2_32'], | 599 'LIBS': ['winmm', 'ws2_32'], |
599 }, | 600 }, |
600 }, | 601 }, |
601 'msvc': { | 602 'msvc': { |
602 'all': { | 603 'all': { |
603 'LIBS': ['winmm', 'ws2_32'] | 604 'LIBS': ['winmm', 'ws2_32'] |
604 } | 605 } |
605 } | 606 } |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 } | 982 } |
982 | 983 |
983 # Generate library base name. | 984 # Generate library base name. |
984 target_id = mode | 985 target_id = mode |
985 suffix = SUFFIXES[target_id] | 986 suffix = SUFFIXES[target_id] |
986 library_name = 'v8' + suffix | 987 library_name = 'v8' + suffix |
987 version = GetVersion() | 988 version = GetVersion() |
988 if context.options['soname'] == 'on': | 989 if context.options['soname'] == 'on': |
989 # When building shared object with SONAME version the library name. | 990 # When building shared object with SONAME version the library name. |
990 library_name += '-' + version | 991 library_name += '-' + version |
991 env['LIBRARY'] = library_name | |
992 | 992 |
993 # Generate library SONAME if required by the build. | 993 # Generate library SONAME if required by the build. |
994 if context.options['soname'] == 'on': | 994 if context.options['soname'] == 'on': |
995 soname = GetSpecificSONAME() | 995 soname = GetSpecificSONAME() |
996 if soname == '': | 996 if soname == '': |
997 soname = 'lib' + library_name + '.so' | 997 soname = 'lib' + library_name + '.so' |
998 env['SONAME'] = soname | 998 env['SONAME'] = soname |
999 | 999 |
1000 # Build the object files by invoking SCons recursively. | 1000 # Build the object files by invoking SCons recursively. |
1001 (object_files, shell_files, mksnapshot) = env.SConscript( | 1001 (object_files, shell_files, mksnapshot) = env.SConscript( |
1002 join('src', 'SConscript'), | 1002 join('src', 'SConscript'), |
1003 build_dir=join('obj', target_id), | 1003 build_dir=join('obj', target_id), |
1004 exports='context', | 1004 exports='context', |
1005 duplicate=False | 1005 duplicate=False |
1006 ) | 1006 ) |
1007 | 1007 |
1008 context.mksnapshot_targets.append(mksnapshot) | 1008 context.mksnapshot_targets.append(mksnapshot) |
1009 | 1009 |
1010 # Link the object files into a library. | 1010 # Link the object files into a library. |
1011 env.Replace(**context.flags['v8']) | 1011 env.Replace(**context.flags['v8']) |
| 1012 env.Prepend(LIBS=[library_name]) |
1012 | 1013 |
1013 context.ApplyEnvOverrides(env) | 1014 context.ApplyEnvOverrides(env) |
1014 if context.options['library'] == 'static': | 1015 if context.options['library'] == 'static': |
1015 library = env.StaticLibrary(library_name, object_files) | 1016 library = env.StaticLibrary(library_name, object_files) |
1016 else: | 1017 else: |
1017 # There seems to be a glitch in the way scons decides where to put | 1018 # There seems to be a glitch in the way scons decides where to put |
1018 # PDB files when compiling using MSVC so we specify it manually. | 1019 # PDB files when compiling using MSVC so we specify it manually. |
1019 # This should not affect any other platforms. | 1020 # This should not affect any other platforms. |
1020 pdb_name = library_name + '.dll.pdb' | 1021 pdb_name = library_name + '.dll.pdb' |
1021 library = env.SharedLibrary(library_name, object_files, PDB=pdb_name) | 1022 library = env.SharedLibrary(library_name, object_files, PDB=pdb_name) |
1022 context.library_targets.append(library) | 1023 context.library_targets.append(library) |
1023 | 1024 |
1024 d8_env = Environment() | 1025 d8_env = Environment() |
1025 d8_env.Replace(**context.flags['d8']) | 1026 d8_env.Replace(**context.flags['d8']) |
1026 context.ApplyEnvOverrides(d8_env) | 1027 context.ApplyEnvOverrides(d8_env) |
1027 shell = d8_env.Program('d8' + suffix, object_files + shell_files) | 1028 shell = d8_env.Program('d8' + suffix, object_files + shell_files) |
1028 context.d8_targets.append(shell) | 1029 context.d8_targets.append(shell) |
1029 | 1030 |
1030 for sample in context.samples: | 1031 for sample in context.samples: |
1031 sample_env = Environment(LIBRARY=library_name) | 1032 sample_env = Environment() |
1032 sample_env.Replace(**context.flags['sample']) | 1033 sample_env.Replace(**context.flags['sample']) |
| 1034 sample_env.Prepend(LIBS=[library_name]) |
1033 context.ApplyEnvOverrides(sample_env) | 1035 context.ApplyEnvOverrides(sample_env) |
1034 sample_object = sample_env.SConscript( | 1036 sample_object = sample_env.SConscript( |
1035 join('samples', 'SConscript'), | 1037 join('samples', 'SConscript'), |
1036 build_dir=join('obj', 'sample', sample, target_id), | 1038 build_dir=join('obj', 'sample', sample, target_id), |
1037 exports='sample context', | 1039 exports='sample context', |
1038 duplicate=False | 1040 duplicate=False |
1039 ) | 1041 ) |
1040 sample_name = sample + suffix | 1042 sample_name = sample + suffix |
1041 sample_program = sample_env.Program(sample_name, sample_object) | 1043 sample_program = sample_env.Program(sample_name, sample_object) |
1042 sample_env.Depends(sample_program, library) | 1044 sample_env.Depends(sample_program, library) |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 # version of scons. Also, there's a bug in some revisions that | 1095 # version of scons. Also, there's a bug in some revisions that |
1094 # doesn't allow this flag to be set, so we swallow any exceptions. | 1096 # doesn't allow this flag to be set, so we swallow any exceptions. |
1095 # Lovely. | 1097 # Lovely. |
1096 try: | 1098 try: |
1097 SetOption('warn', 'no-deprecated') | 1099 SetOption('warn', 'no-deprecated') |
1098 except: | 1100 except: |
1099 pass | 1101 pass |
1100 | 1102 |
1101 | 1103 |
1102 Build() | 1104 Build() |
OLD | NEW |