diff --git a/credits.txt b/credits.txt
index 1672ae462547189259744c2a903906ad402854b3..bcffe42522ab6b51456ef60298f8d093349a2918 100644
--- a/credits.txt
+++ b/credits.txt
@@ -8,6 +8,7 @@ Curt Arnold
 Edward Avis
 Anupam Bagchi
 Torbjörn Bäckström
+Abe Backus
 Frank Balluffi
 Matthew Baker
 Devin Barnhart
diff --git a/doc/feedback.xml b/doc/feedback.xml
index e5bff154287fc3518132f055ad9379bb9b66725a..cda5b41c6e741a8ac4cb4514ae39c091682adc60 100644
--- a/doc/feedback.xml
+++ b/doc/feedback.xml
@@ -33,6 +33,7 @@
             <li>Edward Avis</li>
             <li>Anupam Bagchi</li>
             <li>Torbjörn Bäckström</li>
+            <li>Abe Backus</li>
             <li>Frank Balluffi</li>
             <li>Matthew Baker</li>
             <li>Devin Barnhart</li>
diff --git a/doc/releases.xml b/doc/releases.xml
index 5b8a664e8406d23fb83036213f7c31e2bc1b4c85..e1f6bc7c5cdcafef2e62f457a87633dec20dd91f 100644
--- a/doc/releases.xml
+++ b/doc/releases.xml
@@ -25,6 +25,13 @@
         <td>Description</td>
     </tr>
 
+    <tr>
+        <td>2002-08-26</td>
+        <td>Abe Backus</td>
+        <td>[Bug 12004] Samples/Tests don't build under cygwin.
+        </td>
+    </tr>
+
     <tr>
         <td>2002-08-23</td>
         <td>Tinny Ng</td>
diff --git a/samples/Makefile.incl b/samples/Makefile.incl
index 3116c993d58e651745dd0f6fceaf8fa235bc4c23..f19b00d5c662264c65333929d60fe404dad91721 100644
--- a/samples/Makefile.incl
+++ b/samples/Makefile.incl
@@ -189,6 +189,16 @@ EXTRA_LINK_OPTIONS=-lc ${EXTRA_LIBS}
 SHLIBSUFFIX=.so
 endif
 
+#=============== CYGWIN SPECIFIC OPTIONS =========================
+ifeq (${PLATFORM}, CYGWIN)
+CMP= -c ${CXXFLAGS}
+CC= ${COMPILER} -c -D__${PLATFORM}__
+LINK =  ${COMPILER} -D__${PLATFORM}__ ${LDFLAGS}
+PLATFORM_LIB_LINK_OPTIONS=-L/usr/lib -L/usr/local/lib
+EXTRA_LINK_OPTIONS=${EXTRA_LIBS}
+SHLIBSUFFIX=.dll
+endif
+
 #=============== FREEBSD SPECIFIC OPTIONS =========================
 ifeq (${PLATFORM}, FREEBSD)
   CMP= -c ${CXXFLAGS}
diff --git a/samples/configure b/samples/configure
index 3f95dcc3ee843fb2a1054bb57dee1daa5a8db12e..e33621d1fc58555428257d376095447d1fd01411 100755
--- a/samples/configure
+++ b/samples/configure
@@ -1323,6 +1323,7 @@ case "${host}" in
         *-*-OS400*)     platform=OS400 ;;
         *-*-osf*)       platform=TRU64 ;;
         *-apple-*)		platform=MACOSX ;;
+        *-*-cygwin*)	platform=CYGWIN ;;
         *)              platform=UNKNOWN ;;
 esac
 
diff --git a/samples/configure.in b/samples/configure.in
index 3f563a1f58624459d33a8cd929b04581081d54f5..d4999bdaca9412b60f784f142adf8007d9987610 100644
--- a/samples/configure.in
+++ b/samples/configure.in
@@ -51,6 +51,7 @@ case "${host}" in
         *-*-OS400*)     platform=OS400 ;;
         *-*-osf*)       platform=TRU64 ;;
         *-apple-*)		platform=MACOSX ;;
+        *-*-cygwin*)	platform=CYGWIN ;;
         *)              platform=UNKNOWN ;;
 esac
 AC_SUBST(platform)
diff --git a/samples/runConfigure b/samples/runConfigure
index 45d3e88719de2576fdaf6e862a81e16dbccccd98..0fa16354084b1998f12281dfb88a2c9cd7be318d 100755
--- a/samples/runConfigure
+++ b/samples/runConfigure
@@ -84,7 +84,7 @@ usage()
     echo "       where options may be any of the following:"
     echo "       -p <platform> (accepts 'aix', 'linux', 'freebsd', 'solaris',
                  'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
-                 'ptx', 'tru64', 'macosx')"
+                 'ptx', 'tru64', 'macosx', 'cygwin')"
     echo "       -c <C compiler name> (e.g. gcc, cc, xlc_r, icc or ecc)"
     echo "       -x <C++ compiler name> (e.g. g++, CC, xlC_r, icc or ecc)"
     echo "       -d (specifies that you want to build debug version)"
@@ -196,7 +196,7 @@ echo "Extra link options: $linkeroptions"
 # Now check if the options are correct or not, bail out if incorrect
 #
 case $platform in
-   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 | os400 | irix | ptx | tru64 | macosx)
+   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 | os400 | irix | ptx | tru64 | macosx | cygwin)
        # platform has been recognized
        ;;
    *)
diff --git a/tests/Makefile.incl b/tests/Makefile.incl
index 295835f1337eb399eb9101af4da6b7368ee870da..f80f75e66b755aa2bacde32fc2648a8fdbc6f16a 100644
--- a/tests/Makefile.incl
+++ b/tests/Makefile.incl
@@ -188,6 +188,16 @@ EXTRA_LINK_OPTIONS=-lc ${EXTRA_LIBS}
 SHLIBSUFFIX=.so
 endif
 
+#=============== CYGWIN SPECIFIC OPTIONS =========================
+ifeq (${PLATFORM}, CYGWIN)
+CMP= -c ${CXXFLAGS}
+CC= ${COMPILER} -c -D__${PLATFORM}__
+LINK =  ${COMPILER} -D__${PLATFORM}__ ${LDFLAGS}
+PLATFORM_LIB_LINK_OPTIONS=-L/usr/lib -L/usr/local/lib
+EXTRA_LINK_OPTIONS=${EXTRA_LIBS}
+SHLIBSUFFIX=.dll
+endif
+
 #=============== FREEBSD SPECIFIC OPTIONS =========================
 ifeq (${PLATFORM}, FREEBSD)
   CMP= -c ${CXXFLAGS}
diff --git a/tests/ThreadTest/ThreadTest.cpp b/tests/ThreadTest/ThreadTest.cpp
index 1b02236368a4e85ae45d22bb8e3737b5c14dcf4d..27599e5d717423b33c1d9c6f75ee85a6f0699b47 100644
--- a/tests/ThreadTest/ThreadTest.cpp
+++ b/tests/ThreadTest/ThreadTest.cpp
@@ -119,7 +119,7 @@ void ThreadFuncs::startThread(ThreadFunc func, void *param)
 }
 
 
-#elif defined (AIX) || defined(SOLARIS) || defined(LINUX) || defined(HPUX) || defined (OS390) || defined(FREEBSD)
+#elif defined (AIX) || defined(SOLARIS) || defined(LINUX) || defined(HPUX) || defined (OS390) || defined(FREEBSD) || defined(__CYGWIN__)
 #include <pthread.h>
 #include <unistd.h>
 #include <errno.h>
diff --git a/tests/configure b/tests/configure
index f3f632a84c9cd13a58392146f65fc7c36cd9f623..819befe57ebc2168b0e007cd5f26867e3204ad87 100755
--- a/tests/configure
+++ b/tests/configure
@@ -1323,6 +1323,7 @@ case "${host}" in
         *-*-OS400*)     platform=OS400 ;;
         *-*-osf*)       platform=TRU64 ;;
         *-apple-*)		platform=MACOSX ;;
+        *-*-cygwin*)		platform=CYGWIN ;;
         *)              platform=UNKNOWN ;;
 esac
 
diff --git a/tests/configure.in b/tests/configure.in
index 076be178e5faf5414326ba6e55cd872f0c01bc05..deb5e3cef79ed5b488d7056bd40fb5aeb18f0367 100644
--- a/tests/configure.in
+++ b/tests/configure.in
@@ -51,6 +51,7 @@ case "${host}" in
         *-*-OS400*)     platform=OS400 ;;
         *-*-osf*)       platform=TRU64 ;;
         *-apple-*)		platform=MACOSX ;;
+        *-*-cygwin*)		platform=CYGWIN ;;
         *)              platform=UNKNOWN ;;
 esac
 AC_SUBST(platform)
diff --git a/tests/runConfigure b/tests/runConfigure
index 6cf4e1c731ff598710ac6156660abbe61fc87825..a165005a5edcd6f8a1e2addabf63bfe928a5f0a8 100755
--- a/tests/runConfigure
+++ b/tests/runConfigure
@@ -84,7 +84,7 @@ usage()
     echo "       where options may be any of the following:"
     echo "       -p <platform> (accepts 'aix', 'linux', 'freebsd', 'solaris',
                  'hp-10', 'hp-11', 'openserver', 'unixware', 'os400', 'irix',
-                 'ptx', 'tru64', 'macosx')"
+                 'ptx', 'tru64', 'macosx', 'cygwin')"
     echo "       -c <C compiler name> (e.g. gcc, cc, xlc_r, icc or ecc)"
     echo "       -x <C++ compiler name> (e.g. g++, CC, xlC_r, icc or ecc)"
     echo "       -d (specifies that you want to build debug version)"
@@ -196,7 +196,7 @@ echo "Extra link options: $linkeroptions"
 # Now check if the options are correct or not, bail out if incorrect
 #
 case $platform in
-   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 | os400 | irix | ptx | tru64 | macosx)
+   aix | openserver | unixware | linux | freebsd | solaris | hp-10 | hp-11 | os400 | irix | ptx | tru64 | macosx | cygwin)
        # platform has been recognized
        ;;
    *)