OLD | NEW |
1 //===--- Triple.cpp - Target triple helper class --------------------------===// | 1 //===--- Triple.cpp - Target triple helper class --------------------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 | 9 |
10 #include "llvm/ADT/Triple.h" | 10 #include "llvm/ADT/Triple.h" |
11 #include "llvm/ADT/SmallString.h" | 11 #include "llvm/ADT/SmallString.h" |
12 #include "llvm/ADT/STLExtras.h" | 12 #include "llvm/ADT/STLExtras.h" |
| 13 #include "llvm/Support/ErrorHandling.h" |
13 #include <cstring> | 14 #include <cstring> |
14 using namespace llvm; | 15 using namespace llvm; |
15 | 16 |
16 const char *Triple::getArchTypeName(ArchType Kind) { | 17 const char *Triple::getArchTypeName(ArchType Kind) { |
17 switch (Kind) { | 18 switch (Kind) { |
18 case InvalidArch: return "<invalid>"; | 19 case InvalidArch: return "<invalid>"; |
19 case UnknownArch: return "unknown"; | 20 case UnknownArch: return "unknown"; |
20 | 21 |
21 case alpha: return "alpha"; | 22 case alpha: return "alpha"; |
22 case arm: return "arm"; | 23 case arm: return "arm"; |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 else if (VendorName == "pc") | 322 else if (VendorName == "pc") |
322 return PC; | 323 return PC; |
323 else if (VendorName == "scei") | 324 else if (VendorName == "scei") |
324 return SCEI; | 325 return SCEI; |
325 else | 326 else |
326 return UnknownVendor; | 327 return UnknownVendor; |
327 } | 328 } |
328 | 329 |
329 Triple::OSType Triple::ParseOS(StringRef OSName) { | 330 Triple::OSType Triple::ParseOS(StringRef OSName) { |
330 if (OSName.startswith("auroraux")) | 331 if (OSName.startswith("auroraux")) |
| 332 #if defined(LLVM_ENABLED_TARGET_OS_AURORAUX) |
331 return AuroraUX; | 333 return AuroraUX; |
| 334 #else |
| 335 llvm_unreachable( |
| 336 "ParseOS auroraux w/out LLVM_ENABLED_TARGET_OS_AURORAUX"); |
| 337 #endif |
332 else if (OSName.startswith("cygwin")) | 338 else if (OSName.startswith("cygwin")) |
| 339 #if defined(LLVM_ENABLED_TARGET_OS_CYGWIN) |
333 return Cygwin; | 340 return Cygwin; |
| 341 #else |
| 342 llvm_unreachable("ParseOS cygwin w/out LLVM_ENABLED_TARGET_OS_CYGWIN"); |
| 343 #endif |
334 else if (OSName.startswith("darwin")) | 344 else if (OSName.startswith("darwin")) |
| 345 #if defined(LLVM_ENABLED_TARGET_OS_DARWIN) |
335 return Darwin; | 346 return Darwin; |
| 347 #else |
| 348 llvm_unreachable("ParseOS darwin w/out LLVM_ENABLED_TARGET_OS_DARWIN"); |
| 349 #endif |
336 else if (OSName.startswith("dragonfly")) | 350 else if (OSName.startswith("dragonfly")) |
| 351 #if defined(LLVM_ENABLED_TARGET_OS_DRAGONFLY) |
337 return DragonFly; | 352 return DragonFly; |
| 353 #else |
| 354 llvm_unreachable( |
| 355 "ParseOS dragonfly w/out LLVM_ENABLED_TARGET_OS_DRAGONFLY"); |
| 356 #endif |
338 else if (OSName.startswith("freebsd")) | 357 else if (OSName.startswith("freebsd")) |
| 358 #if defined(LLVM_ENABLED_TARGET_OS_FREEBSD) |
339 return FreeBSD; | 359 return FreeBSD; |
| 360 #else |
| 361 llvm_unreachable("ParseOS freebsd w/out LLVM_ENABLED_TARGET_OS_FREEBSD"); |
| 362 #endif |
340 else if (OSName.startswith("ios")) | 363 else if (OSName.startswith("ios")) |
| 364 #if defined(LLVM_ENABLED_TARGET_OS_IOS) |
341 return IOS; | 365 return IOS; |
| 366 #else |
| 367 llvm_unreachable("ParseOS ios w/out LLVM_ENABLED_TARGET_OS_IOS"); |
| 368 #endif |
342 else if (OSName.startswith("kfreebsd")) | 369 else if (OSName.startswith("kfreebsd")) |
| 370 #if defined(LLVM_ENABLED_TARGET_OS_KFREEBSD) |
343 return KFreeBSD; | 371 return KFreeBSD; |
| 372 #else |
| 373 llvm_unreachable("ParseOS kfreebsd w/out LLVM_ENABLED_TARGET_OS_KFREEBSD"); |
| 374 #endif |
344 else if (OSName.startswith("linux")) | 375 else if (OSName.startswith("linux")) |
| 376 #if defined(LLVM_ENABLED_TARGET_OS_LINUX) |
345 return Linux; | 377 return Linux; |
| 378 #else |
| 379 llvm_unreachable("ParseOS linux w/out LLVM_ENABLED_TARGET_OS_LINUX"); |
| 380 #endif |
346 else if (OSName.startswith("lv2")) | 381 else if (OSName.startswith("lv2")) |
| 382 #if defined(LLVM_ENABLED_TARGET_OS_LV2) |
347 return Lv2; | 383 return Lv2; |
| 384 #else |
| 385 llvm_unreachable("ParseOS lv2 w/out LLVM_ENABLED_TARGET_OS_LV2"); |
| 386 #endif |
348 else if (OSName.startswith("macosx")) | 387 else if (OSName.startswith("macosx")) |
| 388 #if defined(LLVM_ENABLED_TARGET_OS_MACOSX) |
349 return MacOSX; | 389 return MacOSX; |
| 390 #else |
| 391 llvm_unreachable("ParseOS macosx w/out LLVM_ENABLED_TARGET_OS_MACOSX"); |
| 392 #endif |
350 else if (OSName.startswith("mingw32")) | 393 else if (OSName.startswith("mingw32")) |
| 394 #if defined(LLVM_ENABLED_TARGET_OS_MINGW32) |
351 return MinGW32; | 395 return MinGW32; |
| 396 #else |
| 397 llvm_unreachable("ParseOS mingw32 w/out LLVM_ENABLED_TARGET_OS_MINGW32"); |
| 398 #endif |
352 else if (OSName.startswith("netbsd")) | 399 else if (OSName.startswith("netbsd")) |
| 400 #if defined(LLVM_ENABLED_TARGET_OS_NETBSD) |
353 return NetBSD; | 401 return NetBSD; |
| 402 #else |
| 403 llvm_unreachable("ParseOS netbsd w/out LLVM_ENABLED_TARGET_OS_NETBSD"); |
| 404 #endif |
354 else if (OSName.startswith("openbsd")) | 405 else if (OSName.startswith("openbsd")) |
| 406 #if defined(LLVM_ENABLED_TARGET_OS_OPENBSD) |
355 return OpenBSD; | 407 return OpenBSD; |
| 408 #else |
| 409 llvm_unreachable("ParseOS openbsd w/out LLVM_ENABLED_TARGET_OS_OPENBSD"); |
| 410 #endif |
356 else if (OSName.startswith("psp")) | 411 else if (OSName.startswith("psp")) |
| 412 #if defined(LLVM_ENABLED_TARGET_OS_PSP) |
357 return Psp; | 413 return Psp; |
| 414 #else |
| 415 llvm_unreachable("ParseOS psp w/out LLVM_ENABLED_TARGET_OS_PSP"); |
| 416 #endif |
358 else if (OSName.startswith("solaris")) | 417 else if (OSName.startswith("solaris")) |
| 418 #if defined(LLVM_ENABLED_TARGET_OS_SOLARIS) |
359 return Solaris; | 419 return Solaris; |
| 420 #else |
| 421 llvm_unreachable("ParseOS solaris w/out LLVM_ENABLED_TARGET_OS_SOLARIS"); |
| 422 #endif |
360 else if (OSName.startswith("win32")) | 423 else if (OSName.startswith("win32")) |
| 424 #if defined(LLVM_ENABLED_TARGET_OS_WIN32) |
361 return Win32; | 425 return Win32; |
| 426 #else |
| 427 llvm_unreachable("ParseOS win32 w/out LLVM_ENABLED_TARGET_OS_WIN32"); |
| 428 #endif |
362 else if (OSName.startswith("haiku")) | 429 else if (OSName.startswith("haiku")) |
| 430 #if defined(LLVM_ENABLED_TARGET_OS_HAIKU) |
363 return Haiku; | 431 return Haiku; |
| 432 #else |
| 433 llvm_unreachable("ParseOS haiku w/out LLVM_ENABLED_TARGET_OS_HAIKU"); |
| 434 #endif |
364 else if (OSName.startswith("minix")) | 435 else if (OSName.startswith("minix")) |
| 436 #if defined(LLVM_ENABLED_TARGET_OS_MINIX) |
365 return Minix; | 437 return Minix; |
| 438 #else |
| 439 llvm_unreachable("ParseOS minix w/out LLVM_ENABLED_TARGET_OS_MINIX"); |
| 440 #endif |
366 else if (OSName.startswith("rtems")) | 441 else if (OSName.startswith("rtems")) |
| 442 #if defined(LLVM_ENABLED_TARGET_OS_RTEMS) |
367 return RTEMS; | 443 return RTEMS; |
| 444 #else |
| 445 llvm_unreachable("ParseOS rtems w/out LLVM_ENABLED_TARGET_OS_RTEMS"); |
| 446 #endif |
368 else if (OSName.startswith("nacl")) | 447 else if (OSName.startswith("nacl")) |
| 448 #if defined(LLVM_ENABLED_TARGET_OS_NATIVECLIENT) |
369 return NativeClient; | 449 return NativeClient; |
| 450 #else |
| 451 llvm_unreachable("ParseOS nacl w/out LLVM_ENABLED_TARGET_OS_NATIVECLIENT"); |
| 452 #endif |
370 else | 453 else |
371 return UnknownOS; | 454 return UnknownOS; |
372 } | 455 } |
373 | 456 |
374 Triple::EnvironmentType Triple::ParseEnvironment(StringRef EnvironmentName) { | 457 Triple::EnvironmentType Triple::ParseEnvironment(StringRef EnvironmentName) { |
375 if (EnvironmentName.startswith("eabi")) | 458 if (EnvironmentName.startswith("eabi")) |
| 459 #if defined(LLVM_ENABLED_TARGET_ENV_EABI) |
376 return EABI; | 460 return EABI; |
| 461 #else |
| 462 llvm_unreachable("ParseEnv eabi w/out LLVM_ENABLED_TARGET_ENV_EABI"); |
| 463 #endif |
377 else if (EnvironmentName.startswith("gnueabi")) | 464 else if (EnvironmentName.startswith("gnueabi")) |
| 465 #if defined(LLVM_ENABLED_TARGET_ENV_GNUEABI) |
378 return GNUEABI; | 466 return GNUEABI; |
| 467 #else |
| 468 llvm_unreachable("ParseEnv gnueabi w/out LLVM_ENABLED_TARGET_ENV_GNUEABI"); |
| 469 #endif |
379 else if (EnvironmentName.startswith("gnu")) | 470 else if (EnvironmentName.startswith("gnu")) |
| 471 #if defined(LLVM_ENABLED_TARGET_ENV_GNU) |
380 return GNU; | 472 return GNU; |
| 473 #else |
| 474 llvm_unreachable("ParseEnv gnu w/out LLVM_ENABLED_TARGET_ENV_GNU"); |
| 475 #endif |
381 else if (EnvironmentName.startswith("macho")) | 476 else if (EnvironmentName.startswith("macho")) |
| 477 #if defined(LLVM_ENABLED_TARGET_ENV_MACHO) |
382 return MachO; | 478 return MachO; |
| 479 #else |
| 480 llvm_unreachable("ParseEnv macho w/out LLVM_ENABLED_TARGET_ENV_MACHO"); |
| 481 #endif |
383 else | 482 else |
384 return UnknownEnvironment; | 483 return UnknownEnvironment; |
385 } | 484 } |
386 | 485 |
387 void Triple::Parse() const { | 486 void Triple::Parse() const { |
388 assert(!isInitialized() && "Invalid parse call."); | 487 assert(!isInitialized() && "Invalid parse call."); |
389 | 488 |
390 Arch = ParseArch(getArchName()); | 489 Arch = ParseArch(getArchName()); |
391 Vendor = ParseVendor(getVendorName()); | 490 Vendor = ParseVendor(getVendorName()); |
392 OS = ParseOS(getOSName()); | 491 OS = ParseOS(getOSName()); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 } | 743 } |
645 | 744 |
646 void Triple::setEnvironmentName(StringRef Str) { | 745 void Triple::setEnvironmentName(StringRef Str) { |
647 setTriple(getArchName() + "-" + getVendorName() + "-" + getOSName() + | 746 setTriple(getArchName() + "-" + getVendorName() + "-" + getOSName() + |
648 "-" + Str); | 747 "-" + Str); |
649 } | 748 } |
650 | 749 |
651 void Triple::setOSAndEnvironmentName(StringRef Str) { | 750 void Triple::setOSAndEnvironmentName(StringRef Str) { |
652 setTriple(getArchName() + "-" + getVendorName() + "-" + Str); | 751 setTriple(getArchName() + "-" + getVendorName() + "-" + Str); |
653 } | 752 } |
OLD | NEW |