$(pkg-config ...) is shell syntax for command substitution, i.e.
starting a new process. I think that GNAT project relates programs
will only pass text, not interpret it, or have the shell interpret
it.
You could have an external variable referenced in the project file and
initialize it "outside", thus
package Linker is
for Default_Switches("Ada") use ("-gnatwa") & external("MYGTKL");
end Linker;
$ MYGTKL=$(pkg-config --libs cairo) gnatmake -PP