diff --git a/externals/Makefile b/externals/Makefile
index 204fa84c3212515d5306b78c7e41eb479b23ad73..95c5b7f40780a675e7096080c4cc14e0f02add10 100644
--- a/externals/Makefile
+++ b/externals/Makefile
@@ -58,15 +58,10 @@ ifeq ($(OS_NAME),darwin)
 # 10.5 Leopard
 #  FAT_FLAGS = -arch ppc -arch ppc7400 -arch ppc64 -arch i386 -arch x86_64
 # Check whether we have Homebrew or MacPorts, prefer the former.
-optlocal := $(shell (test -d /usr/local/opt && echo /usr/local/opt) || (test -d /opt/local && echo /opt/local) || echo /usr/local)
-ifeq ($(optlocal),/opt/local)
-# MacPorts installs directly into $(optlocal)
+# Homebrew links software into $HOMEBREW_PREFIX. If this isn't defined, we
+# check for MacPorts in /opt/local, and finally fall back to /usr/local.
+optlocal := $(shell test -n "$$HOMEBREW_PREFIX" && test -d $$HOMEBREW_PREFIX && echo $$HOMEBREW_PREFIX || (test -d /opt/local && echo /opt/local) || echo /usr/local)
 usrlocal = $(optlocal)
-else
-# Homebrew links software into /usr/local, which also works for locally
-# installed software if neither MP nor Homebrew is detected.
-usrlocal = /usr/local
-endif
   CFLAGS += -I$(usrlocal)/include -I$(externals_src)/pdp/include -DMACOSX -DUNIX -Dunix -DDL_OPEN
   LDFLAGS += -bundle -bundle_loader $(pd_src)/bin/pd-l2ork -undefined dynamic_lookup -L$(usrlocal)/lib
   LIBS += -lc 
@@ -399,7 +394,7 @@ boids_clean:
 #------------------------------------------------------------------------------#
 # BSAYLOR
 bsaylor:
-	make -C $(externals_src)/bsaylor PD_PATH=$(pd_src) CFLAGS="$(CFLAGS) -fno-strict-aliasing"
+	make -C $(externals_src)/bsaylor PD_PATH=$(pd_src) CFLAGS="$(CFLAGS) -fno-strict-aliasing" LDFLAGS="$(LDFLAGS)"
 
 bsaylor_install:
 	make -C $(externals_src)/bsaylor \
@@ -660,7 +655,7 @@ flib_clean:
 
 fluid:
 	make -C $(externals_src)/fluid~ PD_PATH=$(pd_src) \
-		pdbinpath=$(pd_src)/src CFLAGS="$(CFLAGS_ADD)"
+		pdbinpath=$(pd_src)/src CFLAGS="$(CFLAGS_ADD) -I$(usrlocal)/include" LDFLAGS="$(LDFLAGS)"
 
 fluid_install:
 	make -C $(externals_src)/fluid~ DESTDIR="$(DESTDIR)" \
@@ -1503,7 +1498,7 @@ pdlua_clean:
 #------------------------------------------------------------------------------#
 # PDOGG
 pdogg:
-	make -C $(externals_src)/pdogg PD_PATH=$(pd_src) CFLAGS="$(CFLAGS)"
+	make -C $(externals_src)/pdogg PD_PATH=$(pd_src) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
 
 pdogg_install:
 	make -C $(externals_src)/pdogg DESTDIR="$(DESTDIR)" objectsdir="$(objectsdir)" install
@@ -1526,7 +1521,7 @@ $(externals_src)/pdp/configure: $(externals_src)/pdp/configure.ac
 	cd $(externals_src)/pdp && autoconf
 
 $(externals_src)/pdp/Makefile.config: $(externals_src)/pdp/configure $(externals_src)/pdp/Makefile.config.in
-	cd $(externals_src)/pdp && ./configure PD_CPPFLAGS="-I$(pd_src)/src" \
+	cd $(externals_src)/pdp && ./configure PD_CPPFLAGS="-I$(pd_src)/src -I$(usrlocal)/include" \
 		$(PDP_OPTIONS)
 
 $(externals_src)/pdp/pdp.$(EXTENSION): $(externals_src)/pdp/Makefile.config 
@@ -1868,7 +1863,7 @@ toxy_clean:
 #------------------------------------------------------------------------------#
 # UNAUTHORIZED
 unauthorized:
-	make -C $(externals_src)/unauthorized CFLAGS="$(CFLAGS)" \
+	make -C $(externals_src)/unauthorized CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
 		PD_PATH=$(pd_src) PD_INCLUDE=$(pd_src)/src
 
 unauthorized_install:
diff --git a/packages/darwin_app/embed-MacOSX-dependencies.sh b/packages/darwin_app/embed-MacOSX-dependencies.sh
index 1d4e53e3be3b09ae451b20c036adfd6b7472e284..497cbbf47a3a676adff14be2666310d257929cdd 100755
--- a/packages/darwin_app/embed-MacOSX-dependencies.sh
+++ b/packages/darwin_app/embed-MacOSX-dependencies.sh
@@ -13,15 +13,13 @@ if [ $# -ne 1 ]; then
 fi
 
 # Check whether we have Homebrew or MacPorts, prefer the former.
-optlocal=$((test -d /usr/local/opt && echo /usr/local/opt) || (test -d /opt/local && echo /opt/local) || echo /usr/local)
-
-if [ "$optlocal" == "/opt/local" ]; then
-    # MacPorts installs software into /opt/local
-    usrlocal=$optlocal
+optlocal=$((test -n "$HOMEBREW_PREFIX" && test -d $HOMEBREW_PREFIX/opt && echo $HOMEBREW_PREFIX/opt) || (test -d /opt/local && echo /opt/local) || echo /usr/local)
+# Determine the actual installation prefix. On Homebrew, this is
+# $HOMEBREW_PREFIX, otherwise (MP or none) it's just $optlocal.
+if test -n "$HOMEBREW_PREFIX" && test -d $HOMEBREW_PREFIX; then
+    usrlocal=$HOMEBREW_PREFIX
 else
-    # Homebrew links software into /usr/local; if neither MP nor Homebrew is
-    # detected, fall back to plain old local software in /usr/local
-    usrlocal=/usr/local
+    usrlocal=$optlocal
 fi
 
 LIB_DIR=lib