diff -Naur graphviz-2.44.1.a/cmd/gvedit/Makefile.am graphviz-2.44.1.b/cmd/gvedit/Makefile.am
--- graphviz-2.44.1.a/cmd/gvedit/Makefile.am	2020-06-29 10:47:18.000000000 +0200
+++ graphviz-2.44.1.b/cmd/gvedit/Makefile.am	2021-03-09 10:47:52.227317000 +0100
@@ -51,7 +51,7 @@
 .PHONY: mocables
 mocables: qMakefile
 	rm -f $(MOCABLES) # don't use distributed mocables poss from diff version of Qt
-	$(MAKE) -f qMakefile prefix=${prefix} exec_prefix=${exec_prefix} mocables compiler_rcc_make_all
+	$(MAKE) -f qMakefile prefix=${prefix} exec_prefix=${exec_prefix} mocables
 
 qMakefile: gvedit.pro
 	$(QMAKE) -o qMakefile gvedit.pro
diff -Naur graphviz-2.44.1.a/cmd/gvedit/csettings.cpp graphviz-2.44.1.b/cmd/gvedit/csettings.cpp
--- graphviz-2.44.1.a/cmd/gvedit/csettings.cpp	2020-06-29 10:47:18.000000000 +0200
+++ graphviz-2.44.1.b/cmd/gvedit/csettings.cpp	2021-03-09 11:51:39.347719500 +0100
@@ -59,7 +59,7 @@
     }
     *s = '\0';
     path.append(line);
-    path.append("\\share\\graphviz\\gvedit\\attributes.txt");
+    path.append("\\share\\graphviz\\gvedit\\attrs.txt");
     return path;
 }
 #endif
@@ -153,7 +153,7 @@
     loadAttrs(path + "/attrs.txt", WIDGET(QComboBox, cbNameG),
 	      WIDGET(QComboBox, cbNameN), WIDGET(QComboBox, cbNameE));
 #else
-    if (loadAttrs("../share/graphviz/gvedit/attributes.txt",
+    if (loadAttrs("../share/graphviz/gvedit/attrs.txt",
 	      WIDGET(QComboBox, cbNameG), WIDGET(QComboBox, cbNameN),
 	      WIDGET(QComboBox, cbNameE))) {
 	path = findAttrFile();
diff -Naur graphviz-2.44.1.a/cmd/gvedit/gvedit.pro.in graphviz-2.44.1.b/cmd/gvedit/gvedit.pro.in
--- graphviz-2.44.1.a/cmd/gvedit/gvedit.pro.in	2020-06-29 10:47:18.000000000 +0200
+++ graphviz-2.44.1.b/cmd/gvedit/gvedit.pro.in	2021-03-09 10:58:22.077790800 +0100
@@ -14,7 +14,8 @@
 	../..
 
 CONFIG += qt
+QT += widgets
 HEADERS = @top_srcdir@/cmd/gvedit/mainwindow.h @top_srcdir@/cmd/gvedit/mdichild.h @top_srcdir@/cmd/gvedit/csettings.h @top_srcdir@/cmd/gvedit/imageviewer.h @top_srcdir@/cmd/gvedit/ui_settings.h
 SOURCES = @top_srcdir@/cmd/gvedit/main.cpp @top_srcdir@/cmd/gvedit/mainwindow.cpp @top_srcdir@/cmd/gvedit/mdichild.cpp @top_srcdir@/cmd/gvedit/csettings.cpp @top_srcdir@/cmd/gvedit/imageviewer.cpp
-RESOURCES     = @top_srcdir@/cmd/gvedit/mdi.qrc
+RESOURCES = @top_srcdir@/cmd/gvedit/mdi.qrc
 
diff -Naur graphviz-2.44.1.a/configure.ac graphviz-2.44.1.b/configure.ac
--- graphviz-2.44.1.a/configure.ac	2020-06-29 10:47:18.000000000 +0200
+++ graphviz-2.44.1.b/configure.ac	2021-03-10 01:35:25.837037400 +0100
@@ -317,6 +317,12 @@
 
 if [test "${GCC}" == "yes"]
 then
+  # Enable permissive for modern gcc (error otherwise)
+  CFLAGS="${CFLAGS} -fpermissive"
+
+  # Enable common for modern gcc (error otherwise)
+  CFLAGS="${CFLAGS} -fcommon"
+
   # Enable common warnings flags
   CFLAGS="${CFLAGS} -Wall"
 
@@ -326,7 +332,16 @@
   # Enable specific warning flags not included by -Wall or -Wextra
   CFLAGS="${CFLAGS} -Wmissing-include-dirs -Wswitch-default -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wconversion -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs"
 
- # if C99, then enable additional warnings
+  # Disable these warnings
+  CFLAGS="${CFLAGS} -Wno-sign-conversion -Wno-sign-compare -Wno-conversion"
+
+  # Need permissive flag for gvedit
+  CXXFLAGS="${CXXFLAGS} -fpermissive"
+
+  # Need common flag for gvedit
+  CXXFLAGS="${CXXFLAGS} -fcommon"
+
+# if C99, then enable additional warnings
 # if [test "${ac_cv_prog_cc_c99}" != "no"]
 # then
     # FIXME - not available on centos[56]: gcc-4.1.2, gcc-4.4.7
@@ -1272,8 +1287,8 @@
       else
         PYTHON_PREFIX=`$PYTHON -c "import sys; print(sys.prefix)"`
         PYTHON_INCLUDES=-I$PYTHON_PREFIX/include/python$PYTHON_VERSION_SHORT
-#        PYTHON_LIBS="-lpython$PYTHON_VERSION_SHORT"
-	PYTHON_LIBS="-undefined dynamic_lookup"
+        PYTHON_LIBS="-lpython$PYTHON_VERSION_SHORT"
+#       PYTHON_LIBS="-undefined dynamic_lookup"
         PYTHON_INSTALL_DIR="`$PYTHON $srcdir/config/config_python.py archsitelib`"
         save_CPPFLAGS=$CPPFLAGS
         CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
@@ -2514,10 +2529,10 @@
 if test "x$with_gdiplus" != "xyes"; then
   use_gdiplus="No (disabled by default - Windows only)"
 else
-  if test -f "$PLATFORMSDKINCLUDE\GdiPlus.h" -a -f "$PLATFORMSDKLIB\GdiPlus.lib"; then
+  if test -f "$PLATFORMSDKINCLUDE\gdiplus.h" -a -f "$PLATFORMSDKLIB\libgdiplus.a"; then
     use_gdiplus="Yes"
     AC_DEFINE_UNQUOTED(HAVE_GDIPLUS,1,[Define if you have the GDI+ framework for Windows])
-    GDIPLUS_HEADS=`cd "$PLATFORMSDKINCLUDE" && echo GdiPlus*.h`
+    GDIPLUS_HEADS=`cd "$PLATFORMSDKINCLUDE" && echo gdiplus*.h`
     GDIPLUS_CFLAGS=''
     GDIPLUS_LIBS=''
     AC_SUBST([GDIPLUS_HEADS])
diff -Naur graphviz-2.44.1.a/plugin/gdiplus/Makefile.am graphviz-2.44.1.b/plugin/gdiplus/Makefile.am
--- graphviz-2.44.1.a/plugin/gdiplus/Makefile.am	2020-06-29 10:47:18.000000000 +0200
+++ graphviz-2.44.1.b/plugin/gdiplus/Makefile.am	2021-03-10 00:23:23.929252900 +0100
@@ -10,8 +10,6 @@
 	-I$(top_srcdir)/lib/cdt
 
 if WITH_GDIPLUS
-PATCHES = GdiPlusEnums.h.patch GdiPlusHeaders.h.patch GdiPlusimageAttributes.h.patch GdiPlusImaging.h.patch
-PATCHED_HEADS = $(PATCHES:.h.patch=.h)
 
 noinst_LTLIBRARIES = libgvplugin_gdiplus_C.la
 if WITH_WIN32
@@ -23,7 +21,7 @@
 
 noinst_HEADERS = FileStream.h gvplugin_gdiplus.h
 
-nodist_libgvplugin_gdiplus_C_la_SOURCES = GdiPlus*.h
+nodist_libgvplugin_gdiplus_C_la_SOURCES = gdiplus*.h
 libgvplugin_gdiplus_C_la_SOURCES = \
 	FileStream.cpp \
 	gvdevice_gdiplus.cpp \
@@ -32,9 +30,9 @@
 	gvrender_gdiplus.cpp \
 	gvtextlayout_gdiplus.cpp
 
-# libtool doesn't want to run with actual Windows import libs, so we force GdiPlus.lib through to the linker
-libgvplugin_gdiplus_la_LDFLAGS = -version-info @GVPLUGIN_VERSION_INFO@ -Wl,"$(PLATFORMSDKLIB)\GdiPlus.lib"
-nodist_libgvplugin_gdiplus_la_SOURCES = GdiPlus*.h
+# No need to force it but we leave a window here in case you want to experiment with a different sdk
+libgvplugin_gdiplus_la_LDFLAGS = -version-info @GVPLUGIN_VERSION_INFO@ -Wl,"$(PLATFORMSDKLIB)\libgdiplus.a"
+nodist_libgvplugin_gdiplus_la_SOURCES = gdiplus*.h
 libgvplugin_gdiplus_la_SOURCES = $(libgvplugin_gdiplus_C_la_SOURCES)
 libgvplugin_gdiplus_la_LIBADD = -lgdi32 -lole32 -lstdc++ -luuid $(top_builddir)/lib/gvc/libgvc.la
 
@@ -55,16 +53,10 @@
 gvrender_gdiplus.lo : $(GDIPLUS_HEADS)
 
 if WITH_GDIPLUS
-# patched GDI+ headers are dependent on the patches
-$(PATCHED_HEADS) : %.h : %.h.patch
 
-# all the local GDI+ headers are dependent on the originals in PlatformSDK
-# if the GDI+ header needs to be patched, patch it, else just copy it over
+# No longer nessesary with the patch crap here
 $(GDIPLUS_HEADS) : %.h : $(PLATFORMSDKINCLUDE_ESCAPED)/%.h
-	if expr "$(PATCHED_HEADS)" : '.*$*.h' >/dev/null 2>&1; \
-	then patch -o $*.h "$(PLATFORMSDKINCLUDE)\$*.h" $*.h.patch; \
-	else cp "$(PLATFORMSDKINCLUDE)\$*.h" $*.h; \
-	fi
+	cp "$(PLATFORMSDKINCLUDE)\$*.h" $*.h;
 endif
 
-EXTRA_DIST = $(PATCHES) gvplugin_gdiplus.vcxproj*
+EXTRA_DIST = gvplugin_gdiplus.vcxproj*
diff -Naur graphviz-2.44.1.a/tclpkg/Makefile.am graphviz-2.44.1.b/tclpkg/Makefile.am
--- graphviz-2.44.1.a/tclpkg/Makefile.am	2020-06-29 10:47:19.000000000 +0200
+++ graphviz-2.44.1.b/tclpkg/Makefile.am	2021-03-10 02:09:54.550073700 +0100
@@ -16,12 +16,18 @@
 pkgRdir = $(pkglibdir)/R
 pkgrubydir = $(pkglibdir)/ruby
 pkgtcldir = $(pkglibdir)/tcl
-
 pkgindexdir = $(pkgtcldir)
+
 if WITH_TCL
 pkgindex_DATA = pkgIndex.tcl
 endif
 
+if WITH_WIN32
+SO_DLL ?= dll
+else
+SO_DLL ?= so
+endif
+
 SUBDIRS = tclstubs tclhandle gdtclft tcldot tclpathplan gv
 
 pkgIndex.tcl: @TCL_PKGINDEX@ @TCL_PKGINDEX_GD@ @TCL_PKGINDEX_SWIG@
@@ -38,7 +44,7 @@
 	-mkdir -p $(DESTDIR)@LUA_INSTALL_DIR@;
 	if test -w $(DESTDIR)@LUA_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@LUA_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgluadir)/libgv_lua.so gv.so;) \
+			cp -f $(DESTDIR)$(pkgluadir)/libgv_lua.$(SO_DLL) gv.$(SO_DLL);) \
 	else \
 		echo "Warning: @LUA_INSTALL_DIR@ is not writable."; \
 		echo "Skipping system installation of lua binding."; \
@@ -48,7 +54,7 @@
 	-mkdir -p $(DESTDIR)@PERL_INSTALL_DIR@;
 	if test -w $(DESTDIR)@PERL_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@PERL_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgperldir)/libgv_perl.so gv.so; \
+			cp -f $(DESTDIR)$(pkgperldir)/libgv_perl.$(SO_DLL) gv.$(SO_DLL); \
 			cp -f $(DESTDIR)$(pkgperldir)/gv.pm gv.pm;) \
 	else \
 		echo "Warning: @PERL_INSTALL_DIR@ is not writable."; \
@@ -59,7 +65,7 @@
 	-mkdir -p $(DESTDIR)@PHP_INSTALL_DIR@;
 	if test -w $(DESTDIR)@PHP_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@PHP_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgphpdir)/libgv_php.so gv.so;) \
+			cp -f $(DESTDIR)$(pkgphpdir)/libgv_php.$(SO_DLL) gv.$(SO_DLL);) \
 	else \
 		echo "Warning: @PHP_INSTALL_DIR@ is not writable."; \
 		echo "Skipping system installation of php binding."; \
@@ -77,7 +83,7 @@
 	-mkdir -p $(DESTDIR)@PYTHON_INSTALL_DIR@;
 	if test -w $(DESTDIR)@PYTHON_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@PYTHON_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgpythondir)/libgv_python.so _gv.so; \
+			cp -f $(DESTDIR)$(pkgpythondir)/libgv_python.$(SO_DLL) _gv.$(SO_DLL); \
 			cp -f $(DESTDIR)$(pkgpythondir)/gv.py gv.py;) \
 	else \
 		echo "Warning: @PYTHON_INSTALL_DIR@ is not writable."; \
@@ -88,7 +94,7 @@
 	-mkdir -p $(DESTDIR)@PYTHON2_INSTALL_DIR@;
 	if test -w $(DESTDIR)@PYTHON2_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@PYTHON2_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgpython2dir)/libgv_python2.so _gv.so; \
+			cp -f $(DESTDIR)$(pkgpython2dir)/libgv_python2.$(SO_DLL) _gv.$(SO_DLL); \
 			cp -f $(DESTDIR)$(pkgpython2dir)/gv.py gv.py;) \
 	else \
 		echo "Warning: @PYTHON3_INSTALL_DIR@ is not writable."; \
@@ -99,7 +105,7 @@
 	-mkdir -p $(DESTDIR)@PYTHON3_INSTALL_DIR@;
 	if test -w $(DESTDIR)@PYTHON3_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@PYTHON3_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgpython3dir)/libgv_python3.so _gv.so; \
+			cp -f $(DESTDIR)$(pkgpython3dir)/libgv_python3.$(SO_DLL) _gv.$(SO_DLL); \
 			cp -f $(DESTDIR)$(pkgpython3dir)/gv.py gv.py;) \
 	else \
 		echo "Warning: @PYTHON3_INSTALL_DIR@ is not writable."; \
@@ -110,7 +116,7 @@
 	-mkdir -p $(DESTDIR)@RUBY_INSTALL_DIR@;
 	if test -w $(DESTDIR)@RUBY_INSTALL_DIR@; then \
 		(cd $(DESTDIR)@RUBY_INSTALL_DIR@; \
-			cp -f $(DESTDIR)$(pkgrubydir)/libgv_ruby.so gv.so;) \
+			cp -f $(DESTDIR)$(pkgrubydir)/libgv_ruby.$(SO_DLL) gv.$(SO_DLL);) \
 	else \
 		echo "Warning: @RUBY_INSTALL_DIR@ is not writable."; \
 		echo "Skipping system installation of ruby binding."; \
@@ -136,31 +142,31 @@
 	-rm -rf $(DESTDIR)$(pkgiodir);
 	-rm -rf $(DESTDIR)$(pkgjavadir);
 	-rm -rf $(DESTDIR)$(pkgluadir);
-	-rm -rf $(DESTDIR)@LUA_INSTALL_DIR@/gv.so;
+	-rm -rf $(DESTDIR)@LUA_INSTALL_DIR@/gv.$(SO_DLL);
 	-rm -rf $(DESTDIR)$(pkgocamldir);
 	-rm -rf $(DESTDIR)$(pkgperldir);
-	-rm -rf $(DESTDIR)@PERL_INSTALL_DIR@/gv.so $(DESTDIR)@PERL_INSTALL_DIR@/gv.pm;
+	-rm -rf $(DESTDIR)@PERL_INSTALL_DIR@/gv.$(SO_DLL) $(DESTDIR)@PERL_INSTALL_DIR@/gv.pm;
 	-rm -rf $(DESTDIR)$(pkgphpdir);
-	-rm -rf $(DESTDIR)@PHP_INSTALL_DIR@/gv.so $(DESTDIR)@PHP_INSTALL_DATADIR@/gv.php;
+	-rm -rf $(DESTDIR)@PHP_INSTALL_DIR@/gv.$(SO_DLL) $(DESTDIR)@PHP_INSTALL_DATADIR@/gv.php;
 	-rm -rf $(DESTDIR)$(pkgpythondir);
-	-rm -rf $(DESTDIR)@PYTHON_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython2dir);
-	-rm -rf $(DESTDIR)@PYTHON2_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON2_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON2_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON2_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython3dir);
-	-rm -rf $(DESTDIR)@PYTHON3_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON3_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON3_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON3_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython23dir);
-	-rm -rf $(DESTDIR)@PYTHON23_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON23_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython24dir);
-	-rm -rf $(DESTDIR)@PYTHON24_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON24_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython25dir);
-	-rm -rf $(DESTDIR)@PYTHON25_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON25_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython26dir);
-	-rm -rf $(DESTDIR)@PYTHON26_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON26_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgpython27dir);
-	-rm -rf $(DESTDIR)@PYTHON27_INSTALL_DIR@/_gv.so $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
+	-rm -rf $(DESTDIR)@PYTHON27_INSTALL_DIR@/_gv.$(SO_DLL) $(DESTDIR)@PYTHON_INSTALL_DIR@/gv.py;
 	-rm -rf $(DESTDIR)$(pkgRdir);
 	-rm -rf $(DESTDIR)$(pkgrubydir);
-	-rm -rf $(DESTDIR)@RUBY_INSTALL_DIR@/gv.so;
+	-rm -rf $(DESTDIR)@RUBY_INSTALL_DIR@/gv.$(SO_DLL);
 	-rm -rf $(DESTDIR)$(pkgtcldir);
 	-rm -rf $(DESTDIR)@TCL_INSTALL_DIR@/@PACKAGE_NAME@-@PACKAGE_VERSION@;
 
diff -Naur graphviz-2.44.1.a/tclpkg/gv/Makefile.am graphviz-2.44.1.b/tclpkg/gv/Makefile.am
--- graphviz-2.44.1.a/tclpkg/gv/Makefile.am	2020-06-29 10:47:19.000000000 +0200
+++ graphviz-2.44.1.b/tclpkg/gv/Makefile.am	2021-03-10 02:09:54.550073700 +0100
@@ -21,12 +21,18 @@
 	$(top_builddir)/lib/cdt/libcdt.la
 BASECPPFLAGS = $(AM_CPPFLAGS) -DDEMAND_LOADING=1
 
+if WITH_WIN32
+SO_DLL ?= dll
+else
+SO_DLL ?= so
+endif
+
 pkgsharpdir = $(pkglibdir)/sharp
 SHARP_data = gv.cs gvPINVOKE.cs SWIGTYPE_p_Agraph_t.cs SWIGTYPE_p_Agnode_t.cs SWIGTYPE_p_Agedge_t.cs SWIGTYPE_p_Agsym_t.cs SWIGTYPE_p_FILE.cs
 nodist_libgv_sharp_la_SOURCES = gv_sharp.cpp $(SHARP_data)
 libgv_sharp_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_sharp_la_LIBADD = $(BASELIBS) $(SHARP_LIBS) 
-libgv_sharp_la_LDFLAGS = -module -avoid-version
+libgv_sharp_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_sharp_la_CPPFLAGS = $(BASECPPFLAGS) $(SHARP_INCLUDES)
 $(SHARP_data): gv_sharp.cpp
 gv_sharp.cpp: gv.i
@@ -37,7 +43,7 @@
 nodist_libgv_d_la_SOURCES = gv_d.cpp $(D_data)
 libgv_d_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_d_la_LIBADD = $(BASELIBS) $(D_LIBS)
-libgv_d_la_LDFLAGS = -module -avoid-version
+libgv_d_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_d_la_CPPFLAGS = $(BASECPPFLAGS) $(D_INCLUDES)
 # $(D_data): gv_d.cpp
 gv_d.cpp: gv.i
@@ -51,7 +57,7 @@
 nodist_libgv_go_la_SOURCES = gv_go.cpp runtime.h gv.go
 libgv_go_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_go_la_LIBADD = $(BASELIBS) $(GO_LIBS)
-libgv_go_la_LDFLAGS = -module -avoid-version
+libgv_go_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_go_la_CPPFLAGS = $(BASECPPFLAGS) $(GO_INCLUDES)
 gv_gc.c gv.go: gv_go.cpp
 gv_go.cpp: gv.i
@@ -89,7 +95,7 @@
 nodist_libgv_guile_la_SOURCES = gv_guile.cpp $(GUILE_data)
 libgv_guile_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_guile_la_LIBADD = $(BASELIBS) $(GUILE_LIBS)
-libgv_guile_la_LDFLAGS = -module -avoid-version
+libgv_guile_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_guile_la_CPPFLAGS = $(BASECPPFLAGS) $(GUILE_INCLUDES)
 # $(GUILE_data): gv_guile.cpp
 gv_guile.cpp: gv.i
@@ -102,7 +108,7 @@
 nodist_libgv_io_la_SOURCES = gv_io.cpp $(IO_data)
 libgv_io_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_io_la_LIBADD = $(BASELIBS) $(IO_LIBS)
-libgv_io_la_LDFLAGS = -module -avoid-version
+libgv_io_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_io_la_CPPFLAGS = $(BASECPPFLAGS) $(IO_INCLUDES)
 # $(IO_data): gv_io.cpp
 gv_io.cpp: gv.i
@@ -114,7 +120,7 @@
 nodist_libgv_java_la_SOURCES = gv_java.cpp
 libgv_java_la_SOURCES = $(BASESOURCES)  gv_java_init.c
 libgv_java_la_LIBADD = $(BASELIBS) $(JAVA_LIBS)
-libgv_java_la_LDFLAGS = -module -avoid-version $(JNI_EXTRA_LDFLAGS)
+libgv_java_la_LDFLAGS = -module -avoid-version -no-undefined $(JNI_EXTRA_LDFLAGS)
 libgv_java_la_CPPFLAGS = $(BASECPPFLAGS) $(SWIGJAVA_CPPFLAGS) $(JAVA_INCLUDES)
 $(JAVA_data): gv_java.cpp
 gv_java.cpp: gv.i
@@ -125,7 +131,7 @@
 nodist_libgv_javascript_la_SOURCES = gv_javascript.cpp $(JAVASCRIPT_data)
 libgv_javascript_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_javascript_la_LIBADD = $(BASELIBS) $(JAVASCRIPT_LIBS)
-libgv_javascript_la_LDFLAGS = -module -avoid-version
+libgv_javascript_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_javascript_la_CPPFLAGS = $(BASECPPFLAGS) $(JAVASCRIPT_INCLUDES)
 # $(D_data): gv_javascript.cpp
 gv_javascript.cpp: gv.i
@@ -139,7 +145,7 @@
 nodist_libgv_lua_la_SOURCES = gv_lua.cpp $(LUA_data)
 libgv_lua_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_lua_la_LIBADD = $(BASELIBS) $(LUA_LIBS)
-libgv_lua_la_LDFLAGS = -module -avoid-version
+libgv_lua_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_lua_la_CPPFLAGS = $(BASECPPFLAGS) $(LUA_INCLUDES)
 # $(LUA_data): gv_lua.cpp
 gv_lua.cpp: gv.i
@@ -157,7 +163,7 @@
 nodist_libgv_ocaml_la_SOURCES = gv_ocaml.cpp $(OCAML_data)
 libgv_ocaml_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_ocaml_la_LIBADD = $(BASELIBS) $(OCAML_LIBS)
-libgv_ocaml_la_LDFLAGS = -module -avoid-version
+libgv_ocaml_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_ocaml_la_CPPFLAGS = \
 	$(BASECPPFLAGS) \
 	$(OCAML_INCLUDES) \
@@ -182,7 +188,7 @@
 gv.cmo: gv.ml gv.cmi
 	ocamlc -c gv.ml
 gv.cma: swig.cmo gv.cmo
-	ocamlc -a -dllib dllgv.so -custom -o gv.cma swig.cmo gv.cmo
+	ocamlc -a -dllib dllgv.$(SO_DLL) -custom -o gv.cma swig.cmo gv.cmo
 gv.cmx: gv.ml gv.cma
 	ocamlopt -c gv.ml
 gv.cmxa: gv.cmx
@@ -200,7 +206,7 @@
 nodist_libgv_perl_la_SOURCES = gv_perl.cpp $(PERL_data)
 libgv_perl_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_perl_la_LIBADD = $(BASELIBS) $(PERL_LIBS)
-libgv_perl_la_LDFLAGS = -module -avoid-version $(PERL_LD)
+libgv_perl_la_LDFLAGS = -module -avoid-version -no-undefined $(PERL_LD)
 libgv_perl_la_CPPFLAGS = $(BASECPPFLAGS) $(PERL_CC)
 $(PERL_data): gv_perl.cpp
 gv_perl.cpp: gv.i
@@ -223,7 +229,7 @@
 nodist_libgv_python_la_SOURCES = gv_python.cpp $(PYTHON_data)
 libgv_python_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_python_la_LIBADD = $(BASELIBS) $(PYTHON_LIBS)
-libgv_python_la_LDFLAGS = -module -avoid-version
+libgv_python_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_python_la_CPPFLAGS = $(BASECPPFLAGS) $(PYTHON_INCLUDES)
 $(PYTHON_data): gv_python.cpp
 gv_python.cpp: gv.i
@@ -234,7 +240,7 @@
 nodist_libgv_python2_la_SOURCES = gv_python2.cpp $(PYTHON2_data)
 libgv_python2_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_python2_la_LIBADD = $(BASELIBS) $(PYTHON2_LIBS)
-libgv_python2_la_LDFLAGS = -module -avoid-version
+libgv_python2_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_python2_la_CPPFLAGS = $(BASECPPFLAGS) $(PYTHON2_INCLUDES)
 $(PYTHON2_data): gv_python2.cpp
 gv_python2.cpp: gv.i
@@ -245,7 +251,7 @@
 nodist_libgv_python3_la_SOURCES = gv_python3.cpp $(PYTHON3_data)
 libgv_python3_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_python3_la_LIBADD = $(BASELIBS) $(PYTHON3_LIBS)
-libgv_python3_la_LDFLAGS = -module -avoid-version
+libgv_python3_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_python3_la_CPPFLAGS = $(BASECPPFLAGS) $(PYTHON3_INCLUDES)
 $(PYTHON3_data): gv_python3.cpp
 gv_python3.cpp: gv.i
@@ -256,7 +262,7 @@
 nodist_libgv_R_la_SOURCES = gv_R.cpp $(R_data)
 libgv_R_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_R_la_LIBADD = $(BASELIBS) $(R_LIBS)
-libgv_R_la_LDFLAGS = -module -avoid-version
+libgv_R_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_R_la_CPPFLAGS = $(BASECPPFLAGS) $(R_CFLAGS)
 # $(R_data): gv_R.cpp
 gv_R.cpp: gv.i
@@ -267,7 +273,7 @@
 nodist_libgv_ruby_la_SOURCES = gv_ruby.cpp $(RUBY_data)
 libgv_ruby_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
 libgv_ruby_la_LIBADD = $(BASELIBS) $(RUBY_LIBS)
-libgv_ruby_la_LDFLAGS = -module -avoid-version
+libgv_ruby_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_ruby_la_CPPFLAGS = $(BASECPPFLAGS) $(RUBY_CFLAGS)
 # $(RUBY_data): gv_ruby.cpp
 gv_ruby.cpp: gv.i
@@ -278,7 +284,7 @@
 nodist_libgv_tcl_la_SOURCES = gv_tcl.cpp $(TCL_data)
 libgv_tcl_la_SOURCES = $(BASESOURCES) gv_tcl_init.c
 libgv_tcl_la_LIBADD = $(top_builddir)/tclpkg/tclstubs/libtclstubs_C.la $(BASELIBS) $(TCL_LIBS)
-libgv_tcl_la_LDFLAGS = -module -avoid-version
+libgv_tcl_la_LDFLAGS = -module -avoid-version -no-undefined
 libgv_tcl_la_CPPFLAGS = $(BASECPPFLAGS) $(TCL_INCLUDES)
 # $(TCL_data): gv_tcl.cpp
 gv_tcl.cpp: gv.i
@@ -504,28 +510,28 @@
 	(cd $(DESTDIR)$(pkgjavadir); $(LN_S) -f org/graphviz/libgv_java.$(JSHEXT) ../../libgv.$(JSHEXT); javac -classpath $(DESTDIR)$(libjavadir) gv.java;)
 endif
 if WITH_LUA
-	(cd $(DESTDIR)$(pkgluadir);    rm -f gv.so;  $(LN_S) libgv_lua.so gv.so;)
+	(cd $(DESTDIR)$(pkgluadir);    rm -f gv.$(SO_DLL);  $(LN_S) libgv_lua.$(SO_DLL) gv.$(SO_DLL);)
 endif
 if WITH_PERL
-	(cd $(DESTDIR)$(pkgperldir);   rm -f gv.so;  $(LN_S) libgv_perl.so gv.so;)
+	(cd $(DESTDIR)$(pkgperldir);   rm -f gv.$(SO_DLL);  $(LN_S) libgv_perl.$(SO_DLL) gv.$(SO_DLL);)
 endif
 if WITH_PHP
-	(cd $(DESTDIR)$(pkgphpdir);   rm -f gv.so;  $(LN_S) libgv_php.so gv.so;)
+	(cd $(DESTDIR)$(pkgphpdir);   rm -f gv.$(SO_DLL);  $(LN_S) libgv_php.$(SO_DLL) gv.$(SO_DLL);)
 endif
 if WITH_PYTHON
-	(cd $(DESTDIR)$(pkgpythondir); rm -f _gv.so; $(LN_S) libgv_python.so _gv.so;)
+	(cd $(DESTDIR)$(pkgpythondir); rm -f _gv.$(SO_DLL); $(LN_S) libgv_python.$(SO_DLL) _gv.$(SO_DLL);)
 endif
 if WITH_PYTHON2
-	(cd $(DESTDIR)$(pkgpython2dir); rm -f _gv.so; $(LN_S) libgv_python2.so _gv.so;)
+	(cd $(DESTDIR)$(pkgpython2dir); rm -f _gv.$(SO_DLL); $(LN_S) libgv_python2.$(SO_DLL) _gv.$(SO_DLL);)
 endif
 if WITH_PYTHON3
-	(cd $(DESTDIR)$(pkgpython3dir); rm -f _gv.so; $(LN_S) libgv_python3.so _gv.so;)
+	(cd $(DESTDIR)$(pkgpython3dir); rm -f _gv.$(SO_DLL); $(LN_S) libgv_python3.$(SO_DLL) _gv.$(SO_DLL);)
 endif
 if WITH_R
-	(cd $(DESTDIR)$(pkgRdir);   rm -f gv.so;  $(LN_S) libgv_R.so gv.so;)
+	(cd $(DESTDIR)$(pkgRdir);   rm -f gv.$(SO_DLL);  $(LN_S) libgv_R.$(SO_DLL) gv.$(SO_DLL);)
 endif
 if WITH_RUBY
-	(cd $(DESTDIR)$(pkgrubydir);   rm -f gv.so;  $(LN_S) libgv_ruby.so gv.so;)
+	(cd $(DESTDIR)$(pkgrubydir);   rm -f gv.$(SO_DLL);  $(LN_S) libgv_ruby.$(SO_DLL) gv.$(SO_DLL);)
 endif
 
 devtsts: $(DEVTSTS)
@@ -533,7 +539,7 @@
 .PHONY: test_sharp
 test_sharp: libgv_sharp.la
 	-(mkdir -p test_sharp; cd test_sharp; \
-		ln -fs ../.libs/libgv_sharp.so libgv_sharp.so; \
+		ln -fs ../.libs/libgv_sharp.$(SO_DLL) libgv_sharp.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.cs .; \
 		$(SHARP) *.cs -out:test.exe; \
 		mono test.exe)
@@ -541,7 +547,7 @@
 .PHONY: test_go
 test_go: libgv_go.la
 	-(mkdir -p test_go; cd test_go; \
-		ln -fs ../.libs/libgv_go.so libgv.so; \
+		ln -fs ../.libs/libgv_go.$(SO_DLL) libgv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.go .; \
 		$(GO) *.go
 		LD_LIBRARY_PATH=. go test)
@@ -549,14 +555,14 @@
 .PHONY: test_guile
 test_guile: libgv_guile.la
 	-(mkdir -p test_guile; cd test_guile; \
-		ln -fs ../.libs/libgv_guile.so libgv.so; \
+		ln -fs ../.libs/libgv_guile.$(SO_DLL) libgv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.guile .; \
 		$(GUILE) -s test.guile)
 
 .PHONY: test_io
 test_io: libgv_io.la
 	-(mkdir -p test_io; cd test_io; \
-		ln -fs ../.libs/libgv_io.so libgv.so; \
+		ln -fs ../.libs/libgv_io.$(SO_DLL) libgv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.io .; \
 		ioc *.io; \
 		LD_LIBRARY_PATH=. io test)
@@ -564,7 +570,7 @@
 .PHONY: test_java
 test_java: libgv_java.la
 	-(mkdir -p test_java/org/graphviz; cd test_java; \
-		ln -f ../.libs/libgv_java.so libgv.jnilib; \
+		ln -f ../.libs/libgv_java.$(SO_DLL) libgv.jnilib; \
 		ln -f ../$(srcdir)/*.java org/graphviz; \
 		ln -f ../$(srcdir)/test.java .; \
 		ln -f ../$(srcdir)/hello.gv  .; \
@@ -575,14 +581,14 @@
 .PHONY: test_lua
 test_lua: libgv_lua.la
 	-(mkdir -p test_lua; cd test_lua; \
-		ln -fs ../.libs/libgv_lua.so gv.so;\
+		ln -fs ../.libs/libgv_lua.$(SO_DLL) gv.$(SO_DLL);\
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.lua .; \
 		$(LUA) test.lua)
 
 .PHONY: test_ocaml
 test_ocaml: libgv_ocaml.la
 	-(mkdir -p test_ocaml; cd test_ocaml; \
-		ln -fs ../.libs/libgv_ocaml.so libgv.so; \
+		ln -fs ../.libs/libgv_ocaml.$(SO_DLL) libgv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.ml ../$(srcdir)/*.mli .; \
 		ocamlc *.ocaml; \
 		LD_LIBRARY_PATH=. ocaml test)
@@ -590,56 +596,56 @@
 .PHONY: test_perl
 test_perl: libgv_perl.la
 	-(mkdir -p test_perl; cd test_perl; \
-		ln -fs ../.libs/libgv_perl.so gv.so; \
+		ln -fs ../.libs/libgv_perl.$(SO_DLL) gv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.p[lm] .; \
 		$(PERL) ./test.pl)
 
 .PHONY: test_php
 test_php: libgv_php.la
 	-(mkdir -p test_php; cd test_php; \
-		ln -fs ../.libs/libgv_php.so libgv.so; \
+		ln -fs ../.libs/libgv_php.$(SO_DLL) libgv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.php .; \
 		$(PHP) ./test.php)
 
 .PHONY: test_python
 test_python: libgv_python.la
 	-(mkdir -p test_python; cd test_python; \
-		ln -fs ../.libs/libgv_python.so _gv.so; \
+		ln -fs ../.libs/libgv_python.$(SO_DLL) _gv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.py .; \
 		PYTHONPATH=. $(PYTHON) test.py)
 
 .PHONY: test_python2
 test_python2: libgv_python2.la
 	-(mkdir -p test_python2; cd test_python2; \
-		ln -fs ../.libs/libgv_python2.so _gv.so; \
+		ln -fs ../.libs/libgv_python2.$(SO_DLL) _gv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.py .; \
 		PYTHONPATH=. $(PYTHON2) test.py)
 
 .PHONY: test_python3
 test_python3: libgv_python3.la
 	-(mkdir -p test_python3; cd test_python3; \
-		ln -fs ../.libs/libgv_python3.so _gv.so; \
+		ln -fs ../.libs/libgv_python3.$(SO_DLL) _gv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.py .; \
 		PYTHONPATH=. $(PYTHON3) test.py)
 
 .PHONY: test_R
 test_R: libgv_R.la
 	-(mkdir -p test_R; cd test_R; \
-		ln -fs ../.libs/libgv_R.so gv.so; \
+		ln -fs ../.libs/libgv_R.$(SO_DLL) gv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.R .; \
 		$(R) test.R)
 
 .PHONY: test_ruby
 test_ruby: libgv_ruby.la
 	-(mkdir -p test_ruby; cd test_ruby; \
-		ln -fs ../.libs/libgv_ruby.so gv.so; \
+		ln -fs ../.libs/libgv_ruby.$(SO_DLL) gv.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.rb .; \
 		$(RUBY) test.rb)
 
 .PHONY: test_tcl
 test_tcl: libgv_tcl.la
 	-(mkdir -p test_tcl; cd test_tcl; \
-		ln -fs ../.libs/libgv_tcl.so libgv_tcl.so; \
+		ln -fs ../.libs/libgv_tcl.$(SO_DLL) libgv_tcl.$(SO_DLL); \
 		ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.tcl .; \
 		$(TCLSH) ./test.tcl)
 
diff -Naur graphviz-2.44.1.a/tclpkg/mkpkgindex.sh graphviz-2.44.1.b/tclpkg/mkpkgindex.sh
--- graphviz-2.44.1.a/tclpkg/mkpkgindex.sh	2020-06-29 10:47:19.000000000 +0200
+++ graphviz-2.44.1.b/tclpkg/mkpkgindex.sh	2021-03-10 02:10:18.358335500 +0100
@@ -10,6 +10,7 @@
     libBaseName=`basename $1 .la`
     case `uname` in
         CYGWIN*) lib="${libBaseName}.dll"   ;;
+        MINGW*)  lib="${libBaseName}.dll"   ;;
         Darwin*) lib="${libBaseName}.dylib" ;;
         HP-UX*)  lib="${libBaseName}.sl"    ;;
         *)       lib="${libBaseName}.so"    ;;
