--- Modules/Platform/Darwin.cmake.orig
+++ Modules/Platform/Darwin.cmake
@@ -265,7 +265,9 @@
     endforeach()
   endif()
 endif()
-list(APPEND CMAKE_SYSTEM_PREFIX_PATH
-  /sw        # Fink
-  /opt/local # MacPorts
-  )
+
+# prepend the MacPorts prefix to CMAKE_SYSTEM_PREFIX_PATH
+# might already exist after this if the user has specified it
+list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0
+  __PREFIX__
+)
--- Modules/Platform/UnixPaths.cmake.orig
+++ Modules/Platform/UnixPaths.cmake
@@ -30,22 +30,39 @@
 # synchronized
 list(APPEND CMAKE_SYSTEM_PREFIX_PATH
   # Standard
-  /usr/local /usr /
+  /usr /
+)
 
-  # CMake install location
-  "${_CMAKE_INSTALL_DIR}"
-  )
-if (NOT CMAKE_FIND_NO_INSTALL_PREFIX)
+# CMake install location
+# append the _CMAKE_INSTALL_DIR if not already in the list
+list(FIND CMAKE_SYSTEM_PREFIX_PATH "${_CMAKE_INSTALL_DIR}" HAS_ENTRY)
+if(${HAS_ENTRY} EQUAL -1)
   list(APPEND CMAKE_SYSTEM_PREFIX_PATH
-    # Project install destination.
-    "${CMAKE_INSTALL_PREFIX}"
+    "${_CMAKE_INSTALL_DIR}"
   )
-  if(CMAKE_STAGING_PREFIX)
+endif()
+unset(HAS_ENTRY)
+
+if(NOT CMAKE_FIND_NO_INSTALL_PREFIX)
+  # append the CMAKE_INSTALL_PREFIX if not already in the list
+  list(FIND CMAKE_SYSTEM_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}" HAS_ENTRY)
+  if(${HAS_ENTRY} EQUAL -1)
     list(APPEND CMAKE_SYSTEM_PREFIX_PATH
-      # User-supplied staging prefix.
-      "${CMAKE_STAGING_PREFIX}"
+      # Project install destination.
+      "${CMAKE_INSTALL_PREFIX}"
     )
   endif()
+  unset(HAS_ENTRY)
+  if(CMAKE_STAGING_PREFIX)
+    # append the CMAKE_STAGING_PREFIX if not already in the list
+    list(FIND CMAKE_SYSTEM_PREFIX_PATH "${CMAKE_STAGING_PREFIX}" HAS_ENTRY)
+    if(${HAS_ENTRY} EQUAL -1)
+      list(APPEND CMAKE_SYSTEM_PREFIX_PATH
+        # User-supplied staging prefix.
+        "${CMAKE_STAGING_PREFIX}"
+      )
+    endif()
+  endif()
 endif()
 _cmake_record_install_prefix()