ANSI C is supposed to be a standard.. If you read the documentation they will explain what ISN'T ansi C so you can write portable code...
Microchip use a "Hardware config" header so you can just write / modify this file... But Alas!!! it's almost too easy to say they are ANSI compatible where we know they aren't..
I can write an LCD driver that can be used within ANSI C, all that's needed will be another driver for the new chip..
To Answer your question... SDCC do a multi platform compiler, but even that has its problems porting between the different chips it supports...