Such an error usually is caused by PPU version mix. In your case, while compiling CFURL, which uses another file xxx (Compiling CFURL, checksum changed for file xxx) the compiler finds that xxx either was compiled with different configuration/compiler version or the unit itself was changed.
Another possibility is that because (at least) one of your project's unit has the same name as one of the RTL/FCL/LCL/3rd party packages unit whose path is included in search path. To test, try running compiler options->test, a warning would be shown like: ppu existed twice bla bla bla...