diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py
index 1236604b212ceca0c5fadcf1fd4fb3f78d664019..e377aeef484dc3a643f7207b15035e84620a82e1 100644
--- a/indra/cmake/run_build_test.py
+++ b/indra/cmake/run_build_test.py
@@ -82,15 +82,23 @@ def main(command, libpath=[], vars={}):
         dirs = os.environ.get(var, "").split(os.pathsep)
         # Append the sequence in libpath
         print "%s += %r" % (var, libpath)
-        dirs.extend(libpath)
+        for dir in libpath:
+            # append system paths at the end
+            if dir in ('/lib', '/usr/lib'):
+                dirs.append(dir)
+            # prepend non-system paths
+            else:
+                dirs.insert(0, dir)
+
         # Filter out some useless pieces
         clean_dirs = []
         for dir in dirs:
             if dir and dir not in ('', '.'):
                 clean_dirs.append(dir)
+
         # Now rebuild the path string. This way we use a minimum of separators
         # -- and we avoid adding a pointless separator when libpath is empty.
-        os.environ[var] = os.pathsep.join(dirs)
+        os.environ[var] = os.pathsep.join(clean_dirs)
         print "%s = %r" % (var, os.environ[var])
     # Now handle arbitrary environment variables. The tricky part is ensuring
     # that all the keys and values we try to pass are actually strings.