I'll be sending a sequence of patches that add aarch64-linux support to FPC. This is the first, or the second if you include the RelocType change in packages/fcl-res, which isn't AArch64-specific.
A big thank-you to Jonas Maebe for guiding me through this work and answering all my questions.
This tiny patch is for the build system and implies a big patch to all the Makefiles when fpcmake is run
(utils/fpcm/bin/*/fpcmake -Tall `find -name Makefile.fpc`).
diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp index cd0dc07..4de0d54 100644
--- a/packages/fpmkunit/src/fpmkunit.pp
+++ b/packages/fpmkunit/src/fpmkunit.pp
@@ -186,7 +186,7 @@ Const
OSCPUSupported : array[TOS,TCpu] of boolean = (
{ os none i386 m68k ppc sparc x86_64 arm ppc64 avr armeb mips mipsel jvm i8086 aarch64 } { none } ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
- { linux } ( false, true, true, true, true, true, true, true, false, true , true , true , false, false, false),
+ { linux } ( false, true, true, true, true, true, true, true, false, true , true , true , false, false, true ), { go32v2 } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false, false), { win32 } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false, false), { os2 } ( false, true, false, false, false, false, false, false, false, false, false, false, false, false, false), @@ -2629,6 +2629,7 @@ begin
x86_64: result := GetGccDirArch('cpux86_64','-m64');
powerpc: result := GetGccDirArch('cpupowerpc','-m32');
powerpc64:result := GetGccDirArch('cpupowerpc64','-m64');+ aarch64: result := GetGccDirArch('cpuaarch64',''); end {case}
else if OS = darwin then
case CPU ofdiff --git a/utils/fpcm/fpcmmain.pp b/utils/fpcm/fpcmmain.pp index 61a3efc..fead2e3 100644
--- a/utils/fpcm/fpcmmain.pp
+++ b/utils/fpcm/fpcmmain.pp
@@ -114,7 +114,7 @@ interface
{ This table is kept OS,Cpu because it is easier to maintain (PFV) } OSCpuPossible : array[TOS,TCpu] of boolean = (
{ os i386 m68k ppc sparc x86_64 arm ppc64 avr armeb armel mips mipsel mips64 misp64el jvm i8086 aarch64}
- { linux } ( true, true, true, true, true, true, true, false, true, false, true, true, false, false, false, false, false),
+ { linux } ( true, true, true, true, true, true, true, false, true, false, true, true, false, false, false, false, true ), { go32v2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false), { win32 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false), { os2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
