Clone of https://chromium.googlesource.com/chromium/src/build with Mozilla's local modifications
7265358749
In order to run both the visual studio tools and the binaries built by them (and ninja), we need to ensure that the VS runtime DLLs are available in the path. In the GYP build, we accomplish this by copying them into the Debug and Debug_x64 dirs as appropriate inside the gyp_chromium script. In the pure-GN build, then, things would be broken, so we need to modify the GN build to do the copy as well, or we need to inject a step somewhere that happens after GN runs but before Ninja tries to run (since none of the toolchain binaries will work). This patch accomplishes this by calling out to vs_toolchain.py to copy the DLLs as neede when the toolchain is defined. This is somewhat less than ideal (makes 'gn gen' slower) but seems better than forcing devs to have to run an additional command. In addition, the GYP build writes targets into Debug and Debug_x64 concurrently. This doesn't really carry over into GN correctly, and we probably only ever want to write targets into Debug and Debug/64 (or some such). However, the way the toolchains are currently implemented, it's not clear if this really works and the interplay between 32-bit and 64-bit is weird (we apparently normally "force" 32-bit even if we set cpu_arch to 64-bit, and require you to specify force_win64). To work around this and make sure that we copy the right DLLs for the right arch into the outer Debug/ directory, this patch temporarily disables the cross-arch part of the build, forcing the host_toolchain to match the target_toolchain. This likely means that 'cpu_arch="x86"' works (the default), but the 'host' binaries like image_diff and mksnapshot will be compiled in 32-bit mode, not 64-bit mode. 'cpu_arch="x64" force_win64=true' should also work, and produce all-64-bit binaries. 'cpu_arch="x64"' does not work at all and won't until we can clean up the above stuff. R=scottmg@chromium.org, brettw@chromium.org BUG=430661 Review URL: https://codereview.chromium.org/722723004 Cr-Original-Commit-Position: refs/heads/master@{#304310} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 0b95195e49489b7a4d87048d2ce4b747173a5b8a |
||
---|---|---|
android | ||
config | ||
git-hooks | ||
go | ||
internal | ||
ios | ||
linux | ||
mac | ||
sanitizers | ||
secondary | ||
slave | ||
temp_gyp | ||
toolchain | ||
util | ||
win | ||
OWNERS | ||
README.chromium | ||
all.gyp | ||
apk_fake_jar.gypi | ||
apk_test.gypi | ||
apply_locales.py | ||
asan.saves | ||
branding_value.sh | ||
build-ctags.sh | ||
build_config.h | ||
check_return_value.py | ||
chrome_settings.gypi | ||
common.croc | ||
common.gypi | ||
common_untrusted.gypi | ||
compiled_action.gni | ||
compiler_version.py | ||
copy_test_data_ios.gypi | ||
copy_test_data_ios.py | ||
cp.py | ||
detect_host_arch.py | ||
dir_exists.py | ||
download_nacl_toolchains.py | ||
env_dump.py | ||
escape_unicode.py | ||
extract_from_cab.py | ||
filename_rules.gypi | ||
find_isolated_tests.py | ||
gdb-add-index | ||
get_landmines.py | ||
get_syzygy_binaries.py | ||
gn_helpers.py | ||
gn_run_binary.py | ||
grit_action.gypi | ||
grit_target.gypi | ||
gyp_chromium | ||
gyp_chromium.py | ||
gyp_environment.py | ||
gyp_helper.py | ||
gypi_to_gn.py | ||
host_jar.gypi | ||
host_prebuilt_jar.gypi | ||
install-build-deps-android.sh | ||
install-build-deps.sh | ||
install-chroot.sh | ||
inverse_depth.py | ||
isolate.gypi | ||
jar_file_jni_generator.gypi | ||
java.gypi | ||
java_aidl.gypi | ||
java_apk.gypi | ||
java_prebuilt.gypi | ||
java_strings_grd.gypi | ||
jni_generator.gypi | ||
json_schema_api.gni | ||
json_schema_bundle_compile.gypi | ||
json_schema_bundle_registration_compile.gypi | ||
json_schema_compile.gypi | ||
json_to_struct.gypi | ||
landmine_utils.py | ||
landmines.py | ||
nocompile.gypi | ||
output_dll_copy.rules | ||
precompile.cc | ||
precompile.h | ||
protoc.gypi | ||
protoc_java.gypi | ||
protoc_java.py | ||
release.gypi | ||
repack_action.gypi | ||
sanitize-mac-build-log.sed | ||
sanitize-mac-build-log.sh | ||
sanitize-win-build-log.sed | ||
sanitize-win-build-log.sh | ||
set_clang_warning_flags.gypi | ||
shim_headers.gypi | ||
some.gyp | ||
symlink.py | ||
tree_truth.sh | ||
uiautomator_test.gypi | ||
update-linux-sandbox.sh | ||
vs_toolchain.py | ||
whitespace_file.txt | ||
win_precompile.gypi |
README.chromium
List of property sheets to be included by projects: common.vsprops Not used anymore. No-op. Kept for compatibility with current projects. debug.vsprops Enables debug settings. Must be included directly in Debug configuration. Includes internal\essential.vsprops. external_code.vsprops Contains settings made to simplify usage of external (non-Google) code. It relaxes the warning levels. Should be included after debug.vsprops or release.vsprops to override their settings. output_dll_copy.rules Run to enable automatic copy of DLL when they are as an input file in a vcproj project. release.vsprops Enables release settings. Must be included directly in Release configuration. Includes internal\essential.vsprops. Also includes "internal\release_impl$(CHROME_BUILD_TYPE).vsprops". So the behavior is dependant on the CHROME_BUILD_TYPE environment variable.