blob: f0caf0580412d327ceea6f5c06589df70bf33080 [file] [log] [blame]
/*
* Copyright 2013, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ABCC_ABCC_HOST_H
#define ABCC_ABCC_HOST_H
#include <cstdio>
#include "Abcc.h"
#define LOG(format, ...) do { \
fprintf(stderr, format, ##__VA_ARGS__); \
fprintf(stderr, "\n"); \
} while(0)
extern bool kVerbose;
#define LOGE LOG
#define LOGV(format, ...) do {\
if (kVerbose) LOG(format, ##__VA_ARGS__); \
} while(0)
namespace abcc {
class HostBitcodeCompiler : public BitcodeCompiler {
std::string mIn;
std::string mOut;
std::string mNDKDir; // empty string if standalone mode
std::string mPlatform;
std::string mToolchainBinPath; // Used at ndk mode to prevent tedious path issue
public:
HostBitcodeCompiler(const std::string &abi, const std::string &sysroot,
const std::string &input, const std::string &output, const std::string &working_dir,
const std::string &platform);
HostBitcodeCompiler(const std::string &abi, const std::string &sysroot, const std::string &ndk_dir, const std::string &toolchain_bin,
const std::string &input, const std::string &output, const std::string &working_dir,
const std::string &platform);
public:
virtual int parseLDFlags(BitcodeInfo &info, const std::string &str);
private:
virtual void getBitcodeFiles();
virtual void prepareToolchain();
virtual void copyRuntime(const BitcodeInfo &info);
virtual void removeIntermediateFile(const std::string &path);
private:
const std::string getToolchainBinPath() const;
const std::string getCompilerRTPath() const;
const std::string getGAbixxPath() const;
const std::string getLibPortablePath() const;
};
} // namespace abcc
#endif