# 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_res = env.Clone() env_tests = env.Clone() env = env.Clone() env.Prepend( CPPPATH = [ '$ZLIB_DIR', '$ICU38_DIR/public/common', '$ICU38_DIR/public/i18n', '$SDCH_DIR/open_vcdiff/depot/opensource/open-vcdiff/src', '..', ], ) env.Append( CPPDEFINES = [ 'U_STATIC_IMPLEMENTATION', ], ) # These net files work on *all* platforms; files that don't work # cross-platform live below. input_files = [ 'base/address_list.cc', 'base/auth_cache.cc', 'base/base64.cc', 'base/bzip2_filter.cc', 'base/client_socket_handle.cc', 'base/client_socket_pool.cc', 'base/cookie_monster.cc', 'base/cookie_policy.cc', 'base/data_url.cc', 'base/escape.cc', 'base/ev_root_ca_metadata.cc', 'base/filter.cc', 'base/gzip_filter.cc', 'base/gzip_header.cc', 'base/host_resolver.cc', 'base/mime_sniffer.cc', 'base/mime_util.cc', 'base/net_errors.cc', 'base/net_module.cc', 'base/net_util.cc', 'base/registry_controlled_domain.cc', 'base/upload_data.cc', 'base/x509_certificate.cc', 'disk_cache/backend_impl.cc', 'disk_cache/block_files.cc', 'disk_cache/entry_impl.cc', 'disk_cache/file_lock.cc', 'disk_cache/hash.cc', 'disk_cache/mem_backend_impl.cc', 'disk_cache/mem_entry_impl.cc', 'disk_cache/mem_rankings.cc', 'disk_cache/rankings.cc', 'disk_cache/stats.cc', 'disk_cache/stats_histogram.cc', 'disk_cache/trace.cc', 'http/cert_status_cache.cc', 'http/http_cache.cc', 'http/http_chunked_decoder.cc', 'http/http_response_headers.cc', 'http/http_util.cc', 'http/http_vary_data.cc', 'url_request/mime_sniffer_proxy.cc', 'url_request/url_request.cc', 'url_request/url_request_about_job.cc', 'url_request/url_request_error_job.cc', 'url_request/url_request_http_job.cc', 'url_request/url_request_job.cc', 'url_request/url_request_job_metrics.cc', 'url_request/url_request_job_tracker.cc', 'url_request/url_request_simple_job.cc', 'url_request/url_request_test_job.cc', 'url_request/url_request_view_cache_job.cc', ] if env['PLATFORM'] == 'win32': input_files.extend([ 'base/client_socket_factory.cc', 'base/directory_lister.cc', 'base/dns_resolution_observer.cc', 'base/listen_socket.cc', 'base/sdch_filter.cc', 'base/sdch_manager.cc', 'base/ssl_client_socket.cc', 'base/ssl_config_service.cc', 'base/tcp_client_socket.cc', 'base/telnet_server.cc', 'base/upload_data_stream.cc', 'base/wininet_util.cc', 'base/winsock_init.cc', 'base/x509_certificate_win.cc', 'http/http_network_layer.cc', 'http/http_network_transaction.cc', 'http/http_transaction_winhttp.cc', 'http/winhttp_request_throttle.cc', 'proxy/proxy_resolver_fixed.cc', 'proxy/proxy_resolver_winhttp.cc', 'proxy/proxy_service.cc', 'url_request/url_request_file_dir_job.cc', 'url_request/url_request_file_job.cc', 'url_request/url_request_filter.cc', 'url_request/url_request_ftp_job.cc', 'url_request/url_request_inet_job.cc', 'url_request/url_request_job_manager.cc', ]) if env['PLATFORM'] == 'win32': input_files.extend([ 'base/net_util_win.cc', 'base/platform_mime_util_win.cc', 'disk_cache/cache_util_win.cc', 'disk_cache/file_win.cc', 'disk_cache/mapped_file_win.cc', 'disk_cache/os_file_win.cc', ]) if env['PLATFORM'] == 'darwin': input_files.extend([ 'base/platform_mime_util_mac.mm', 'base/x509_certificate_mac.cc', ]) if env['PLATFORM'] == 'posix': input_files.extend([ # TODO(tc): gnome-vfs? xdgmime? /etc/mime.types? 'base/platform_mime_util_linux.cc', ]) if env['PLATFORM'] in ('darwin', 'posix'): input_files.extend([ 'base/net_util_posix.cc', 'base/tcp_client_socket_libevent.cc', 'disk_cache/cache_util_posix.cc', 'disk_cache/file_posix.cc', 'disk_cache/mapped_file_posix.cc', 'disk_cache/os_file_posix.cc', ]) if env['PLATFORM'] == 'win32': # TODO(bradnelson): This step generates file precompiled_net.pch.ib_tag # possibly only on incredibuild, scons doesn't know this. env_p = env.Clone() env_p.Append(CCFLAGS='/Ylnet') pch, obj = env_p.PCH('precompiled_net.pch', 'build/precompiled_net.cc') env['PCH'] = pch env['PCHSTOP'] = 'precompiled_net.h' env.Append(CCPCHFLAGS = ['/FIprecompiled_net.h']) input_files += [obj] env.ChromeStaticLibrary('net', input_files) env_tests.Prepend( CPPPATH = [ '..', ], CPPDEFINES = [ 'UNIT_TEST', ], LIBS = [ # On Linux, dependencies must follow dependents, so... 'net', # net must come before base and modp_b64 'bzip2', # bzip2 must come before base 'base', 'googleurl', 'gtest', env_tests['ICU_LIBS'], # TODO(sgk): '$ICU_LIBS' when scons is fixed 'modp_b64', 'zlib', ] ) env_tests.Append( CPPPATH = [ '$GTEST_DIR/include', ], ) if env['PLATFORM'] == 'win32': env_tests.Prepend( CCFLAGS = [ '/TP', '/WX', ], CPPDEFINES = [ '_WIN32_WINNT=0x0600', 'WINVER=0x0600', '_HAS_EXCEPTIONS=0', ], LINKFLAGS = [ '/DELAYLOAD:"dwmapi.dll"', '/DELAYLOAD:"uxtheme.dll"', '/MACHINE:X86', '/FIXED:No', '/safeseh', '/dynamicbase', '/ignore:4199', '/nxcompat', ], LIBS =[ 'sdch', ], ) if env['PLATFORM'] in ('posix', 'darwin'): env_tests.Append( LIBS = [ 'event', ], ) unittest_files = [ 'base/auth_cache_unittest.cc', 'base/base64_unittest.cc', 'base/bzip2_filter_unittest.cc', 'base/client_socket_pool_unittest.cc', 'base/cookie_monster_unittest.cc', 'base/cookie_policy_unittest.cc', 'base/data_url_unittest.cc', 'base/escape_unittest.cc', 'base/gzip_filter_unittest.cc', 'base/host_resolver_unittest.cc', 'base/mime_sniffer_unittest.cc', 'base/mime_util_unittest.cc', 'base/net_util_unittest.cc', 'base/registry_controlled_domain_unittest.cc', 'base/run_all_unittests.cc', 'base/tcp_client_socket_unittest.cc', 'base/test_completion_callback_unittest.cc', 'disk_cache/addr_unittest.cc', 'disk_cache/backend_unittest.cc', 'disk_cache/block_files_unittest.cc', 'disk_cache/disk_cache_test_base.cc', 'disk_cache/disk_cache_test_util.cc', 'disk_cache/entry_unittest.cc', 'disk_cache/mapped_file_unittest.cc', 'disk_cache/storage_block_unittest.cc', 'http/http_chunked_decoder_unittest.cc', 'http/http_response_headers_unittest.cc', 'http/http_vary_data_unittest.cc', ] if env['PLATFORM'] == 'win32': unittest_files.extend([ 'base/directory_lister_unittest.cc', 'base/sdch_filter_unitest.cc', 'base/ssl_config_service_unittest.cc', 'base/ssl_client_socket_unittest.cc', 'base/wininet_util_unittest.cc', 'http/http_cache_unittest.cc', 'http/http_network_layer_unittest.cc', 'http/http_network_transaction_unittest.cc', 'http/http_transaction_unittest.cc', 'http/http_transaction_winhttp_unittest.cc', 'http/http_util_unittest.cc', 'http/winhttp_request_throttle_unittest.cc', 'url_request/url_request_unittest.cc', ]) if env['PLATFORM'] == 'darwin': unittest_files.extend([ '../base/platform_test_mac.o', ]) net_unittests = env_tests.ChromeTestProgram('net_unittests', unittest_files) install_targets = net_unittests[:] if env['PLATFORM'] == 'win32': stress_cache = env_tests.ChromeTestProgram( 'stress_cache', ['disk_cache/stress_cache.cc', 'disk_cache/disk_cache_test_util.cc'] ) crash_cache = env_tests.ChromeTestProgram( 'crash_cache', ['tools/crash_cache/crash_cache.cc', 'disk_cache/disk_cache_test_util.cc'] ) net_perftests = env_tests.ChromeTestProgram( 'net_perftests', ['disk_cache/disk_cache_test_util.cc', 'disk_cache/disk_cache_perftest.cc', 'base/cookie_monster_perftest.cc', # TODO(sgk): avoid using .cc from base directly '$BASE_DIR/run_all_perftests$OBJSUFFIX', '$BASE_DIR/perftimer$OBJSUFFIX'] ) install_targets.extend([ stress_cache, crash_cache, net_perftests, ]) # Create install of tests. installed_tests = env.Install('$TARGET_ROOT', install_targets) if env['PLATFORM'] == 'win32': env_res.Append( CPPPATH = [ '..', ], RCFLAGS = [ ['/l', '0x409'], ], ) # TODO: Need to figure out what we're doing with external resources on # linux. # This dat file needed by net_resources is generated. tld_names_clean = env_res.Command('net/effective_tld_names_clean.dat', ['base/effective_tld_names.dat', 'tools/tld_cleanup/tld_cleanup.exe'], '${SOURCES[1]} ${SOURCES[0]} $TARGET') rc = env_res.Command('net_resources.rc', 'base/net_resources.rc', Copy('$TARGET', '$SOURCE')) net_resources = env_res.RES(rc) env_res.Depends(rc, tld_names_clean) # TODO: We need to port tld_cleanup before this will work on other # platforms. sconscript_files = [ 'tools/tld_cleanup/SConscript', ] SConscript(sconscript_files, exports=['env']) env.Alias('net', ['.', installed_tests])