Fortran: Fix .mod file comparison for Intel 16 format
The Intel 16 format starts with the 0x0A 0x00 sequence that we use to skip past the timestamp. This occurrence appears to be a version number. Skip the first byte to avoid matching the sequence early. Ideally we should gain a better understanding of the format and avoid depending on short sequences that are likely to appear early by coincidence, but this approach will suffice for now. Closes: #16263
This commit is contained in:
parent
f59513140b
commit
f699323ade
|
@ -677,6 +677,12 @@ bool cmDependsFortran::ModulesDiffer(const char* modFile,
|
||||||
const char seq[2] = { '\n', '\0' };
|
const char seq[2] = { '\n', '\0' };
|
||||||
const int seqlen = 2;
|
const int seqlen = 2;
|
||||||
|
|
||||||
|
// Skip the leading byte which appears to be a version number.
|
||||||
|
// We do not need to check for an error because the sequence search
|
||||||
|
// below will fail in that case.
|
||||||
|
finModFile.get();
|
||||||
|
finStampFile.get();
|
||||||
|
|
||||||
if (!cmFortranStreamContainsSequence(finModFile, seq, seqlen)) {
|
if (!cmFortranStreamContainsSequence(finModFile, seq, seqlen)) {
|
||||||
// The module is of unexpected format. Assume it is different.
|
// The module is of unexpected format. Assume it is different.
|
||||||
std::cerr << compilerId << " fortran module " << modFile
|
std::cerr << compilerId << " fortran module " << modFile
|
||||||
|
|
Loading…
Reference in New Issue