diff --git a/externals/Makefile b/externals/Makefile
index d0371ac8c162453cda4df40128ce7731fe7ebd1a..9bea526c6e093669a60e98e0d5e93387c237a223 100644
--- a/externals/Makefile
+++ b/externals/Makefile
@@ -1710,64 +1710,61 @@ windowing_clean:
 #------------------------------------------------------------------------------#
 # Zexy
 ZEXY_NAME = zexy
-ZEXY_OBJECTS := $(wildcard $(externals_src)/zexy/src/[a-vxy0]*.c) \
-$(externals_src)/zexy/src/wrap.c $(externals_src)/zexy/src/z~.c
-ZEXY_VERSION := $(shell grep VERSION $(externals_src)/zexy/src/zexy.h | \
-	grep -v _VERSION | cut -d ' ' -f 3 | cut -d '"' -f 2)
+zexy_src := $(externals_src)/$(ZEXY_NAME)
 
-# ADAPTED FROM IEM16 - previous script broke builds.
-ZEXY_DIR := $(externals_src)/zexy/src
+$(zexy_src)/configure: $(zexy_src)/configure.ac
+	cd $(zexy_src) && ./autogen.sh
 
-$(ZEXY_DIR)/aclocal.m4: $(ZEXY_DIR)/acinclude.m4
-	cd $(ZEXY_DIR) && aclocal
-
-$(ZEXY_DIR)/configure: $(ZEXY_DIR)/configure.ac $(ZEXY_DIR)/aclocal.m4
-	cd $(ZEXY_DIR) && autoconf
-
-$(ZEXY_DIR)/Make.config: $(ZEXY_DIR)/Make.config.in \
-$(ZEXY_DIR)/configure
-	cd $(ZEXY_DIR) && ./configure --disable-library \
+$(zexy_src)/Makefile: $(zexy_src)/configure $(zexy_src)/Makefile.am $(zexy_src)/src/Makefile.am
+	cd $(zexy_src) && ./configure --disable-library \
+		--with-extension=$(EXTENSION) \
+		--prefix=$(prefix) \
+		--libdir=$(objectsdir) \
 		--with-pd=$(pd_src)
 
-zexy: $(ZEXY_DIR)/Make.config
-	$(MAKE) -C $(ZEXY_DIR) alias
+zexy: $(zexy_src)/Makefile
+	$(MAKE) -C $(zexy_src)
 
 zexy_install: zexy
-	install -d $(DESTDIR)$(objectsdir)/$(ZEXY_NAME)
-	$(scripts_src)/generate-libdir-metafile.sh $(DESTDIR)$(objectsdir) $(ZEXY_NAME) \
-		--author "IOhannes m zmoelnig <zmoelnig@iem.kug.ac.at>" \
-		--license "GNU GPL" \
-		--description "swiss army knife for pd" \
-		--version "$(ZEXY_VERSION)"
-	#install -p $(ZEXY_OBJECTS:.c=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(ZEXY_NAME)
-	install -p $(externals_src)/zexy/src/*.$(EXTENSION) $(DESTDIR)$(objectsdir)/$(ZEXY_NAME)
-# the below doesn't work for some reason, probably because of some kind of
-# strange make execution order <hans@at.or.at>
-#	install -p $(shell $(externals_src)/zexy/src/*.$(EXTENSION)) \
-#		$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)
-	install -p $(shell ls -1 $(externals_src)/zexy/abs/*.pd | \
-		grep -v '-help.pd' | sed 's|\(.*\)|"\1"|g') \
-		$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)
-# an escape pattern for the abstractions with special characters
-#		grep -v '-help.pd' | sed 's/\([&<>|~]\)/\\\1/g') 
-	install -p $(shell ls -1 $(externals_src)/zexy/reference/*-help.pd | \
-		sed 's|\(.*\)|"\1"|g') $(DESTDIR)$(objectsdir)/$(ZEXY_NAME)
-	install -p $(externals_src)/zexy/zexy.pd  $(DESTDIR)$(objectsdir)
+	$(MAKE) -C $(zexy_src) DESTDIR=$(DESTDIR) prefix=$(prefix) \
+		libdir=$(objectsdir) pkglibdir=$(objectsdir)/$(ZEXY_NAME) install
+# remove all .la files (libtool archives) created by autotools
+	find $(DESTDIR)$(objectsdir)/$(ZEXY_NAME) -name "*.la" -exec rm {} \;
+	find $(DESTDIR)$(objectsdir)/$(ZEXY_NAME) -name "*.dll.a" -exec rm {} \;
+# add missing aliases
+# can't do these on Windows because FAT, NTFS don't support these chars in filenames
+# on Windows, these are faked in by loading them as libs
+ifneq ($(OS_NAME),windows)
+	test -e $(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/..$(EXTENSION) || \
+		ln -s 0x2e.$(EXTENSION) \
+			$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/..$(EXTENSION)
+	test -e '$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/&&~.$(EXTENSION)' || \
+		ln -s 0x260x260x7e.$(EXTENSION) \
+			'$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/&&~.$(EXTENSION)'
+	test -e '$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/<~.$(EXTENSION)' || \
+		ln -s 0x3c0x7e.$(EXTENSION) \
+			'$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/<~.$(EXTENSION)'
+	test -e '$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/==~.$(EXTENSION)' || \
+		ln -s 0x3d0x3d0x7e.$(EXTENSION) \
+			'$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/==~.$(EXTENSION)'
+	test -e '$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/>~.$(EXTENSION)' || \
+		ln -s 0x3e0x7e.$(EXTENSION) \
+			'$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/>~.$(EXTENSION)'
+	test -e '$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/||~.$(EXTENSION)' || \
+		ln -s 0x7c0x7c0x7e.$(EXTENSION) \
+			'$(DESTDIR)$(objectsdir)/$(ZEXY_NAME)/||~.$(EXTENSION)'
+endif
 
 zexy_clean:
-	-$(MAKE) -C $(externals_src)/zexy/src clean
-	-$(MAKE) -C $(externals_src)/zexy/src alias-clean
-	-rm -f -- $(ZEXY_OBJECTS:.c=.$(EXTENSION))
-	-rm -f -- $(ZEXY_OBJECTS:.c=.d)
-	-rm -rf -- $(externals_src)/zexy/src/autom4ate
-	-rm -rf -- $(externals_src)/zexy/src/conf[0-9][0-9][0-9]*
-	-rm -f -- $(externals_src)/zexy/src/configure
-	-rm -f -- $(externals_src)/zexy/src/Make.config
-	-rm -f -- $(externals_src)/zexy/src/zexyconf.h
+	-$(MAKE) -C $(externals_src)/zexy clean
+	-rm -rf -- $(externals_src)/zexy/autom4te.cache
+	-rm -f -- $(externals_src)/zexy/aclocal.m4
+	-rm -f -- $(externals_src)/zexy/libtool
+	-rm -f -- $(externals_src)/zexy/ltmain.sh
+	-rm -f -- $(externals_src)/zexy/m4/lt*.m4
+	-rm -f -- $(externals_src)/zexy/m4/libtool.m4
+	-rm -f -- $(externals_src)/zexy/configure
 	-rm -f -- $(externals_src)/zexy/src/*.o
-	-rm -f -- $(externals_src)/zexy/src/*.bak
-	-rm -f -- $(externals_src)/*/*.*~
-	-rm -f -- $(externals_src)/*.*~