Add info about registered targets (mimic LLVM tools).

This commit is contained in:
kai 2012-07-16 23:32:57 +02:00
parent 2ae6b3962a
commit d986d08f37

View file

@ -11,6 +11,7 @@
#include "llvm/Target/TargetOptions.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/Host.h"
#include "llvm/MC/SubtargetFeature.h"
#include <stdio.h>
@ -83,7 +84,13 @@ void printVersion() {
global.ldc_version, global.version, global.llvm_version, global.copyright, global.written);
printf("D Language Documentation: http://d-programming-language.org/index.html\n"
"LDC Homepage: https://github.com/ldc-developers/ldc\n");
printf("\n");
printf(" Default target: %s\n", llvm::sys::getDefaultTargetTriple().c_str());
std::string CPU = llvm::sys::getHostCPUName();
if (CPU == "generic") CPU = "(unknown)";
printf(" Host CPU: %s\n", CPU.c_str());
printf("\n");
llvm::TargetRegistry::printRegisteredTargetsForVersion();
exit(EXIT_SUCCESS);
}
@ -210,6 +217,17 @@ int main(int argc, char** argv)
}
#endif
// Initialize LLVM.
// Initialize targets first, so that --version shows registered targets.
#define LLVM_TARGET(A) \
LLVMInitialize##A##TargetInfo(); \
LLVMInitialize##A##Target(); \
LLVMInitialize##A##AsmPrinter(); \
LLVMInitialize##A##AsmParser(); \
LLVMInitialize##A##TargetMC();
LDC_TARGETS
#undef LLVM_TARGET
// Handle fixed-up arguments!
cl::SetVersionPrinter(&printVersion);
cl::ParseCommandLineOptions(final_args.size(), (char**)&final_args[0], "LLVM-based D Compiler\n", true);
@ -457,22 +475,6 @@ int main(int argc, char** argv)
std::string triple = global.params.targetTriple;
// Allocate target machine.
// first initialize llvm
#if 0
llvm::InitializeNativeTarget();
llvm::InitializeNativeTargetAsmParser();
llvm::InitializeNativeTargetAsmPrinter();
#endif
#define LLVM_TARGET(A) \
LLVMInitialize##A##TargetInfo(); \
LLVMInitialize##A##Target(); \
LLVMInitialize##A##AsmPrinter(); \
LLVMInitialize##A##AsmParser(); \
LLVMInitialize##A##TargetMC();
LDC_TARGETS
#undef LLVM_TARGET
const llvm::Target *theTarget = NULL;
// Check whether the user has explicitly specified an architecture to compile for.
if (mArch.empty())