summaryrefslogtreecommitdiff
path: root/idlc/source/idlcmain.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-14 21:16:17 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-14 21:22:12 +0100
commitb83fd45150a411a2f8e8b621e844029d83c12473 (patch)
tree9fbfd69b324156c94954e868e885de9881a79fdc /idlc/source/idlcmain.cxx
parent67ae80657a053626df5186983ae6b6f20b90e52e (diff)
idlc: new parameter -M: write GNU make dependencies
Diffstat (limited to 'idlc/source/idlcmain.cxx')
-rw-r--r--idlc/source/idlcmain.cxx47
1 files changed, 32 insertions, 15 deletions
diff --git a/idlc/source/idlcmain.cxx b/idlc/source/idlcmain.cxx
index f9faa7eb9739..399fd6f508df 100644
--- a/idlc/source/idlcmain.cxx
+++ b/idlc/source/idlcmain.cxx
@@ -86,7 +86,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
if (nErrors > 0) {
removeIfExists(outputUrl);
} else {
- nErrors = produceFile(outputUrl);
+ nErrors = produceFile(outputUrl, 0);
}
idlc()->reset();
}
@@ -115,26 +115,43 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
(*i).getStr());
// prepare output file name
- OString outputFileUrl;
+ OString const strippedFileName(
+ sysFileName.copy(sysFileName.lastIndexOf(SEPARATOR) + 1));
+ OString outputFile;
if ( options.isValid("-O") )
{
- OString strippedFileName(sysFileName.copy(sysFileName.lastIndexOf(SEPARATOR) + 1));
- outputFileUrl = convertToFileUrl(options.getOption("-O"));
- sal_Char c = outputFileUrl.getStr()[outputFileUrl.getLength()-1];
-
- if ( c != '/' )
- outputFileUrl += OString::valueOf('/');
+ outputFile = (options.getOption("-O"));
+ if ('/' != outputFile.getStr()[outputFile.getLength()-1]) {
+ outputFile += OString::valueOf('/');
+ }
+ outputFile += strippedFileName.replaceAt(
+ strippedFileName.getLength() -3 , 3, "urd");
+ } else {
+ outputFile =
+ sysFileName.replaceAt(sysFileName.getLength() -3 , 3, "urd");
+ }
+ OString const outputFileUrl = convertToFileUrl(outputFile);
- outputFileUrl += strippedFileName.replaceAt(strippedFileName.getLength() -3 , 3, "urd");
- } else
- {
- outputFileUrl = convertToFileUrl(sysFileName.replaceAt(sysFileName.getLength() -3 , 3, "urd"));
+ ::rtl::OString depFileUrl;
+ if (options.isValid("-M")) {
+ depFileUrl = convertToFileUrl(options.getOption("-M"));
+ if ('/' != depFileUrl.getStr()[depFileUrl.getLength()-1]) {
+ depFileUrl += OString::valueOf('/');
+ }
+ depFileUrl += strippedFileName.replaceAt(
+ strippedFileName.getLength() -3 , 3, "d");
}
- if ( nErrors )
+ if ( nErrors ) {
+ if (options.isValid("-M")) {
+ removeIfExists(depFileUrl);
+ }
removeIfExists(outputFileUrl);
- else
- nErrors = produceFile(outputFileUrl);
+ } else {
+ sPair_t const pair(depFileUrl, outputFile);
+ nErrors = produceFile(outputFileUrl,
+ (options.isValid("-M")) ? &pair : 0);
+ }
idlc()->reset();
}