This patch ensures that the native version of libtool is selected rather than any GNU-based optional versions that might be installed and in the PATH such as /opt/local/bin or /usr/local/bin.
