mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Tablegen should only replace the output if it changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7486 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
02f7fa482a
commit
e79c72d4cd
@ -11,6 +11,7 @@
|
|||||||
#include "Record.h"
|
#include "Record.h"
|
||||||
#include "Support/CommandLine.h"
|
#include "Support/CommandLine.h"
|
||||||
#include "Support/Signals.h"
|
#include "Support/Signals.h"
|
||||||
|
#include "Support/FileUtilities.h"
|
||||||
#include "CodeEmitterGen.h"
|
#include "CodeEmitterGen.h"
|
||||||
#include "RegisterInfoEmitter.h"
|
#include "RegisterInfoEmitter.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -391,15 +392,18 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
std::ostream *Out = &std::cout;
|
std::ostream *Out = &std::cout;
|
||||||
if (OutputFilename != "-") {
|
if (OutputFilename != "-") {
|
||||||
Out = new std::ofstream(OutputFilename.c_str());
|
// Output to a .tmp file, because we don't actually want to overwrite the
|
||||||
|
// output file unless the generated file is different or the specified file
|
||||||
|
// does not exist.
|
||||||
|
Out = new std::ofstream((OutputFilename+".tmp").c_str());
|
||||||
|
|
||||||
if (!Out->good()) {
|
if (!Out->good()) {
|
||||||
std::cerr << argv[0] << ": error opening " << OutputFilename << "!\n";
|
std::cerr << argv[0] << ": error opening " << OutputFilename << ".tmp!\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the file gets removed if *gasp* tablegen crashes...
|
// Make sure the file gets removed if *gasp* tablegen crashes...
|
||||||
RemoveFileOnSignal(OutputFilename);
|
RemoveFileOnSignal(OutputFilename+".tmp");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -438,6 +442,16 @@ int main(int argc, char **argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Out != &std::cout) delete Out;
|
if (Out != &std::cout) {
|
||||||
|
delete Out; // Close the file
|
||||||
|
|
||||||
|
// Now that we have generated the result, check to see if we either don't
|
||||||
|
// have the requested file, or if the requested file is different than the
|
||||||
|
// file we generated. If so, move the generated file over the requested
|
||||||
|
// file. Otherwise, just remove the file we just generated, so 'make'
|
||||||
|
// doesn't try to regenerate tons of dependencies.
|
||||||
|
//
|
||||||
|
MoveFileOverIfUpdated(OutputFilename+".tmp", OutputFilename);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "Record.h"
|
#include "Record.h"
|
||||||
#include "Support/CommandLine.h"
|
#include "Support/CommandLine.h"
|
||||||
#include "Support/Signals.h"
|
#include "Support/Signals.h"
|
||||||
|
#include "Support/FileUtilities.h"
|
||||||
#include "CodeEmitterGen.h"
|
#include "CodeEmitterGen.h"
|
||||||
#include "RegisterInfoEmitter.h"
|
#include "RegisterInfoEmitter.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -391,15 +392,18 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
std::ostream *Out = &std::cout;
|
std::ostream *Out = &std::cout;
|
||||||
if (OutputFilename != "-") {
|
if (OutputFilename != "-") {
|
||||||
Out = new std::ofstream(OutputFilename.c_str());
|
// Output to a .tmp file, because we don't actually want to overwrite the
|
||||||
|
// output file unless the generated file is different or the specified file
|
||||||
|
// does not exist.
|
||||||
|
Out = new std::ofstream((OutputFilename+".tmp").c_str());
|
||||||
|
|
||||||
if (!Out->good()) {
|
if (!Out->good()) {
|
||||||
std::cerr << argv[0] << ": error opening " << OutputFilename << "!\n";
|
std::cerr << argv[0] << ": error opening " << OutputFilename << ".tmp!\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the file gets removed if *gasp* tablegen crashes...
|
// Make sure the file gets removed if *gasp* tablegen crashes...
|
||||||
RemoveFileOnSignal(OutputFilename);
|
RemoveFileOnSignal(OutputFilename+".tmp");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -438,6 +442,16 @@ int main(int argc, char **argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Out != &std::cout) delete Out;
|
if (Out != &std::cout) {
|
||||||
|
delete Out; // Close the file
|
||||||
|
|
||||||
|
// Now that we have generated the result, check to see if we either don't
|
||||||
|
// have the requested file, or if the requested file is different than the
|
||||||
|
// file we generated. If so, move the generated file over the requested
|
||||||
|
// file. Otherwise, just remove the file we just generated, so 'make'
|
||||||
|
// doesn't try to regenerate tons of dependencies.
|
||||||
|
//
|
||||||
|
MoveFileOverIfUpdated(OutputFilename+".tmp", OutputFilename);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user