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_LINKER_CONFIG_H 1893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#define BCC_SUPPORT_LINKER_CONFIG_H 1993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 2093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include <string> 2193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 2293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include <mcld/MC/MCLDInfo.h> 2393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include <mcld/Support/TargetRegistry.h> 2493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include <mcld/LD/DiagnosticLineInfo.h> 2593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#include <mcld/LD/DiagnosticPrinter.h> 2693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 2793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaonamespace bcc { 2893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 2993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoclass LinkerConfig { 3093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoprivate: 3193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao //===--------------------------------------------------------------------===// 3293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao // Available Configurations 3393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao //===--------------------------------------------------------------------===// 3440b9ba0213349a9eed81dfe974c0ea6f9a514558Shih-wei Liao const std::string mTriple; 3593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao bool mShared; 3693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao std::string mSOName; 3793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 3893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaoprivate: 3993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao //===--------------------------------------------------------------------===// 4093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao // These are generated by LinkerConfig during initialize(). 4193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao //===--------------------------------------------------------------------===// 4293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao const mcld::Target *mTarget; 4393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao bool initializeTarget(); 4493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 4593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao mcld::MCLDInfo *mLDInfo; 4693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao bool initializeLDInfo(); 4793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 4893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao mcld::DiagnosticLineInfo *mDiagLineInfo; 4993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao mcld::DiagnosticPrinter *mDiagPrinter; 5093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao bool initializeDiagnostic(); 5193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 5293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic: 5393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao //===--------------------------------------------------------------------===// 5493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao // Getters 5593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao //===--------------------------------------------------------------------===// 5693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao inline const std::string &getTriple() const 5793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao { return mTriple; } 5893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 5993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao inline const mcld::Target *getTarget() const 6093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao { return mTarget; } 6193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 6293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao inline mcld::MCLDInfo* getLDInfo() 6393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao { return mLDInfo; } 6493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 6593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao inline const mcld::MCLDInfo* getLDInfo() const 6693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao { return mLDInfo; } 6793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 6893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao inline bool isShared() const 6993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao { return mShared; } 7093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 7193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao inline std::string getSOName() const 7293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao { return mSOName; } 7393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 7493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void setShared(bool pEnable = true); 7593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 7693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void setBsymbolic(bool pEnable = true); 7793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 7893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void setSOName(const std::string &pSOName); 7993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 8093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void setDyld(const std::string &pDyld); 8193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 8293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void setSysRoot(const std::string &pSysRoot); 8393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 8493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void addWrap(const std::string &pWrapSymbol); 8593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 8693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void addPortable(const std::string &pPortableSymbol); 8793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 8893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao void addSearchDir(const std::string &pDir); 8993c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 9093c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liaopublic: 9193c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao LinkerConfig(const std::string& pTriple); 9293c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 9393c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao virtual ~LinkerConfig(); 9493c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao}; 9593c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 9693c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao} // end namespace bcc 9793c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao 9893c8832a6916a54d984764bf83a8a77cbae4143bShih-wei Liao#endif // BCC_SUPPORT_LINKER_CONFIG_H 99