I have installed Lazarus, and I succeeded building an executable and rendering stuff via GL ES 2 -- BUT my project is Lazarus-independent (I only use the IDE as a convenient code editor) and I had to fiddle with code options in my build.sh to get a working executable
Also, Lazarus ran *monstrously* slow back then due to horribly inefficient text rendering (SynEdit is based on WinAPI calls which are emulated in Linux -- badly, with horrible performance). But that was several years ago and a RPi 2.

Sample (i don't know if this is correct any more, haven't tested in years)
Code:
LIN_T=$(uname -m)

CODE_OPTIONS=" -O3 -OpPentiumM -CfSSE2"
CGE_OPTIONS="-vq -gl -gs -gp -Xi -XX -dcge -dnotlaz -Sh -Sc -Mobjfpc -Rintel ${CODE_OPTIONS}"

if [ "${LIN_T}" == "armv7l" ]
then
  #works with RPi 3 / raspbian 9 / fpc 3.0.0
  CODE_OPTIONS=" -O3 -CaEABIHF -CpARMV7R"

   #worked with RPi 2 / raspbian 8 / fpc 2.6.4
   #CODE_OPTIONS=" -O3 -CaEABIHF -CpARMV6 -Cfvfpv2"

  CGE_OPTIONS="-vq -gl -gs -gp -Xi -dcge -dnotlaz -Sh -Sc -Mobjfpc ${CODE_OPTIONS}"
fi