FreePascal is also moving toward String = UnicodeString, *but* you have to enable it with {$unicodestrings
That would break backward compatibility with fpc 2.6.4, though, so you should include a check like
Code:
{$if (FPC_FULLVERSION<30000)} 
  {$fatal Your Free Pascal is too old! Use 3.0 or newer.}
{$endif}
My advice would be to define your own AllegroString and use it everywhere, the definition itself wrapped in conditionals for different compilers/platforms.

I did that with TFileNameString and kept working on my engine long before I made final decision what format I want for the file names. Initially I was planning TFileNameString to be Utf8String on Linux and UnicodeString on Windows but I later decided it to be Utf8String everywhere. I only had to correct the type definition and conversion functions like FileNameToUtf8/FileNameToUnicode and so on, themselves having several variants wrapped in conditionals.

P.S. Abstraction layers are good.