//===- TargetSelect.h -----------------------------------------------------===//
//
//                     The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef TARGETSELECT_H
#define TARGETSELECT_H
#ifdef ENABLE_UNITTEST
#include <gtest.h>
#endif

extern "C" {
  // Declare all of the target-initialization functions that are available.
#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##LDTargetInfo();
#include "mcld/Config/Targets.def"

  // Declare all of the target-dependent functions that are available.
#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##LDTarget();
#include "mcld/Config/Targets.def"

  // Declare all of the target-depedent linker information
#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##LDInfo();
#include "mcld/Config/Linkers.def"

  // Declare all of the available linker environment.
#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##SectLinker();
#include "mcld/Config/Linkers.def"

  // Declare all of the available target-specific linker
#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##LDBackend();
#include "mcld/Config/Linkers.def"
} // extern "C"

namespace mcld
{
  /// InitializeAllTargetInfos - The main program should call this function if
  /// it wants access to all available targets that LLVM is configured to
  /// support, to make them available via the TargetRegistry.
  ///
  /// It is legal for a client to make multiple calls to this function.
  inline void InitializeAllTargetInfos() {
#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDTargetInfo();
#include "mcld/Config/Targets.def"
  }

  /// InitializeAllTargets - The main program should call this function if it
  /// wants access to all available target machines that LLVM is configured to
  /// support, to make them available via the TargetRegistry.
  ///
  /// It is legal for a client to make multiple calls to this function.
  inline void InitializeAllTargets() {
    mcld::InitializeAllTargetInfos();

#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDTarget();
#include "mcld/Config/Targets.def"
  }

  /// InitializeAllLinkers - The main program should call this function if it
  /// wants all linkers that LLVM is configured to support, to make them
  /// available via the TargetRegistry.
  ///
  /// It is legal for a client to make multiple calls to this function.
  inline void InitializeAllLinkers() {
#define LLVM_LINKER(TargetName) LLVMInitialize##TargetName##SectLinker();
#include "mcld/Config/Linkers.def"

#define LLVM_LINKER(TargetName) LLVMInitialize##TargetName##LDBackend();
#include "mcld/Config/Linkers.def"
  }

} // namespace of mcld

#endif

