diff --git a/configure.ac b/configure.ac
index 935151f..d077301 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,11 +51,9 @@ case $host in
 	MINGW=yes
 # ASIO doesn't build yet with the autotools setup. We need to figure out how
 #        to make the final linking phase use g++
-#		asio=yes
+		asio=yes
 	portaudio=yes
 	CFLAGS="$CFLAGS -O6 -funroll-loops -fomit-frame-pointer"
-# ASIO is a C++ library, so if its included, then use g++ to build
-	CC=g++
 	EXTERNAL_CFLAGS="-mms-bitfields"
 	EXTERNAL_LDFLAGS="-s -shared -Wl,--enable-auto-import -lpd"
 	EXTERNAL_EXTENSION=dll
diff --git a/extra/Makefile.am b/extra/Makefile.am
index 766073d..2a401ad 100644
--- a/extra/Makefile.am
+++ b/extra/Makefile.am
@@ -1,6 +1,10 @@
-SUBDIRS=bonk~ choice expr~ fiddle~ loop~ lrshift~ pd~ pique sigmund~ stdout
+SUBDIRS=bonk~ choice expr~ fiddle~ loop~ lrshift~ pique sigmund~ stdout
 
-DIST_SUBDIRS=$(SUBDIRS)
+if !WINDOWS
+SUBDIRS += pd~
+endif
+
+DIST_SUBDIRS=$(SUBDIRS) pd~
 
 PATCHES    =complex-mod~.pd      hilbert~.pd      rev1-final.pd rev1~.pd rev1-stage.pd rev2~.pd      rev3~.pd
 HELPPATCHES=complex-mod~-help.pd hilbert~-help.pd rev1~-help.pd                        rev2~-help.pd rev3~-help.pd 
diff --git a/src/Makefile.am b/src/Makefile.am
index b85f726..c77909c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,6 +15,7 @@ bin_PROGRAMS = pd pdsend pdreceive
 pdsend_SOURCES = u_pdsend.c
 pdreceive_SOURCES = u_pdreceive.c
 pd_watchdog_SOURCES = s_watchdog.c
+lib_LTLIBRARIES =
 pd_LDADD = 
 pd_SOURCES = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c \
 	g_io.c g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
@@ -85,7 +86,12 @@ endif
 
 # ASIO needs to go after PORTAUDIO in order for it to link properly
 if ASIO
+# automake hack to force linking with g++
+SUBDIRS = ../asio
+# Dummy C++ source to cause C++ linking.
+nodist_EXTRA_libpd_la_SOURCES = dummy.cxx
 pd_LDADD += ../asio/libasio.la
+#pd_LINK = $(CXXLINK)
 endif
 
 if PORTMIDI
@@ -127,9 +133,13 @@ bin_PROGRAMS += pd-watchdog
 endif
 
 if WINDOWS
-LIBS += -lwsock32 -lwinmm -lole32
+lib_LTLIBRARIES += libpd.la 
+libpd_la_SOURCES     = $(pd_sources)
+libpd_la_LDFLAGS     = -no-undefined
+LIBS += -lwsock32 -lwinmm -lole32 -lpthreadGC2 -ldl
 pd_CFLAGS +=  -DUSEAPI_MMIO -DPD_INTERNAL
 pd_SOURCES += s_audio_mmio.c s_midi_mmio.c
+pd_LDADD += libpd.la
 bin_SCRIPTS = 
 endif
 
@@ -138,7 +148,6 @@ if MINGW
 pd_CFLAGS += -DWISHAPP='"wish85.exe"' -DMSW #kludge, MSW should be _WIN32
 pdsend_CFLAGS += -DMSW #kludge, should use _WIN32
 pdreceive_CFLAGS += -DMSW #kludge, should use _WIN32
-bin_PROGRAMS += pd-watchdog
 endif
 
 etags: TAGS
