Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: build/SConscript.main

Issue 10626: Allow chromium to be built with some system libs by introducing... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « AUTHORS ('k') | chrome/SConscript » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os 5 import os
6 import shutil 6 import shutil
7 import sys 7 import sys
8 8
9 9
10 p = ARGUMENTS.get('PROGRESS') 10 p = ARGUMENTS.get('PROGRESS')
(...skipping 11 matching lines...) Expand all
22 load = ARGUMENTS.get('LOAD') 22 load = ARGUMENTS.get('LOAD')
23 if load: 23 if load:
24 load = load.split(',') 24 load = load.split(',')
25 else: 25 else:
26 load = [] 26 load = []
27 27
28 28
29 root_env = Environment( 29 root_env = Environment(
30 tools = ['component_setup'], 30 tools = ['component_setup'],
31 31
32 # Requested list of system (shared) libraries, from the comma separated
33 # SYSTEM_LIBS command-line argument
34 req_system_libs = [],
35 # All supported system libraries, for the help message
36 all_system_libs = [],
37
32 CHROME_SRC_DIR = '$MAIN_DIR/..', 38 CHROME_SRC_DIR = '$MAIN_DIR/..',
33 DESTINATION_ROOT = '$MAIN_DIR/Hammer', 39 DESTINATION_ROOT = '$MAIN_DIR/Hammer',
34 TARGET_ROOT = '$DESTINATION_ROOT', 40 TARGET_ROOT = '$DESTINATION_ROOT',
35 41
36 # Where ComponentTestProgram() will build test executables. 42 # Where ComponentTestProgram() will build test executables.
37 TESTS_DIR = '$TARGET_ROOT', 43 TESTS_DIR = '$TARGET_ROOT',
38 44
39 # Where ComponentProgram() will build program executables. 45 # Where ComponentProgram() will build program executables.
40 STAGING_DIR = '$TARGET_ROOT', 46 STAGING_DIR = '$TARGET_ROOT',
41 47
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 94
89 PERL = 'perl', 95 PERL = 'perl',
90 PERL_INCLUDE_FLAG = '-I ', 96 PERL_INCLUDE_FLAG = '-I ',
91 PERL_INCLUDE_SUFFIX = '', 97 PERL_INCLUDE_SUFFIX = '',
92 _PERL_INCLUDE_FLAGS = ('${_concat(PERL_INCLUDE_FLAG, ' 98 _PERL_INCLUDE_FLAGS = ('${_concat(PERL_INCLUDE_FLAG, '
93 'PERL_INCLUDE_PATH, ' 99 'PERL_INCLUDE_PATH, '
94 'PERL_INCLUDE_SUFFIX,' 100 'PERL_INCLUDE_SUFFIX,'
95 '__env__, RDirs, TARGET, SOURCE)}'), 101 '__env__, RDirs, TARGET, SOURCE)}'),
96 ) 102 )
97 103
104 root_env['req_system_libs'] = ARGUMENTS.get('SYSTEM_LIBS').split(',')
105
106 def WantSystemLib(env, lib):
107 """
108 Return true if lib has been requested as a system library in SYSTEM_LIBS.
109 """
110 if lib not in env['all_system_libs']:
111 env['all_system_libs'].append(lib)
112 return (lib in env['req_system_libs'])
113 root_env.AddMethod(WantSystemLib, "WantSystemLib")
98 114
99 def ChromeProgram(env, *args, **kw): 115 def ChromeProgram(env, *args, **kw):
100 return env.ComponentProgram(*args, **kw) 116 return env.ComponentProgram(*args, **kw)
101 root_env.AddMethod(ChromeProgram) 117 root_env.AddMethod(ChromeProgram)
102 118
103 def ChromeTestProgram(env, *args, **kw): 119 def ChromeTestProgram(env, *args, **kw):
104 return env.ComponentTestProgram(*args, **kw) 120 return env.ComponentTestProgram(*args, **kw)
105 root_env.AddMethod(ChromeTestProgram) 121 root_env.AddMethod(ChromeTestProgram)
106 122
107 def ChromeStaticLibrary(env, *args, **kw): 123 def ChromeStaticLibrary(env, *args, **kw):
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 if LoadComponent('sdch'): 217 if LoadComponent('sdch'):
202 sconscripts.append('$SDCH_DIR/SConscript') 218 sconscripts.append('$SDCH_DIR/SConscript')
203 219
204 if LoadComponent('skia'): 220 if LoadComponent('skia'):
205 sconscripts.append('$SKIA_DIR/SConscript') 221 sconscripts.append('$SKIA_DIR/SConscript')
206 222
207 if LoadComponent('testing'): 223 if LoadComponent('testing'):
208 sconscripts.append('$TESTING_DIR/SConscript.gtest') 224 sconscripts.append('$TESTING_DIR/SConscript.gtest')
209 225
210 if LoadComponent('third_party'): 226 if LoadComponent('third_party'):
227 if not root_env.WantSystemLib('bzip2'):
228 sconscripts.append('$BZIP2_DIR/bzip2.scons')
229 root_env.Append(BZIP2_LIB = ['bzip2'])
230 else:
231 root_env.Append(BZIP2_LIB = ['bz2'])
232 if not root_env.WantSystemLib('libpng'):
233 sconscripts.append('$LIBPNG_DIR/libpng.scons')
234 if not root_env.WantSystemLib('libjpeg'):
235 sconscripts.append('$LIBJPEG_DIR/SConscript')
236 if not root_env.WantSystemLib('libxml'):
237 sconscripts.append('$LIBXML_DIR/SConscript')
238 root_env.Append(XML_LIB = ['libxml'])
239 else:
240 root_env.Append(XML_LIB = ['xml2'])
241 if not root_env.WantSystemLib('libxslt'):
242 sconscripts.append('$LIBXSLT_DIR/SConscript')
243 if not root_env.WantSystemLib('lzma_sdk'):
244 sconscripts.append('$LZMA_SDK_DIR/SConscript')
245 if not root_env.WantSystemLib('zlib'):
246 sconscripts.append('$ZLIB_DIR/zlib.scons')
247 root_env.Append(ZLIB_LIB = ['zlib'])
248 else:
249 root_env.Append(ZLIB_LIB = ['z'])
211 sconscripts.extend([ 250 sconscripts.extend([
212 '$BSDIFF_DIR/SConscript', 251 '$BSDIFF_DIR/SConscript',
213 '$BZIP2_DIR/bzip2.scons',
214 '$ICU38_DIR/icu38.scons', 252 '$ICU38_DIR/icu38.scons',
215 '$LIBPNG_DIR/libpng.scons',
216 '$LZMA_SDK_DIR/SConscript',
217 '$MODP_B64_DIR/modp_b64.scons', 253 '$MODP_B64_DIR/modp_b64.scons',
218 '$ZLIB_DIR/zlib.scons',
219 '$LIBJPEG_DIR/SConscript',
220 '$LIBXML_DIR/SConscript',
221 '$LIBXSLT_DIR/SConscript',
222 '$BSPATCH_DIR/SConscript', 254 '$BSPATCH_DIR/SConscript',
223 ]) 255 ])
224 256
225 if LoadComponent('v8') and root_env.Dir('$CHROME_SRC_DIR/v8').exists(): 257 if LoadComponent('v8') and root_env.Dir('$CHROME_SRC_DIR/v8').exists():
226 sconscripts.append('$OBJ_ROOT/build/SConscript.v8') 258 sconscripts.append('$OBJ_ROOT/build/SConscript.v8')
227 259
228 if LoadComponent('webkit'): 260 if LoadComponent('webkit'):
229 sconscripts.append('$WEBKIT_DIR/SConscript') 261 sconscripts.append('$WEBKIT_DIR/SConscript')
230 262
231 263
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 linux_env.ParseConfig('pkg-config --cflags --libs gtk+-2.0') 542 linux_env.ParseConfig('pkg-config --cflags --libs gtk+-2.0')
511 linux_env.ParseConfig('pkg-config --cflags --libs pangoft2') 543 linux_env.ParseConfig('pkg-config --cflags --libs pangoft2')
512 except OSError, e: 544 except OSError, e:
513 print ('\n' 545 print ('\n'
514 'Failed to find a package dependency. Please install all the\n' 546 'Failed to find a package dependency. Please install all the\n'
515 'packages listed at\n' 547 'packages listed at\n'
516 'http://code.google.com/p/chromium/wiki/LinuxBuildInstructions' 548 'http://code.google.com/p/chromium/wiki/LinuxBuildInstructions'
517 '#Software_Requirements') 549 '#Software_Requirements')
518 550
519 sys.exit(1) 551 sys.exit(1)
520 552 if root_env.WantSystemLib('libxml'):
553 try:
554 linux_env.ParseConfig('pkg-config --cflags --libs libxml-2.0')
555 except OSError, e:
556 print ('\n'
557 'libxml requested in SYSTEM_LIBS but not found\n')
558 sys.exit(1)
559 if root_env.WantSystemLib('libxslt'):
560 try:
561 linux_env.ParseConfig('pkg-config --cflags --libs libxslt')
562 except OSError, e:
563 print ('\n'
564 'libxslt requested in SYSTEM_LIBS but not found\n')
565 sys.exit(1)
521 566
522 # -------------------------------------------------------------------------- 567 # --------------------------------------------------------------------------
523 # Mac specific 568 # Mac specific
524 569
525 mac_env = root_env.Clone() 570 mac_env = root_env.Clone()
526 environment_list.append(mac_env) 571 environment_list.append(mac_env)
527 mac_env.Tool('target_platform_mac') 572 mac_env.Tool('target_platform_mac')
528 mac_env.Tool('target_debug') 573 mac_env.Tool('target_debug')
529 mac_env.Replace( 574 mac_env.Replace(
530 BUILD_TYPE = 'debug-mac', 575 BUILD_TYPE = 'debug-mac',
(...skipping 20 matching lines...) Expand all
551 '$CHROME_DIR/SConscript', 596 '$CHROME_DIR/SConscript',
552 '$GEARS_DIR/SConscript', 597 '$GEARS_DIR/SConscript',
553 '$GOOGLE_UPDATE_DIR/SConscript', 598 '$GOOGLE_UPDATE_DIR/SConscript',
554 '$RLZ_DIR/SConscript', 599 '$RLZ_DIR/SConscript',
555 '$SANDBOX_DIR/sandbox.scons', 600 '$SANDBOX_DIR/sandbox.scons',
556 'build/SConscript.v8', 601 'build/SConscript.v8',
557 '$WEBKIT_DIR/SConscript', 602 '$WEBKIT_DIR/SConscript',
558 ], 603 ],
559 ) 604 )
560 605
561 mac_env.Append( 606 if not root_env.WantSystemLib('libevent'):
607 mac_env.Append(
562 BUILD_SCONSCRIPTS = [ 608 BUILD_SCONSCRIPTS = [
563 '$LIBEVENT_DIR/libevent.scons', 609 '$LIBEVENT_DIR/libevent.scons',
564 ], 610 ],
611 )
612 mac_env.Append(
565 CFLAGS = [ 613 CFLAGS = [
566 '-std=c99', 614 '-std=c99',
567 ], 615 ],
568 CXXFLAGS = [ 616 CXXFLAGS = [
569 '-fvisibility-inlines-hidden', 617 '-fvisibility-inlines-hidden',
570 '${str(SOURCE).endswith(".mm") and "-fobjc-gc" or ""}', 618 '${str(SOURCE).endswith(".mm") and "-fobjc-gc" or ""}',
571 ], 619 ],
572 CCFLAGS = [ 620 CCFLAGS = [
573 '-fmessage-length=0', 621 '-fmessage-length=0',
574 '-pipe', 622 '-pipe',
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 ) 679 )
632 680
633 681
634 help_fmt = """ 682 help_fmt = """
635 Usage: hammer [SCONS_OPTIONS] [VARIABLES] [TARGET] ... 683 Usage: hammer [SCONS_OPTIONS] [VARIABLES] [TARGET] ...
636 684
637 Supported build variables: 685 Supported build variables:
638 LOAD=[module,...] Comma-separated list of components to load in the 686 LOAD=[module,...] Comma-separated list of components to load in the
639 dependency graph ('-' prefix excludes): 687 dependency graph ('-' prefix excludes):
640 %s 688 %s
689 SYSTEM_LIBS=[lib,...] Comma-separated list of system libraries to link
690 dynamically (by default they are built in from
691 included sources):
692 %s
641 PROGRESS=type Display a progress indicator: 693 PROGRESS=type Display a progress indicator:
642 name: print each evaluated target name 694 name: print each evaluated target name
643 spinner: print a spinner every 5 targets 695 spinner: print a spinner every 5 targets
644 VERBOSE=1 Display full command lines 696 VERBOSE=1 Display full command lines
645 """ 697 """
646 698
647 if GetOption('help'): 699 if GetOption('help'):
648 import textwrap 700 import textwrap
649 tw = textwrap.TextWrapper( 701 tw = textwrap.TextWrapper(
650 width = 78, 702 width = 78,
651 initial_indent = ' '*32, 703 initial_indent = ' '*32,
652 subsequent_indent = ' '*32, 704 subsequent_indent = ' '*32,
653 ) 705 )
654 components = tw.fill(', '.join(components)) 706 components = tw.fill(', '.join(components))
707 all_system_libs = tw.fill(', '.join(env['all_system_libs']))
655 708
656 Help(help_fmt % components) 709 Help(help_fmt % (components, all_system_libs))
657 710
658 711
659 Import('build_component') 712 Import('build_component')
660 Default(None) # Reset default target to empty. 713 Default(None) # Reset default target to empty.
661 Default(Alias(build_component)) # Set default target based on where built. 714 Default(Alias(build_component)) # Set default target based on where built.
662 715
663 # ------------------------------------------------------------------------- 716 # -------------------------------------------------------------------------
664 717
665 # Invoke all the SConscripts in each of the environments that make sense on 718 # Invoke all the SConscripts in each of the environments that make sense on
666 # this host-platform. 719 # this host-platform.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 'all_libraries', 769 'all_libraries',
717 'all_languages', 770 'all_languages',
718 'all_programs', 771 'all_programs',
719 'all_test_programs', 772 'all_test_programs',
720 ], projects = [p], 773 ], projects = [p],
721 COMPONENT_VS_PROJECT_SCRIPT_PATH=( 774 COMPONENT_VS_PROJECT_SCRIPT_PATH=(
722 'cd $$(ProjectDir)/$VS_PROJECT_TO_MAIN_DIR && hammer.bat'), 775 'cd $$(ProjectDir)/$VS_PROJECT_TO_MAIN_DIR && hammer.bat'),
723 ) 776 )
724 777
725 # ------------------------------------------------------------------------- 778 # -------------------------------------------------------------------------
OLDNEW
« no previous file with comments | « AUTHORS ('k') | chrome/SConscript » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698