diff --git a/Makefile.am b/Makefile.am
index 85202e543afa99713acd1e3eb04c1d9b5ad598f8..d3d808941d32f4c53066a66bd3d7a5977d7d089e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,7 +21,11 @@ ACLOCAL_AMFLAGS        = -I m4
 AM_CFLAGS 			   = --std=c99 -D_GNU_SOURCE -Wall
 
 bin_PROGRAMS 		   = elf-dump print-libstubs
-lib_LTLIBRARIES 	   = libcapsule.la libz.la libGL.la
+lib_LTLIBRARIES 	   = libcapsule.la
+
+lib_LTLIBRARIES       += libz.la
+lib_LTLIBRARIES       += libGL.la
+
 include_HEADERS        = capsule/capsule.h
 nodist_include_HEADERS = utils/utils.h utils/dump.h utils/process-pt-dynamic.h
 
@@ -39,15 +43,20 @@ libcapsule_la_SOURCES  = capsule/capsule-dlmopen.c  \
                          utils/mmap-info.c
 
 libcapsule_la_LDFLAGS  = -lelf
+############################################################################
+# shim libraries:
 
+# libz to match version 1.2.8 and have the same symbol versioning:
 libz_la_SOURCES        = shim/libz.so.c
-libz_la_LDFLAGS        = -lcapsule -version-info 1:1:0 \
+libz_la_LDFLAGS        = -lcapsule -version-number 1:2:8 \
                          -Wl,--version-script=shim/libz.so.map
 
+# libGL is always 1.2.0, and doesn't use symbol versioning:
 libGL_la_SOURCES       = shim/libGL.so.c
-libGL_la_LDFLAGS       = -lcapsule -version-info 1:1:0
+libGL_la_LDFLAGS       = -lcapsule -version-number 1:2
 
-shims      = z GL
+############################################################################
+shims      = $(patsubst shim/lib%.so.c,%,$(filter shim/lib%.so.c,$(SOURCES)))
 shim_srcs  = $(foreach l,$(shims),shim/lib$l.so.c)
 shim_base  = $(basename $(shim_srcs))
 shim_files = $(foreach y,map symbols,$(foreach x,$(shim_base),$x.$y))