mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: only report the first occurance of missing file when making dependencies
This commit is contained in:
@ -27,9 +27,9 @@ Application
|
|||||||
wmkdep
|
wmkdep
|
||||||
|
|
||||||
Description
|
Description
|
||||||
A fast dependency list generator that emulates the behaviour and
|
A fast dependency list generator that emulates the behaviour and the
|
||||||
output of cpp -M. However, the output contains no duplications and
|
output of cpp -M. However, the output contains no duplicates and
|
||||||
is ~40% faster than cpp.
|
is approx. 40% faster than cpp.
|
||||||
|
|
||||||
The algorithm uses flex to scan for includes and searches the files
|
The algorithm uses flex to scan for includes and searches the files
|
||||||
found. Each file is entered into a hash table so that files are scanned
|
found. Each file is entered into a hash table so that files are scanned
|
||||||
@ -224,12 +224,17 @@ struct FileName
|
|||||||
struct FileName* next;
|
struct FileName* next;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FileName* fileHashTable[HASH_TABLE_SIZE]; /* File hash table */
|
|
||||||
struct FileName* dirHashTable[HASH_TABLE_SIZE]; /* Directory hash table */
|
/* Set of files already visited */
|
||||||
|
struct FileName* visitedFiles[HASH_TABLE_SIZE];
|
||||||
|
|
||||||
|
/* Set of (java) directories already visited */
|
||||||
|
struct FileName* visitedDirs[HASH_TABLE_SIZE];
|
||||||
|
|
||||||
|
|
||||||
/* lookup name in hash table, if not found insert in table */
|
/*
|
||||||
|
* lookup name in hash table, if not found insert in table
|
||||||
|
*/
|
||||||
int lookUp(struct FileName** hashTable, const char* p)
|
int lookUp(struct FileName** hashTable, const char* p)
|
||||||
{
|
{
|
||||||
int ii = 0;
|
int ii = 0;
|
||||||
@ -264,9 +269,9 @@ int lookUp(struct FileName** hashTable, const char* p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
/* Add a directory name to the file name */
|
* Add a directory name to the file name
|
||||||
|
*/
|
||||||
char* addDirectoryName(const char* directoryName, const char* fileName)
|
char* addDirectoryName(const char* directoryName, const char* fileName)
|
||||||
{
|
{
|
||||||
char* pathName;
|
char* pathName;
|
||||||
@ -285,14 +290,15 @@ char* addDirectoryName(const char* directoryName, const char* fileName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* open a file and create buffer and put on stack stack */
|
/*
|
||||||
|
* open a file and create buffer and put on stack
|
||||||
|
*/
|
||||||
void nextFile(const char* fileName)
|
void nextFile(const char* fileName)
|
||||||
{
|
{
|
||||||
int d;
|
int d;
|
||||||
char* pathName;
|
char* pathName;
|
||||||
|
|
||||||
if (lookUp(fileHashTable, fileName)) return;
|
if (lookUp(visitedFiles, fileName)) return;
|
||||||
|
|
||||||
if (currentBuffer >= FILE_STACK_SIZE)
|
if (currentBuffer >= FILE_STACK_SIZE)
|
||||||
{
|
{
|
||||||
@ -337,6 +343,10 @@ void nextFile(const char* fileName)
|
|||||||
);
|
);
|
||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
fflush(stderr);
|
||||||
|
|
||||||
|
/* only report the first occurance */
|
||||||
|
lookUp(visitedFiles, fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -349,6 +359,9 @@ void nextFile(const char* fileName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Replace all '.' with '/'
|
||||||
|
*/
|
||||||
void dotToSlash(char* fileName)
|
void dotToSlash(char* fileName)
|
||||||
{
|
{
|
||||||
int i, len;
|
int i, len;
|
||||||
@ -362,6 +375,9 @@ void dotToSlash(char* fileName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Import (java) file
|
||||||
|
*/
|
||||||
void importFile(const char* fileName)
|
void importFile(const char* fileName)
|
||||||
{
|
{
|
||||||
char* javaFileName;
|
char* javaFileName;
|
||||||
@ -380,6 +396,9 @@ void importFile(const char* fileName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Import (java) directories
|
||||||
|
*/
|
||||||
void importDirectory(const char* dirName)
|
void importDirectory(const char* dirName)
|
||||||
{
|
{
|
||||||
int dirNameLen;
|
int dirNameLen;
|
||||||
@ -387,7 +406,7 @@ void importDirectory(const char* dirName)
|
|||||||
DIR *source;
|
DIR *source;
|
||||||
struct dirent *list;
|
struct dirent *list;
|
||||||
|
|
||||||
if (lookUp(dirHashTable, dirName)) return;
|
if (lookUp(visitedDirs, dirName)) return;
|
||||||
|
|
||||||
dirNameLen = strlen(dirName);
|
dirNameLen = strlen(dirName);
|
||||||
uDirName = strdup(dirName);
|
uDirName = strdup(dirName);
|
||||||
@ -429,8 +448,9 @@ void importDirectory(const char* dirName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* The lexer calls yywrap to handle EOF conditions */
|
/*
|
||||||
|
* The lexer calls yywrap to handle EOF conditions
|
||||||
|
*/
|
||||||
int yywrap()
|
int yywrap()
|
||||||
{
|
{
|
||||||
/* Close the file for the buffer which has just reached EOF */
|
/* Close the file for the buffer which has just reached EOF */
|
||||||
|
|||||||
@ -170,6 +170,9 @@ void Parser::includeFile(const std::string& name)
|
|||||||
L"could not open file %s for source file %s\n",
|
L"could not open file %s for source file %s\n",
|
||||||
name.c_str(), sourceFile.c_str()
|
name.c_str(), sourceFile.c_str()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// only report the first occurance
|
||||||
|
visitedFiles_.insert(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -127,6 +127,9 @@ void Parser::includeFile(const std::string& name)
|
|||||||
L"could not open file %s for source file %s\n",
|
L"could not open file %s for source file %s\n",
|
||||||
name.c_str(), sourceFile.c_str()
|
name.c_str(), sourceFile.c_str()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// only report the first occurance
|
||||||
|
visitedFiles_.insert(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user