193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao/*
293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * Copyright 2012, The Android Open Source Project
393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao *
493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License");
593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * you may not use this file except in compliance with the License.
693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * You may obtain a copy of the License at
793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao *
893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao *     http://www.apache.org/licenses/LICENSE-2.0
993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao *
1093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * Unless required by applicable law or agreed to in writing, software
1193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS,
1293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * See the License for the specific language governing permissions and
1493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao * limitations under the License.
1593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao */
1693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
1793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#ifndef BCC_SUPPORT_TARGET_LINKER_CONFIGS_H
1893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#define BCC_SUPPORT_TARGET_LINKER_CONFIGS_H
1993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
2093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include <string>
2193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
2293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include "bcc/Config/Config.h"
2393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include "bcc/Support/LinkerConfig.h"
2493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
2593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaonamespace bcc {
2693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
2793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
2893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao// ARM
2993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
3093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#if defined(PROVIDE_ARM_CODEGEN)
3193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass ARMLinkerConfig : public LinkerConfig {
3293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic:
3393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  ARMLinkerConfig();
3493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao};
3593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#endif // defined(PROVIDE_ARM_CODEGEN)
3693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
3793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
3893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao// MIPS
3993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
4093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#if defined(PROVIDE_MIPS_CODEGEN)
4193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass MipsLinkerConfig : public LinkerConfig {
4293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic:
4393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  MipsLinkerConfig();
4493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao};
4593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#endif // defined(PROVIDE_MIPS_CODEGEN)
4693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
4793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
4893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao// X86 and X86_64
4993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
5093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#if defined(PROVIDE_X86_CODEGEN)
5193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass X86FamilyLinkerConfigBase : public LinkerConfig {
5293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic:
5393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  X86FamilyLinkerConfigBase(const std::string& pTriple);
5493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao};
5593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
5693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass X86_32LinkerConfig : public X86FamilyLinkerConfigBase {
5793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic:
5893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  X86_32LinkerConfig();
5993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao};
6093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
6193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass X86_64LinkerConfig : public X86FamilyLinkerConfigBase {
6293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic:
6393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  X86_64LinkerConfig();
6493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao};
6593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#endif // defined(PROVIDE_X86_CODEGEN)
6693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
6793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
6893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao// Default target
6993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao//===----------------------------------------------------------------------===//
7093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass DefaultLinkerConfig : public
7193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#if defined (DEFAULT_ARM_CODEGEN)
7293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  ARMLinkerConfig
7393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#elif defined (DEFAULT_MIPS_CODEGEN)
7493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  MipsLinkerConfig
7593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#elif defined (DEFAULT_X86_CODEGEN)
7693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  X86_32LinkerConfig
7793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#elif defined (DEFAULT_X86_64_CODEGEN)
7893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao  X86_64LinkerConfig
7993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#else
8093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#  error "Unsupported Default Target!"
8193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#endif
8293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao{ };
8393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
8493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao} // end namespace bcc
8593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao
8693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#endif // BCC_SUPPORT_LINKER_CONFIG_H
87