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

Side by Side Diff: tools/gn/args.cc

Issue 83733005: Add support for 32-bit and 64-bit Windows compiles in GN. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | « build/toolchain/win/setup_toolchain.py ('k') | tools/gn/variables.cc » ('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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "tools/gn/args.h" 5 #include "tools/gn/args.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 #include "tools/gn/variables.h" 8 #include "tools/gn/variables.h"
9 9
10 #if defined(OS_WIN) 10 #if defined(OS_WIN)
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 #elif defined(OS_LINUX) 172 #elif defined(OS_LINUX)
173 os = "linux"; 173 os = "linux";
174 #else 174 #else
175 #error Unknown OS type. 175 #error Unknown OS type.
176 #endif 176 #endif
177 Value os_val(NULL, std::string(os)); 177 Value os_val(NULL, std::string(os));
178 dest->SetValue(variables::kBuildOs, os_val, NULL); 178 dest->SetValue(variables::kBuildOs, os_val, NULL);
179 dest->SetValue(variables::kOs, os_val, NULL); 179 dest->SetValue(variables::kOs, os_val, NULL);
180 180
181 // Host architecture. 181 // Host architecture.
182 static const char kIa32[] = "ia32"; 182 static const char kX86[] = "x86";
183 static const char kIa64[] = "ia64"; 183 static const char kX64[] = "x64";
184 const char* arch = NULL; 184 const char* arch = NULL;
185 #if defined(OS_WIN) 185 #if defined(OS_WIN)
186 // ...on Windows, set the CPU architecture based on the underlying OS, not 186 // ...on Windows, set the CPU architecture based on the underlying OS, not
187 // whatever the current bit-tedness of the GN binary is. 187 // whatever the current bit-tedness of the GN binary is.
188 const base::win::OSInfo* os_info = base::win::OSInfo::GetInstance(); 188 const base::win::OSInfo* os_info = base::win::OSInfo::GetInstance();
189 switch (os_info->architecture()) { 189 switch (os_info->architecture()) {
190 case base::win::OSInfo::X86_ARCHITECTURE: 190 case base::win::OSInfo::X86_ARCHITECTURE:
191 arch = kIa32; 191 arch = kX86;
192 break; 192 break;
193 case base::win::OSInfo::X64_ARCHITECTURE: 193 case base::win::OSInfo::X64_ARCHITECTURE:
194 arch = kIa64; 194 arch = kX64;
195 break; 195 break;
196 default: 196 default:
197 CHECK(false) << "Windows architecture not handled."; 197 CHECK(false) << "Windows architecture not handled.";
198 break; 198 break;
199 } 199 }
200 #else 200 #else
201 // ...on all other platforms, just use the bit-tedness of the current 201 // ...on all other platforms, just use the bit-tedness of the current
202 // process. 202 // process.
203 #if defined(ARCH_CPU_X86_64) 203 #if defined(ARCH_CPU_X86_64)
204 arch = kIa64; 204 arch = kX64;
205 #elif defined(ARCH_CPU_X86) 205 #elif defined(ARCH_CPU_X86)
206 arch = kIa32; 206 arch = kX86;
207 #elif defined(ARCH_CPU_ARMEL) 207 #elif defined(ARCH_CPU_ARMEL)
208 static const char kArm[] = "arm"; 208 static const char kArm[] = "arm";
209 arch = kArm; 209 arch = kArm;
210 #else 210 #else
211 #error Unknown architecture. 211 #error Unknown architecture.
212 #endif 212 #endif
213 #endif 213 #endif
214 // Avoid unused var warning. 214 // Avoid unused var warning.
215 (void)kIa32; 215 (void)kX86;
216 (void)kIa64; 216 (void)kX64;
217 217
218 Value arch_val(NULL, std::string(arch)); 218 Value arch_val(NULL, std::string(arch));
219 dest->SetValue(variables::kBuildCpuArch, arch_val, NULL); 219 dest->SetValue(variables::kBuildCpuArch, arch_val, NULL);
220 dest->SetValue(variables::kCpuArch, arch_val, NULL); 220 dest->SetValue(variables::kCpuArch, arch_val, NULL);
221 221
222 // Save the OS and architecture as build arguments that are implicitly 222 // Save the OS and architecture as build arguments that are implicitly
223 // declared. This is so they can be overridden in a toolchain build args 223 // declared. This is so they can be overridden in a toolchain build args
224 // override, and so that they will appear in the "gn args" output. 224 // override, and so that they will appear in the "gn args" output.
225 // 225 //
226 // Do not declare the build* variants since these shouldn't be changed. 226 // Do not declare the build* variants since these shouldn't be changed.
(...skipping 13 matching lines...) Expand all
240 i != values.end(); ++i) 240 i != values.end(); ++i)
241 scope->SetValue(i->first, i->second, i->second.origin()); 241 scope->SetValue(i->first, i->second, i->second.origin());
242 } 242 }
243 243
244 void Args::SaveOverrideRecord(const Scope::KeyValueMap& values) const { 244 void Args::SaveOverrideRecord(const Scope::KeyValueMap& values) const {
245 base::AutoLock lock(lock_); 245 base::AutoLock lock(lock_);
246 for (Scope::KeyValueMap::const_iterator i = values.begin(); 246 for (Scope::KeyValueMap::const_iterator i = values.begin();
247 i != values.end(); ++i) 247 i != values.end(); ++i)
248 all_overrides_[i->first] = i->second; 248 all_overrides_[i->first] = i->second;
249 } 249 }
OLDNEW
« no previous file with comments | « build/toolchain/win/setup_toolchain.py ('k') | tools/gn/variables.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698