Example:
# x86 Linux
ifeq ($(SELECTED_PAIRS),PAIRS_NONE)
ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
SELECTED_PAIRS=x86-linux
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<libgnarl/a-intnam__linux.ads \
a-synbar.adb<libgnarl/a-synbar__posix.adb \
a-synbar.ads<libgnarl/a-synbar__posix.ads \
s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
s-intman.adb<libgnarl/s-intman__posix.adb \
s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
$(TRASYM_DWARF_UNIX_PAIRS) \
s-tsmona.adb<libgnat/s-tsmona__linux.adb \
a-exetim.adb<libgnarl/a-exetim__posix.adb \
a-exetim.ads<libgnarl/a-exetim__default.ads \
s-linux.ads<libgnarl/s-linux.ads \
s-osinte.adb<libgnarl/s-osinte__posix.adb \
$(ATOMICS_TARGET_PAIRS) \
system.ads<libgnat/system-linux-x86.ads
ifeq ($(strip $(MULTISUBDIR)),/64)
LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
else
LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
endif
LIBGNAT_TARGET_PAIRS += \
s-mudido.adb<libgnarl/s-mudido__affinity.adb \
s-osinte.ads<libgnarl/s-osinte__linux.ads \
s-oslock.ads<libgnat/s-oslock__posix.ads \
s-osprim.adb<libgnat/s-osprim__posix.adb \
s-taprop.adb<libgnarl/s-taprop__linux.adb \
s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
s-taspri.ads<libgnarl/s-taspri__posix.ads
EH_MECHANISM=-gcc
THREADSLIB = -lpthread -lrt
EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
GNATLIB_SHARED = gnatlib-shared-dual
MISCLIB = -ldl
GMEM_LIB = gmemlib
LIBRARY_VERSION := $(LIB_VERSION)
GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
endif
endif
The SELECTED_PAIRS variable is set before the first match of PowerPC mentioned above to PAIRS_NONE, so should always get through this test.
Filter based on anything with 86 and linux in the name. Result should be the empty string.
SELECTED_PAIRS isn’t used anywhere else, except to test and set it inside the matched block. 
LIBGNAT_TARGET_PAIRS defines a list of filename pairs in the format of link name<original filename, there is a section somewhere else, the main makefile I think which creates links to these files inside the build directory. This is all using filename trickery to make sure the files match the package names.
EH_MECHANISM defines which exception handling package the runtime is built with, lines 847-850:
# When using the GCC exception handling mechanism, we need to use an
# alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
EH_MECHANISM=
THREADSLIB defines which threading libraries this runtime needs to link against, some of these are empty meaning they have no threading/tasking defined/enabled afaics.
Lines 1065-1069 explain that these objects are for the packages required for each type of runtime:
# Additional object files from Ada sources to be added in libgnat
EXTRA_GNATRTL_NONTASKING_OBJS=
# Additional object files from Ada sources to be added in libgnarl
EXTRA_GNATRTL_TASKING_OBJS=
There are a number of indepsw*.adb files which different implementations, from the spec this is for GNATLINK platform-independent switches.
Lines 863-867 specify that GNATLIB_SHARED must be a target name inside the gcc-interface/Makefile.in:
# Default gnatlib-shared target.
# By default, equivalent to gnatlib.
# Set to gnatlib-shared-default, gnatlib-shared-dual, or a platform specific
# target when supported.
GNATLIB_SHARED = gnatlib
MISCLIB is other libraries to link against.
I’ve no idea what GMEM_LIB is.
LIBRARY_VERSION is retrieved from the gnatvsn.ads packe near the start of Makefile.rtl.
GNATLIBCFLAGS_FOR_GCCSJLJ is explained on lines 852-855:
# Compilation options for the GCC-SJLJ RTS. This may be augmented for
# target specific contexts, e.g. to add -fno-omit-frame-pointer for backtrace
# computations.
GNATLIBCFLAGS_FOR_GCCSJLJ=-fsjlj
This if for exceptions using setjmp/longjmp function calls, not zero cost exceptions.