diff --git a/skeleton/CMakeLists.txt b/skeleton/CMakeLists.txt
index e3518045132a78d4507e42f91dcecbfbb45e4947..ce2ee18a91f51092af0edcf20fbb4f9c55c7c8dd 100644
--- a/skeleton/CMakeLists.txt
+++ b/skeleton/CMakeLists.txt
@@ -3,7 +3,18 @@ add_library(SkeletonPass MODULE
     Skeleton.cpp
 )
 
+# Use C++11 to compile our pass (i.e., supply -std=c++11).
+target_compile_features(SkeletonPass PRIVATE cxx_range_for cxx_auto_type)
+
+# LLVM is (typically) built with no C++ RTTI. We need to match that.
 set_target_properties(SkeletonPass PROPERTIES
-    COMPILE_FLAGS "-std=c++11 -fno-rtti"
-    LINK_FLAGS "-undefined dynamic_lookup"
+    COMPILE_FLAGS "-fno-rtti"
 )
+
+# Get proper shared-library behavior (where symbols are not necessarily
+# resolved when the shared library is linked) on OS X.
+if(APPLE)
+    set_target_properties(SkeletonPass PROPERTIES
+        LINK_FLAGS "-undefined dynamic_lookup"
+    )
+endif(APPLE)