blob: 44d273058d206b5b505218b0f77f4a020ff7c44c [file] [log] [blame]
# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
__doc__ = """
Configuration for building base.lib / libbase.a.
"""
Import('env')
env = env.Clone()
env.ApplySConscript([
'$ICU38_DIR/using_icu38.scons',
])
if env.Bit('windows'):
env.Prepend(
CCFLAGS = [
'/Wp64',
],
)
# Add object files David M Gay's dtoa and g_fmt third party lib. We
# compile these separately so we can disable warnings.
env_dmg_fp = env.Clone()
if env_dmg_fp.Bit('windows'):
env_dmg_fp.Append(
CCFLAGS = [
'/wd4018',
'/wd4102',
'/wd4244',
'/wd4554',
],
)
elif env_dmg_fp.Bit('posix'):
for var in ['CCFLAGS', 'CXXFLAGS']:
if '-Wall' in env_dmg_fp[var]:
env_dmg_fp[var].remove('-Wall')
env_dmg_fp[var].append('-Wno-write-strings')
dtoa_cc = env_dmg_fp.ChromeObject('third_party/dmg_fp/dtoa.cc')
g_fmt_cc = env_dmg_fp.ChromeObject('third_party/dmg_fp/g_fmt.cc')
# Some files from this list are not yet ported. They are removed from
# the list, see code below.
input_files = ChromeFileList([
'at_exit.cc',
'at_exit.h',
'atomic_ref_count.h',
'atomic_sequence_num.h',
'atomicops.h',
'atomicops_internals_x86_msvc.h',
'base_drag_source.cc',
'base_drag_source.h',
'base_drop_target.cc',
'base_drop_target.h',
'base_paths.cc',
'base_paths.h',
'base_paths_win.cc',
'base_paths_win.h',
'base_switches.cc',
'base_switches.h',
'basictypes.h',
'third_party/nss/blapi.h',
'third_party/nss/blapit.h',
'../build/build_config.h',
'bzip2_error_handler.cc',
'clipboard.cc',
'clipboard.h',
'clipboard_util.cc',
'clipboard_util.h',
'clipboard_win.cc',
'command_line.cc',
'command_line.h',
'compiler_specific.h',
'condition_variable.h',
'condition_variable_win.cc',
'cpu.cc',
'cpu.h',
'debug_on_start.cc',
'debug_on_start.h',
'debug_util.cc',
'debug_util.h',
'debug_util_win.cc',
'directory_watcher.h',
'directory_watcher_win.cc',
'third_party/dmg_fp/dmg_fp.h',
dtoa_cc,
'event_recorder.cc',
'event_recorder.h',
'field_trial.cc',
'field_trial.h',
'file_path.cc',
'file_path.h',
'file_util.cc',
'file_util.h',
'file_util_win.cc',
'file_version_info.cc',
'file_version_info.h',
'fix_wp64.h',
'float_util.h',
g_fmt_cc,
'hash_tables.h',
'histogram.cc',
'histogram.h',
'hmac.h',
'hmac_win.cc',
'iat_patch.cc',
'iat_patch.h',
'icu_util.cc',
'icu_util.h',
'id_map.h',
'idle_timer.cc',
'idle_timer.h',
'image_util.cc',
'image_util.h',
'json_reader.cc',
'json_reader.h',
'json_writer.cc',
'json_writer.h',
'keyboard_codes.h',
'keyboard_codes_posix.h',
'keyboard_codes_win.h',
'lazy_instance.cc',
'lazy_instance.h',
'linked_ptr.h',
'lock.cc',
'lock.h',
'lock_impl.h',
'lock_impl_win.cc',
'logging.cc',
'logging.h',
'md5.cc',
'md5.h',
'memory_debug.cc',
'memory_debug.h',
'message_loop.cc',
'message_loop.h',
'message_pump.h',
'message_pump_default.cc',
'message_pump_default.h',
'message_pump_win.cc',
'message_pump_win.h',
'non_thread_safe.cc',
'non_thread_safe.h',
'object_watcher.cc',
'object_watcher.h',
'observer_list.h',
'observer_list_threadsafe.h',
'path_service.cc',
'path_service.h',
'pe_image.cc',
'pe_image.h',
'pickle.cc',
'pickle.h',
'platform_file.h',
'platform_file_win.cc',
'platform_thread.h',
'platform_thread_win.cc',
'port.h',
'profiler.cc',
'profiler.h',
'third_party/nspr/prcpucfg.h',
'third_party/nspr/prcpucfg_win.h',
'process.h',
'process_util.h',
'process_util_win.cc',
'process_win.cc',
'third_party/nspr/prtime.cc',
'third_party/nspr/prtime.h',
'third_party/nspr/prtypes.h',
'third_party/purify/pure.h',
'third_party/purify/pure_api.c',
'rand_util.cc',
'rand_util.h',
'rand_util_win.cc',
'ref_counted.cc',
'ref_counted.h',
'registry.cc',
'registry.h',
'resource_util.cc',
'resource_util.h',
'revocable_store.cc',
'revocable_store.h',
'scoped_bstr_win.cc',
'scoped_bstr_win.h',
'scoped_clipboard_writer.cc',
'scoped_clipboard_writer.h',
'scoped_comptr_win.h',
'scoped_handle.h',
'scoped_handle_win.h',
'scoped_nsautorelease_pool.h',
'scoped_ptr.h',
'scoped_temp_dir.cc',
'scoped_temp_dir.h',
'sha2.cc',
'sha2.h',
'third_party/nss/sha256.h',
'third_party/nss/sha512.cc',
'shared_memory.h',
'shared_memory_win.cc',
'simple_thread.cc',
'simple_thread.h',
'singleton.h',
'spin_wait.h',
'stack_container.h',
'stats_counters.h',
'stats_table.cc',
'stats_table.h',
'string16.h',
'string_escape.cc',
'string_escape.h',
'string_piece.cc',
'string_piece.h',
'string_tokenizer.h',
'string_util.cc',
'string_util.h',
'string_util_icu.cc',
'string_util_win.h',
'sys_info.h',
'sys_info_win.cc',
'sys_string_conversions.h',
'sys_string_conversions_win.cc',
'system_monitor.cc',
'system_monitor.h',
'system_monitor_win.cc',
'task.h',
'test_file_util.h',
'test_file_util_win.cc',
'thread.cc',
'thread.h',
'thread_collision_warner.cc',
'thread_collision_warner.h',
'thread_local.h',
'thread_local_storage.h',
'thread_local_storage_win.cc',
'thread_local_win.cc',
'time.cc',
'time.h',
'time_format.cc',
'time_format.h',
'time_win.cc',
'timer.cc',
'timer.h',
'trace_event.cc',
'trace_event.h',
'tracked.cc',
'tracked.h',
'tracked_objects.cc',
'tracked_objects.h',
'tuple.h',
'values.cc',
'values.h',
'version.cc',
'version.h',
'waitable_event.h',
'waitable_event_watcher.h',
'waitable_event_watcher_win.cc',
'waitable_event_win.cc',
'watchdog.cc',
'watchdog.h',
'win_util.cc',
'win_util.h',
'windows_message_list.h',
'wmi_util.cc',
'wmi_util.h',
'word_iterator.cc',
'word_iterator.h',
'worker_pool.h',
'worker_pool_win.cc',
])
if env.Bit('posix'):
# Remove files that still need to be ported from the input_files list.
# TODO(port): delete files from this list as they get ported.
input_files.Remove(
'clipboard_util.cc',
'event_recorder.cc',
# We have an implementation of idle_timer that depends on XScreenSaver,
# but it's unclear if we want it yet, so it's commented out for now.
# Leave this 'unported'.
'idle_timer.cc',
'object_watcher.cc',
'resource_util.cc', # Uses HMODULE, but may be abstractable.
)
input_files.Append(
# See above note about idle_timer.cc.
'idle_timer_none.cc',
)
if not env.Bit('windows'):
# Remove windows-specific files on non-Windows platforms.
# TODO(sgk):
# Remove the windows-specific files from the input_files list above
# and turn this back in to an add-on-Windows list (like we used to)
# once we're comfortable re-ordering the files in the generated
# .vcproj file(s).
input_files.Remove(
'base_drag_source.cc',
'base_drop_target.cc',
'base_paths_win.cc',
'clipboard_win.cc',
'condition_variable_win.cc',
'cpu.cc',
'debug_on_start.cc',
'debug_util_win.cc',
'directory_watcher_win.cc',
'file_util_win.cc',
'file_version_info.cc',
'hmac_win.cc',
'iat_patch.cc',
'image_util.cc',
'lock_impl_win.cc',
'message_pump_win.cc',
'pe_image.cc',
'platform_file_win.cc',
'platform_thread_win.cc',
'process_util_win.cc',
'process_win.cc',
'rand_util_win.cc',
'registry.cc',
'scoped_bstr_win.cc',
'scoped_bstr_win.h',
'scoped_comptr_win.h',
'shared_memory_win.cc',
'sys_info_win.cc',
'sys_string_conversions_win.cc',
'system_monitor_win.cc',
'test_file_util_win.cc',
'thread_local_storage_win.cc',
'thread_local_win.cc',
'third_party/purify/pure_api.c',
'time_win.cc',
'waitable_event_win.cc',
'waitable_event_watcher_win.cc',
'win_util.cc',
'wmi_util.cc',
'worker_pool_win.cc',
)
if env.Bit('posix'):
input_files.Extend([
'condition_variable_posix.cc',
'debug_util_posix.cc',
'file_util_posix.cc',
'lock_impl_posix.cc',
'message_pump_libevent.cc',
'platform_file_posix.cc',
'platform_thread_posix.cc',
'process_util_posix.cc',
'rand_util_posix.cc',
'shared_memory_posix.cc',
'string16.cc',
'sys_info_posix.cc',
'system_monitor_posix.cc',
'test_file_util_posix.cc',
'thread_local_storage_posix.cc',
'thread_local_posix.cc',
'time_posix.cc',
'waitable_event_posix.cc',
'waitable_event_watcher_posix.cc',
])
if env.Bit('mac'):
input_files.Extend([
'base_paths_mac.mm',
'event_recorder_stubs.cc',
'clipboard_mac.mm',
'file_util_mac.mm',
'file_version_info_mac.mm',
'hmac_mac.cc',
'mac_util.mm',
'message_pump_mac.mm',
'platform_thread_mac.mm',
'scoped_nsautorelease_pool.mm',
'sys_string_conversions_mac.mm',
'test_file_util_mac.cc',
'worker_pool_mac.mm',
])
if env.Bit('linux'):
input_files.Extend([
'atomicops_internals_x86_gcc.cc',
'base_paths_linux.cc',
'clipboard_linux.cc',
'data_pack.cc',
'directory_watcher_inotify.cc',
'event_recorder_stubs.cc',
'file_util_linux.cc',
'file_version_info_linux.cc',
'hmac_nss.cc',
'message_pump_glib.cc',
'nss_init.cc',
'process_posix.cc',
'process_util_linux.cc',
'sys_string_conversions_linux.cc',
'test_file_util_linux.cc',
'worker_pool_linux.cc',
'worker_pool_linux.h',
])
linux_version = env.Command('$BASE_DIR/file_version_info_linux.h',
'file_version_info_linux.h.version',
('../chrome/tools/build/linux/version.sh'
' ${SOURCE}'
' ${TARGET}'))
env.AlwaysBuild(linux_version)
# Always generate version information, e.g. to capture revision changes, which
# aren't captured by file dependencies.
env.Append(CPPPATH = ['$OBJ_ROOT'])
env.ChromeLibrary('base', input_files)
p = env.ChromeMSVSProject('build/base.vcproj',
dest='$CHROME_SRC_DIR/base/build/base.vcproj',
guid='{1832A374-8A74-4F9E-B536-69A699B3E165}',
keyword='Win32Proj',
dependencies=[
'build/debug_message.vcproj',
# Necessary for chrome.sln.
'$ICU38_DIR/build/icu.vcproj',
],
files=input_files,
tools=[
'VCPreBuildEventTool',
'VCCustomBuildTool',
'VCXMLDataGeneratorTool',
'VCWebServiceProxyGeneratorTool',
'VCMIDLTool',
'VCCLCompilerTool',
'VCManagedResourceCompilerTool',
'VCResourceCompilerTool',
'VCPreLinkEventTool',
'VCLibrarianTool',
'VCALinkTool',
'VCXDCMakeTool',
'VCBscMakeTool',
'VCFxCopTool',
'VCPostBuildEventTool',
])
p.AddConfig('Debug|Win32',
ConfigurationType = '4',
InheritedPropertySheets = [
'$(SolutionDir)../build/debug.vsprops',
'./base.vsprops',
])
p.AddConfig('Release|Win32',
ConfigurationType = '4',
InheritedPropertySheets = [
'$(SolutionDir)../build/release.vsprops',
'./base.vsprops',
])
p.AddFileConfig(
'third_party/dmg_fp/dtoa.cc',
'Debug|Win32',
tools=[
MSVSTool('VCCLCompilerTool',
DisableSpecificWarnings='4244;4554;4018;4102'),
])
p.AddFileConfig(
'third_party/dmg_fp/dtoa.cc',
'Release|Win32',
tools=[
MSVSTool('VCCLCompilerTool',
DisableSpecificWarnings='4244;4554;4018;4102'),
])
p.AddFileConfig(
'third_party/dmg_fp/g_fmt.cc',
'Debug|Win32',
tools=[
MSVSTool('VCCLCompilerTool', DisableSpecificWarnings='4102'),
])
p.AddFileConfig(
'third_party/dmg_fp/g_fmt.cc',
'Release|Win32',
tools=[
MSVSTool('VCCLCompilerTool', DisableSpecificWarnings='4102'),
])