Refactor building unit_tests with SCons for the new structure:
* Rename SConscript.unit_tests to test/unit/unit_tests.scons.
* Add a new chrome/chrome.scons "master" for building everything
  chrome.  Have it just load the existing SConscript file, and
  the new test/unit/unit_tests.scons file.  We'll move things from
  SConscript (or elsewhere) into chrome.scons as they get convertd.
* Change build/SConscript.main to load chrome/chrome.scons.
* Add new using_libjpeg.scons, using_libxml.scons, and using_libxslt.scons
  "properties" files.
* Convert test/unit/unit_tests.scons to use the available using_*.scons files.
* Combine settings that were scattered throught test/unit/unit_tests.scons
  to make it a little more readable.
* Add $CHROME_DIR/ to the beginning of the file listed in
  test/unit/unit_tests.scons, since they're now being interpreted
  from a SConscript file down two directory levels.
Review URL: http://codereview.chromium.org/9005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4448 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/build/SConscript.main b/build/SConscript.main
index 3c3903d..5913d9c 100644
--- a/build/SConscript.main
+++ b/build/SConscript.main
@@ -164,7 +164,7 @@
   sconscripts.append('$BREAKPAD_DIR/SConscript')
 
 if LoadComponent('chrome'):
-  sconscripts.append('$CHROME_DIR/SConscript')
+  sconscripts.append('$CHROME_DIR/chrome.scons')
 
 if LoadComponent('gears'):
   sconscripts.append('$GEARS_DIR/SConscript')
diff --git a/chrome/SConscript b/chrome/SConscript
index 4fb7297..cfa8f80 100644
--- a/chrome/SConscript
+++ b/chrome/SConscript
@@ -390,7 +390,6 @@
                   CPPPATH=['..'] + env['CPPPATH'])
 
 test_sconscript_files = [
-    'SConscript.unit_tests',
 ]
 
 # TODO(port)
diff --git a/chrome/SConscript.unit_tests b/chrome/SConscript.unit_tests
deleted file mode 100644
index e83d4b8..0000000
--- a/chrome/SConscript.unit_tests
+++ /dev/null
@@ -1,262 +0,0 @@
-# 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.
-
-Import('env_test')
-
-env_test = env_test.Clone()
-
-if env_test['PLATFORM'] == 'posix':
-  env_test.Prepend(
-      LIBS = [
-          'event',
-      ]
-  )
-
-env_test.Prepend(
-    CPPPATH = [
-        '$ICU38_DIR/public/common',
-        '$ICU38_DIR/public/i18n',
-        '$LIBXML_DIR/include',
-        '$LIBXML_DIR/DerivedSources/include',
-        '$SKIA_DIR/include',
-        '$SKIA_DIR/include/corecg',
-        '$SKIA_DIR/platform',
-        '$ZLIB_DIR',
-        '$LIBPNG_DIR',
-        '$GTEST_DIR/include',
-        'third_party/wtl/include',
-        'tools/build/win',
-        '$CHROME_DIR/app/resources',
-        '$CHROME_SRC_DIR',
-    ],
-    CPPDEFINES = [
-        'USE_HUNSPELL',
-        'HUNSPELL_CHROME_CLIENT',
-        'LIBXML_STATIC',
-        'PNG_USER_CONFIG',
-        'CHROME_PNG_WRITE_SUPPORT',
-        'UNIT_TEST',
-    ],
-
-    # On Linux, dependencies must come after the libraries that depend on it.
-    # base must come after net, bzip2 must come before base, etc.
-    LIBS = [
-        'net',        # On Linux, dependencies must follow dependents.
-
-        'base',
-        'base_gfx',
-        'browser',
-        'bzip2',
-        'googleurl',
-        'gtest',
-        'hunspell',
-        env_test['ICU_LIBS'],  # TODO(sgk):  '$ICU_LIBS' when scons is fixed
-        'libjpeg',
-        'libpng',
-        'libxml',
-        'libxslt',
-        'modp_b64',
-        'plugin',
-        'renderer',
-        'skia',
-        'sqlite',
-        'util',
-        'v8',
-        'v8_snapshot',
-        'zlib',
-
-        'WTF',
-        'V8Bindings',
-        'default_plugin',
-        'glue',
-        'JavaScriptCore_pcre',
-        'port',
-        'WebCore',
-    ],
-)
-
-if env_test['PLATFORM'] == 'win32':
-  # TODO(port): Port or mark as Windows-specific.
-  env_test.Prepend(
-      LIBS = [
-          # TODO(port):  to be ported to Mac and Linux, or else
-          # moved to real Windows-specific lists
-          'browser_views',
-          'debugger',
-          'jscre',
-          'sdch',
-          'test_chrome_plugin',
-          'views',
-
-          'WebCore',
-      ],
-  )
-
-if env_test['PLATFORM'] == 'win32':
-  env_test.Prepend(
-      LINKFLAGS = [
-          '/INCREMENTAL',
-
-          '/safeseh',
-          '/dynamicbase',
-          '/ignore:4199',
-          '/nxcompat',
-
-          '/MANIFEST',
-          '/DELAYLOAD:"ws2_32.dll"',
-          '/DELAYLOAD:"dwmapi.dll"',
-          '/DELAYLOAD:"uxtheme.dll"',
-
-          '/DEBUG',
-          '/MACHINE:X86',
-          '/FIXED:No',
-      ],
-      LIBS = [
-          'activex_shim',
-
-          'winmm.lib',
-          'rpcrt4.lib',
-          'oleacc.lib',
-          'comsupp.lib',
-      ],
-  )
-
-unit_test_files = []
-
-if env_test['PLATFORM'] in ('posix', 'win32'):
-  # TODO(port): Port to Mac.
-  unit_test_files.extend([
-      'browser/chrome_thread_unittest.cc',
-      'browser/history/history_types_unittest.cc',
-      'browser/history/text_database_unittest.cc',
-      'browser/history/visit_tracker_unittest.cc',
-      'browser/metrics_response_unittest.cc',
-      'browser/net/dns_host_info_unittest.cc',
-      'browser/printing/page_range_unittest.cc',
-      'browser/printing/page_setup_unittest.cc',
-      'browser/printing/units_unittest.cc',
-      'browser/safe_browsing/bloom_filter_unittest.cc',
-      'browser/safe_browsing/chunk_range_unittest.cc',
-      'browser/safe_browsing/safe_browsing_database_unittest.cc',
-      'browser/safe_browsing/safe_browsing_database_impl_unittest.cc',
-      'browser/safe_browsing/protocol_parser_unittest.cc',
-      'browser/safe_browsing/safe_browsing_util_unittest.cc',
-      'common/animation_unittest.cc',
-      'common/bzip2_unittest.cc',
-      'common/jpeg_codec_unittest.cc',
-      'common/json_value_serializer_unittest.cc',
-      'test/unit/run_all_unittests.cc',
-  ])
-
-  env_test.Prepend(
-      LIBS = [
-          'browser',
-          'common',
-          'sqlite',
-      ],
-  )
-
-if env_test['PLATFORM'] == 'win32':
-  # TODO(port): Port these.
-  unit_test_files.extend([
-      'browser/autocomplete/autocomplete_unittest.cc',
-      'browser/autocomplete/history_contents_provider_unittest.cc',
-      'browser/autocomplete/history_url_provider_unittest.cc',
-      'browser/autocomplete/keyword_provider_unittest.cc',
-      'browser/back_forward_menu_model_unittest.cc',
-      'browser/bookmarks/bookmark_context_menu_test.cc',
-      'browser/bookmarks/bookmark_drag_data_unittest.cc',
-      'browser/bookmarks/bookmark_folder_tree_model_unittest.cc',
-      'browser/bookmarks/bookmark_model_unittest.cc',
-      'browser/bookmarks/bookmark_table_model_unittest.cc',
-      'browser/cache_manager_host_unittest.cc',
-      'browser/controller_unittest.cc',
-      'browser/download/download_manager_unittest.cc',
-      'browser/download/download_request_manager_unittest.cc',
-      'browser/download/save_package_unittest.cc',
-      'browser/encryptor_unittest.cc',
-      'browser/google_url_tracker_unittest.cc',
-      'browser/history/expire_history_backend_unittest.cc',
-      'browser/history/history_backend_unittest.cc',
-      'browser/history/history_querying_unittest.cc',
-      'browser/history/history_unittest.cc',
-      'browser/history/query_parser_unittest.cc',
-      'browser/history/snippet_unittest.cc',
-      'browser/history/starred_url_database_unittest.cc',
-      'browser/history/text_database_manager_unittest.cc',
-      'browser/history/thumbnail_database_unittest.cc',
-      'browser/history/url_database_unittest.cc',
-      'browser/history/visit_database_unittest.cc',
-      'browser/importer/firefox_importer_unittest.cc',
-      'browser/importer/importer_unittest.cc',
-      'browser/metrics_log_unittest.cc',
-      'browser/navigation_controller_unittest.cc',
-      'browser/net/dns_master_unittest.cc',
-      'browser/password_form_manager_unittest.cc',
-      'browser/printing/page_number_unittest.cc',
-      'browser/printing/page_overlays_unittest.cc',
-      'browser/printing/win_printing_context_unittest.cc',
-      'browser/profile_manager_unittest.cc',
-      'browser/renderer_security_policy_unittest.cc',
-      'browser/resource_dispatcher_host_unittest.cc',
-      'browser/rlz/rlz_unittest.cc',
-      'browser/safe_browsing/protocol_manager_unittest.cc',
-      'browser/session_backend_unittest.cc',
-      'browser/session_service_test_helper.cc',
-      'browser/session_service_unittest.cc',
-      'browser/site_instance_unittest.cc',
-      'browser/spellcheck_unittest.cc',
-      'browser/tabs/tab_strip_model_unittest.cc',
-      'browser/template_url_model_unittest.cc',
-      'browser/template_url_parser_unittest.cc',
-      'browser/template_url_unittest.cc',
-      'browser/url_fetcher_unittest.cc',
-      'browser/url_fixer_upper_unittest.cc',
-      'browser/views/bookmark_editor_view_unittest.cc',
-      'browser/views/keyword_editor_view_unittest.cc',
-      'browser/visitedlink_unittest.cc',
-      'browser/web_contents_unittest.cc',
-      'browser/webdata/web_database_unittest.cc',
-      'browser/window_sizer_unittest.cc',
-      'common/chrome_plugin_unittest.cc',
-      'common/gfx/emf_unittest.cc',
-      'common/gfx/icon_util_unittest.cc',
-      'common/gfx/url_elider_unittest.cc',
-      'common/ipc_message_unittest.cc',
-      'common/ipc_sync_channel_unittest.cc',
-      'common/ipc_sync_message_unittest.cc',
-      'common/l10n_util_unittest.cc',
-      'common/mru_cache_unittest.cc',
-      'common/notification_service_unittest.cc',
-      'common/os_exchange_data_unittest.cc',
-      'common/pref_member_unittest.cc',
-      'common/pref_service_unittest.cc',
-      'common/resource_dispatcher_unittest.cc',
-      'common/time_format_unittest.cc',
-      'common/win_util_unittest.cc',
-      'renderer/net/render_dns_master_unittest.cc',
-      'renderer/net/render_dns_queue_unittest.cc',
-      'test/test_notification_tracker.cc',
-      'test/test_tab_contents.cc',
-      'test/testing_profile.cc',
-      'views/focus_manager_unittest.cc',
-      'views/grid_layout_unittest.cc',
-      'views/table_view_unittest.cc',
-      'views/view_unittest.cc',
-      # Commented out for now because googleurl_tests doesn't build with
-      # gtest; see ../build/SConscript.googleurl.
-      #'$GOOGLEURL_DIR/googleurl_tests.lib',
-      '$NET_DIR/url_request/url_request_test_job$OBJSUFFIX',
-
-      env_test['BROWSER_RES'],
-      env_test['TEST_DATA_RES'],
-  ])
-
-if env_test['PLATFORM'] in ('posix', 'win32'):
-  # TODO(port): This should work on all platforms.
-
-  unit_tests = env_test.ChromeTestProgram('unit_tests', unit_test_files)
-
-  i = env_test.Install('$TARGET_ROOT', unit_tests)
-  Alias('chrome', i)
diff --git a/chrome/chrome.scons b/chrome/chrome.scons
new file mode 100644
index 0000000..4e4cfad
--- /dev/null
+++ b/chrome/chrome.scons
@@ -0,0 +1,17 @@
+# 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__ = """
+Master configuration for building chrome components.
+"""
+
+Import('env')
+
+sconscript_files = [
+    'SConscript',
+
+    'test/unit/unit_tests.scons',
+]
+
+SConscript(sconscript_files, exports=['env'])
diff --git a/chrome/test/unit/unit_tests.scons b/chrome/test/unit/unit_tests.scons
new file mode 100644
index 0000000..1e9fc1e7
--- /dev/null
+++ b/chrome/test/unit/unit_tests.scons
@@ -0,0 +1,239 @@
+# 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.
+
+Import('env')
+
+env = env.Clone()
+
+env.SConscript([
+    '$BASE_DIR/gfx/using_base_gfx.scons',
+    '$BASE_DIR/using_base.scons',
+    '$BZIP2_DIR/using_bzip2.scons',
+    '$CHROME_SRC_DIR/build/using_googleurl.scons',
+    '$GTEST_DIR/../using_gtest.scons',
+    '$ICU38_DIR/using_icu38.scons',
+    '$LIBJPEG_DIR/using_libjpeg.scons',
+    '$LIBPNG_DIR/using_libpng.scons',
+    '$LIBXML_DIR/using_libxml.scons',
+    '$LIBXSLT_DIR/using_libxslt.scons',
+    '$MODP_B64_DIR/using_modp_b64.scons',
+    '$NET_DIR/using_net.scons',
+    '$SKIA_DIR/using_skia.scons',
+    '$ZLIB_DIR/using_zlib.scons',
+], {'env':env})
+
+if env['PLATFORM'] == 'win32':
+  env.SConscript([
+      '$SDCH_DIR/using_sdch.scons',
+  ], {'env':env})
+
+if env['PLATFORM'] in ('posix', 'darwin'):
+  env.SConscript([
+      '$LIBEVENT_DIR/using_libevent.scons',
+  ], {'env':env})
+
+env.Prepend(
+    CPPPATH = [
+        'third_party/wtl/include',
+        'tools/build/win',
+        '$CHROME_DIR/app/resources',
+        '$CHROME_SRC_DIR',
+    ],
+    CPPDEFINES = [
+        'USE_HUNSPELL',
+        'HUNSPELL_CHROME_CLIENT',
+    ],
+    LIBS = [
+        'browser',
+        'common',
+        'hunspell',
+        'plugin',
+        'renderer',
+        'sqlite',
+        'util',
+        'v8',
+        'v8_snapshot',
+
+        'WTF',
+        'V8Bindings',
+        'default_plugin',
+        'glue',
+        'JavaScriptCore_pcre',
+        'port',
+        'WebCore',
+    ],
+)
+
+if env['PLATFORM'] == 'win32':
+  # TODO(port): Port or mark as Windows-specific.
+  env.Prepend(
+      LIBS = [
+          # TODO(port):  to be ported to Mac and Linux, or else
+          # moved to the Windows-specific list below.
+          'browser_views',
+          'debugger',
+          'jscre',
+          'test_chrome_plugin',
+          'views',
+          'WebCore',
+
+	  # Windows-specific libraries.
+          'activex_shim',
+
+          'winmm',
+          'rpcrt4',
+          'oleacc',
+          'comsupp',
+      ],
+      LINKFLAGS = [
+          '/INCREMENTAL',
+
+          '/safeseh',
+          '/dynamicbase',
+          '/ignore:4199',
+          '/nxcompat',
+
+          '/MANIFEST',
+          '/DELAYLOAD:"ws2_32.dll"',
+          '/DELAYLOAD:"dwmapi.dll"',
+          '/DELAYLOAD:"uxtheme.dll"',
+
+          '/DEBUG',
+          '/MACHINE:X86',
+          '/FIXED:No',
+      ],
+  )
+
+unit_test_files = []
+
+if env['PLATFORM'] in ('posix', 'win32'):
+  # TODO(port): Port to Mac.
+  unit_test_files.extend([
+      'run_all_unittests.cc',
+
+      '$CHROME_DIR/browser/chrome_thread_unittest.cc',
+      '$CHROME_DIR/browser/history/history_types_unittest.cc',
+      '$CHROME_DIR/browser/history/text_database_unittest.cc',
+      '$CHROME_DIR/browser/history/visit_tracker_unittest.cc',
+      '$CHROME_DIR/browser/metrics_response_unittest.cc',
+      '$CHROME_DIR/browser/net/dns_host_info_unittest.cc',
+      '$CHROME_DIR/browser/printing/page_range_unittest.cc',
+      '$CHROME_DIR/browser/printing/page_setup_unittest.cc',
+      '$CHROME_DIR/browser/printing/units_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/bloom_filter_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/chunk_range_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/safe_browsing_database_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/safe_browsing_database_impl_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/protocol_parser_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/safe_browsing_util_unittest.cc',
+      '$CHROME_DIR/common/animation_unittest.cc',
+      '$CHROME_DIR/common/bzip2_unittest.cc',
+      '$CHROME_DIR/common/jpeg_codec_unittest.cc',
+      '$CHROME_DIR/common/json_value_serializer_unittest.cc',
+  ])
+
+if env['PLATFORM'] == 'win32':
+  # TODO(port): Port these.
+  unit_test_files.extend([
+      '$CHROME_DIR/browser/autocomplete/autocomplete_unittest.cc',
+      '$CHROME_DIR/browser/autocomplete/history_contents_provider_unittest.cc',
+      '$CHROME_DIR/browser/autocomplete/history_url_provider_unittest.cc',
+      '$CHROME_DIR/browser/autocomplete/keyword_provider_unittest.cc',
+      '$CHROME_DIR/browser/back_forward_menu_model_unittest.cc',
+      '$CHROME_DIR/browser/bookmarks/bookmark_context_menu_test.cc',
+      '$CHROME_DIR/browser/bookmarks/bookmark_drag_data_unittest.cc',
+      '$CHROME_DIR/browser/bookmarks/bookmark_folder_tree_model_unittest.cc',
+      '$CHROME_DIR/browser/bookmarks/bookmark_model_unittest.cc',
+      '$CHROME_DIR/browser/bookmarks/bookmark_table_model_unittest.cc',
+      '$CHROME_DIR/browser/cache_manager_host_unittest.cc',
+      '$CHROME_DIR/browser/controller_unittest.cc',
+      '$CHROME_DIR/browser/download/download_manager_unittest.cc',
+      '$CHROME_DIR/browser/download/download_request_manager_unittest.cc',
+      '$CHROME_DIR/browser/download/save_package_unittest.cc',
+      '$CHROME_DIR/browser/encryptor_unittest.cc',
+      '$CHROME_DIR/browser/google_url_tracker_unittest.cc',
+      '$CHROME_DIR/browser/history/expire_history_backend_unittest.cc',
+      '$CHROME_DIR/browser/history/history_backend_unittest.cc',
+      '$CHROME_DIR/browser/history/history_querying_unittest.cc',
+      '$CHROME_DIR/browser/history/history_unittest.cc',
+      '$CHROME_DIR/browser/history/query_parser_unittest.cc',
+      '$CHROME_DIR/browser/history/snippet_unittest.cc',
+      '$CHROME_DIR/browser/history/starred_url_database_unittest.cc',
+      '$CHROME_DIR/browser/history/text_database_manager_unittest.cc',
+      '$CHROME_DIR/browser/history/thumbnail_database_unittest.cc',
+      '$CHROME_DIR/browser/history/url_database_unittest.cc',
+      '$CHROME_DIR/browser/history/visit_database_unittest.cc',
+      '$CHROME_DIR/browser/importer/firefox_importer_unittest.cc',
+      '$CHROME_DIR/browser/importer/importer_unittest.cc',
+      '$CHROME_DIR/browser/metrics_log_unittest.cc',
+      '$CHROME_DIR/browser/navigation_controller_unittest.cc',
+      '$CHROME_DIR/browser/net/dns_master_unittest.cc',
+      '$CHROME_DIR/browser/password_form_manager_unittest.cc',
+      '$CHROME_DIR/browser/printing/page_number_unittest.cc',
+      '$CHROME_DIR/browser/printing/page_overlays_unittest.cc',
+      '$CHROME_DIR/browser/printing/win_printing_context_unittest.cc',
+      '$CHROME_DIR/browser/profile_manager_unittest.cc',
+      '$CHROME_DIR/browser/renderer_security_policy_unittest.cc',
+      '$CHROME_DIR/browser/resource_dispatcher_host_unittest.cc',
+      '$CHROME_DIR/browser/rlz/rlz_unittest.cc',
+      '$CHROME_DIR/browser/safe_browsing/protocol_manager_unittest.cc',
+      '$CHROME_DIR/browser/session_backend_unittest.cc',
+      '$CHROME_DIR/browser/session_service_test_helper.cc',
+      '$CHROME_DIR/browser/session_service_unittest.cc',
+      '$CHROME_DIR/browser/site_instance_unittest.cc',
+      '$CHROME_DIR/browser/spellcheck_unittest.cc',
+      '$CHROME_DIR/browser/tabs/tab_strip_model_unittest.cc',
+      '$CHROME_DIR/browser/template_url_model_unittest.cc',
+      '$CHROME_DIR/browser/template_url_parser_unittest.cc',
+      '$CHROME_DIR/browser/template_url_unittest.cc',
+      '$CHROME_DIR/browser/url_fetcher_unittest.cc',
+      '$CHROME_DIR/browser/url_fixer_upper_unittest.cc',
+      '$CHROME_DIR/browser/views/bookmark_editor_view_unittest.cc',
+      '$CHROME_DIR/browser/views/keyword_editor_view_unittest.cc',
+      '$CHROME_DIR/browser/visitedlink_unittest.cc',
+      '$CHROME_DIR/browser/web_contents_unittest.cc',
+      '$CHROME_DIR/browser/webdata/web_database_unittest.cc',
+      '$CHROME_DIR/browser/window_sizer_unittest.cc',
+      '$CHROME_DIR/common/chrome_plugin_unittest.cc',
+      '$CHROME_DIR/common/gfx/emf_unittest.cc',
+      '$CHROME_DIR/common/gfx/icon_util_unittest.cc',
+      '$CHROME_DIR/common/gfx/url_elider_unittest.cc',
+      '$CHROME_DIR/common/ipc_message_unittest.cc',
+      '$CHROME_DIR/common/ipc_sync_channel_unittest.cc',
+      '$CHROME_DIR/common/ipc_sync_message_unittest.cc',
+      '$CHROME_DIR/common/l10n_util_unittest.cc',
+      '$CHROME_DIR/common/mru_cache_unittest.cc',
+      '$CHROME_DIR/common/notification_service_unittest.cc',
+      '$CHROME_DIR/common/os_exchange_data_unittest.cc',
+      '$CHROME_DIR/common/pref_member_unittest.cc',
+      '$CHROME_DIR/common/pref_service_unittest.cc',
+      '$CHROME_DIR/common/resource_dispatcher_unittest.cc',
+      '$CHROME_DIR/common/time_format_unittest.cc',
+      '$CHROME_DIR/common/win_util_unittest.cc',
+      '$CHROME_DIR/renderer/net/render_dns_master_unittest.cc',
+      '$CHROME_DIR/renderer/net/render_dns_queue_unittest.cc',
+      '$CHROME_DIR/test/test_notification_tracker.cc',
+      '$CHROME_DIR/test/test_tab_contents.cc',
+      '$CHROME_DIR/test/testing_profile.cc',
+      '$CHROME_DIR/views/focus_manager_unittest.cc',
+      '$CHROME_DIR/views/grid_layout_unittest.cc',
+      '$CHROME_DIR/views/table_view_unittest.cc',
+      '$CHROME_DIR/views/view_unittest.cc',
+
+      # Commented out for now because googleurl_tests doesn't build with
+      # gtest; see ../build/SConscript.googleurl.
+      #'$GOOGLEURL_DIR/googleurl_tests.lib',
+      '$NET_DIR/url_request/url_request_test_job$OBJSUFFIX',
+
+      env['BROWSER_RES'],
+      env['TEST_DATA_RES'],
+  ])
+
+if env['PLATFORM'] in ('posix', 'win32'):
+  # TODO(port): This should work on all platforms.
+
+  unit_tests = env.ChromeTestProgram('unit_tests', unit_test_files)
+
+  i = env.Install('$TARGET_ROOT', unit_tests)
+  Alias('chrome', i)
diff --git a/third_party/libjpeg/using_libjpeg.scons b/third_party/libjpeg/using_libjpeg.scons
new file mode 100644
index 0000000..d1e6cf2
--- /dev/null
+++ b/third_party/libjpeg/using_libjpeg.scons
@@ -0,0 +1,36 @@
+# 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__ = """
+Settings for other components using the libjpeg library.
+"""
+
+Import("env")
+
+env.Append(
+    CPPPATH = [
+        '$LIBJPEG_DIR',
+    ],
+    LIBS = [
+        'libjpeg',
+    ],
+)
+# 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__ = """
+Settings for other components using the libjpeg library.
+"""
+
+Import("env")
+
+env.Append(
+    CPPPATH = [
+        '$LIBJPEG_DIR',
+    ],
+    LIBS = [
+        'libjpeg',
+    ],
+)
diff --git a/third_party/libxml/using_libxml.scons b/third_party/libxml/using_libxml.scons
new file mode 100644
index 0000000..7c7d7da
--- /dev/null
+++ b/third_party/libxml/using_libxml.scons
@@ -0,0 +1,44 @@
+# 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__ = """
+Settings for other components using the libxml library.
+"""
+
+Import("env")
+
+env.Append(
+    CPPPATH = [
+        '$LIBXML_DIR/include',
+        '$LIBXML_DIR/DerivedSources/include',
+    ],
+    CPPDEFINES = [
+        'LIBXML_STATIC',
+    ],
+    LIBS = [
+        'libxml',
+    ],
+)
+# 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__ = """
+Settings for other components using the libxml library.
+"""
+
+Import("env")
+
+env.Append(
+    CPPPATH = [
+        '$LIBXML_DIR/include',
+        '$LIBXML_DIR/DerivedSources/include',
+    ],
+    CPPDEFINES = [
+        'LIBXML_STATIC',
+    ],
+    LIBS = [
+        'libxml',
+    ],
+)
diff --git a/third_party/libxslt/using_libxslt.scons b/third_party/libxslt/using_libxslt.scons
new file mode 100644
index 0000000..d8f636f
--- /dev/null
+++ b/third_party/libxslt/using_libxslt.scons
@@ -0,0 +1,36 @@
+# 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__ = """
+Settings for other components using the libxslt library.
+"""
+
+Import("env")
+
+env.Append(
+    CPPPATH = [
+        '$LIBXSLT_DIR',
+    ],
+    LIBS = [
+        'libxslt',
+    ],
+)
+# 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__ = """
+Settings for other components using the libxslt library.
+"""
+
+Import("env")
+
+env.Append(
+    CPPPATH = [
+        '$LIBXSLT_DIR',
+    ],
+    LIBS = [
+        'libxslt',
+    ],
+)