Add -v and -save-temps
Change-Id: I4bb6d41f6ac45880e09e76398bff8deaf7b6a280
diff --git a/tests/abcc/jni/Abcc.cpp b/tests/abcc/jni/Abcc.cpp
index ed2df3c..7285be8 100644
--- a/tests/abcc/jni/Abcc.cpp
+++ b/tests/abcc/jni/Abcc.cpp
@@ -134,8 +134,8 @@
}
-BitcodeCompiler::BitcodeCompiler(const std::string &abi, const std::string &sysroot, const std::string &working_dir)
- : mAbi(abi), mSysroot(sysroot), mWorkingDir(working_dir), mRet(RET_OK) {
+BitcodeCompiler::BitcodeCompiler(const std::string &abi, const std::string &sysroot, const std::string &working_dir, const bool savetemps)
+ : mAbi(abi), mSysroot(sysroot), mWorkingDir(working_dir), mRet(RET_OK), mSaveTemps(savetemps) {
// CFlags
mGlobalCFlags = kGlobalTargetAttrs[mAbi].mBaseCFlags;
mGlobalCFlags += std::string(" -mtriple=") + kGlobalTargetAttrs[mAbi].mTriple;
@@ -173,8 +173,8 @@
mRet = RET_FAIL_TRANSLATE;
return;
}
-
- removeIntermediateFile(bc.mBCPath);
+ if (!mSaveTemps)
+ removeIntermediateFile(bc.mBCPath);
}
}
@@ -197,8 +197,8 @@
mRet = RET_FAIL_COMPILE;
return;
}
-
- removeIntermediateFile(bc.mTargetBCPath);
+ if (!mSaveTemps)
+ removeIntermediateFile(bc.mTargetBCPath);
}
}
@@ -237,7 +237,8 @@
return;
copyRuntime(bc);
- removeIntermediateFile(bc.mObjPath);
+ if (!mSaveTemps)
+ removeIntermediateFile(bc.mObjPath);
mSonameMap.erase(i);
BitcodeInfo::dropExternalLDLibs(mSonameMap);
diff --git a/tests/abcc/jni/Abcc.h b/tests/abcc/jni/Abcc.h
index 0d9655a..8f9e779 100644
--- a/tests/abcc/jni/Abcc.h
+++ b/tests/abcc/jni/Abcc.h
@@ -137,7 +137,7 @@
std::string mExecutableToolsPath[(unsigned)CMD_LINK_RUNTIME+1];
public:
- BitcodeCompiler(const std::string &abi, const std::string &sysroot, const std::string &working_dir);
+ BitcodeCompiler(const std::string &abi, const std::string &sysroot, const std::string &working_dir, const bool savetemps);
const ReturnCode returnCode() const { return mRet; }
virtual void cleanupPre() {}
virtual void cleanupPost() {}
@@ -165,6 +165,8 @@
}
private:
+ bool mSaveTemps;
+
void prepareBitcodes();
void createSONameMapping();
virtual void getBitcodeFiles() = 0;
diff --git a/tests/abcc/jni/device/Abcc_device.cpp b/tests/abcc/jni/device/Abcc_device.cpp
index ea1f972..493dc47 100644
--- a/tests/abcc/jni/device/Abcc_device.cpp
+++ b/tests/abcc/jni/device/Abcc_device.cpp
@@ -39,7 +39,7 @@
DeviceBitcodeCompiler::DeviceBitcodeCompiler(const std::string &working_dir, const std::string &sysroot)
- : BitcodeCompiler(CURRENT_ABI, sysroot, working_dir) {}
+ : BitcodeCompiler(CURRENT_ABI, sysroot, working_dir, false/*!savetemps*/) {}
void DeviceBitcodeCompiler::cleanupPost() {
ReturnCode ret = mRet;
diff --git a/tests/abcc/jni/host/Abcc_host.cpp b/tests/abcc/jni/host/Abcc_host.cpp
index 9fb9084..ecbc0c9 100644
--- a/tests/abcc/jni/host/Abcc_host.cpp
+++ b/tests/abcc/jni/host/Abcc_host.cpp
@@ -22,16 +22,16 @@
HostBitcodeCompiler::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)
- : BitcodeCompiler(abi, sysroot, working_dir), mIn(input), mOut(output),
+ const std::string &platform, const bool savetemps)
+ : BitcodeCompiler(abi, sysroot, working_dir, savetemps), mIn(input), mOut(output),
mNDKDir(""), mPlatform(platform) {
initRuntimePath();
}
HostBitcodeCompiler::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)
- : BitcodeCompiler(abi, sysroot, working_dir), mIn(input), mOut(output),
+ const std::string &platform, const bool savetemps)
+ : BitcodeCompiler(abi, sysroot, working_dir, savetemps), mIn(input), mOut(output),
mNDKDir(ndk_dir), mPlatform(platform), mToolchainBinPath(toolchain_bin) {
initRuntimePath();
}
diff --git a/tests/abcc/jni/host/Abcc_host.h b/tests/abcc/jni/host/Abcc_host.h
index 0cac7c9..8d8e1c6 100644
--- a/tests/abcc/jni/host/Abcc_host.h
+++ b/tests/abcc/jni/host/Abcc_host.h
@@ -44,10 +44,10 @@
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);
+ const std::string &platform, const bool savetemps);
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);
+ const std::string &platform, const bool savetemps);
public:
virtual int parseLDFlags(BitcodeInfo &info, const std::string &str);
diff --git a/tests/abcc/jni/host/main.cpp b/tests/abcc/jni/host/main.cpp
index 95a07c8..f9c2486 100644
--- a/tests/abcc/jni/host/main.cpp
+++ b/tests/abcc/jni/host/main.cpp
@@ -21,8 +21,9 @@
static int parseArguments(char **argv,
std::string &abi, std::string &ndk_dir, std::string &sysroot,
- std::string &input, std::string &output, std::string &platform) {
+ std::string &input, std::string &output, std::string &platform, bool &savetemps) {
unsigned idx = 1;
+ savetemps = false;
while (argv[idx] != 0) {
std::string arg = argv[idx++];
if (arg.find("--abi=") != std::string::npos) {
@@ -46,11 +47,16 @@
output = argv[idx++];
continue;
}
- if (arg == "--verbose") {
+ if (arg == "--verbose" || arg == "-v") {
kVerbose = true;
continue;
}
+ if (arg == "-save-temps") {
+ savetemps = true;
+ continue;
+ }
+
LOGE("Unsupport argument: %s", arg.c_str());
return -1;
}
@@ -75,9 +81,10 @@
std::string platform;
std::string working_dir;
std::string toolchain_bin;
+ bool savetemps;
if (parseArguments(argv,
- abi, ndk_dir, sysroot, input, output, platform) != 0)
+ abi, ndk_dir, sysroot, input, output, platform, savetemps) != 0)
return -1;
// Make sure they are absolute path
@@ -113,11 +120,11 @@
if (ndk_dir.empty())
compiler.reset(new HostBitcodeCompiler(abi, sysroot,
input, output,
- working_dir, platform));
+ working_dir, platform, savetemps));
else
compiler.reset(new HostBitcodeCompiler(abi, sysroot, ndk_dir, toolchain_bin,
input, output,
- working_dir, platform));
+ working_dir, platform, savetemps));
compiler->prepare();
if (compiler->returnCode() != RET_OK) {