avoid -DPLATFORM=\"...\" and -DCFLAGS=\"...\" command lines,
use new file buildinf.h instead.
diff --git a/CHANGES b/CHANGES
index df10c89..d481e6e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,14 @@
 
  Changes between 0.9.3a and 0.9.4
 
+  *) The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=...
+     (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused
+     problems not only on Windows, but also on some Unix platforms.
+     To avoid problematic command lines, these definitions are now made
+     in auto-generated file crypto/buildinf.h, which also defines DATE
+     and thus replaces crypto/date.h.
+     [Bodo Moeller]
+
   *) MIPS III/IV assembler module is reimplemented.
      [Andy Polyakov]
 
diff --git a/Configure b/Configure
index 4b68a09..2bc2ad0 100755
--- a/Configure
+++ b/Configure
@@ -266,6 +266,8 @@
 "BC-16","bcc:::(unknown)::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::",
 
 # CygWin32
+# (Note: the real CFLAGS for Windows builds are defined by util/mk1mf.pl
+# and its library files in util/pl/*)
 "CygWin32", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::::BN_LLONG $x86_gcc_des $x86_gcc_opts:",
 "Mingw32", "gcc:-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::::BN_LLONG $x86_gcc_des $x86_gcc_opts:",
 
@@ -686,16 +688,14 @@
 print "BF_PTR2 used\n" if $bf_ptr == 2; 
 
 if($IsWindows) {
-	open (OUT,">crypto/date.h") || die "Can't open date.h";
-	printf OUT "#define DATE \"%s\"\n", scalar gmtime();
-	printf OUT <<EOF; # Kludge -- usually those are passed on the command line
-#ifndef CFLAGS
+	open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
+	printf OUT <<EOF;
+/* auto-generated by Configure for crypto/cversion.c */
+/* (Unix builds: auto-generated by crypto/Makefile.ssl) */
 #define CFLAGS "$cc $cflags"
-#endif
-#ifndef PLATFORM
 #define PLATFORM "$target"
-#endif
 EOF
+	printf OUT "#define DATE \"%s\"\n", scalar gmtime();
 	close(OUT);
 	system "perl crypto/objects/obj_dat.pl <crypto/objects/objects.h >crypto/objects/obj_dat.h";
 } else {
diff --git a/crypto/Makefile.ssl b/crypto/Makefile.ssl
index fce1368..e8940de 100644
--- a/crypto/Makefile.ssl
+++ b/crypto/Makefile.ssl
@@ -20,7 +20,7 @@
 PEX_LIBS=
 EX_LIBS=
  
-CFLAGS= $(INCLUDE) $(CFLAG) -DCFLAGS="\"$(CC) $(CFLAG)\"" -DPLATFORM="\"$(PLATFORM)\""
+CFLAGS= $(INCLUDE) $(CFLAG)
 
 
 LIBS=
@@ -40,17 +40,21 @@
 SRC= $(LIBSRC)
 
 EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h
-HEADER=	cryptlib.h date.h $(EXHEADER)
+HEADER=	cryptlib.h buildinf.h $(EXHEADER)
 
 ALL=    $(GENERAL) $(SRC) $(HEADER)
 
 top:
 	@(cd ..; $(MAKE) DIRS=$(DIR) all)
 
-all: date.h lib subdirs
+all: buildinf.h lib subdirs
 
-date.h: ../Makefile.ssl
-	echo "#define DATE \"`date`\"" >date.h
+buildinf.h: ../Makefile.ssl
+	( echo "/* auto-generated by crypto/Makefile.ssl for crypto/cversion.c */"; \
+	echo "/* (Windows builds: auto-generated by Configure) */"; \
+	echo "#define CFLAGS \"$(CC) $(CFLAG)\""; \
+	echo "#define PLATFORM \"$(PLATFORM)\""; \
+	echo "#define DATE \"`date`\"" ) >buildinf.h
 
 subdirs:
 	@for i in $(SDIRS) ;\
@@ -125,7 +129,7 @@
 	done;
 
 clean:
-	rm -f date.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
+	rm -f buildinf.h date.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
 	@for i in $(SDIRS) ;\
 	do \
 	(cd $$i; echo "making clean in crypto/$$i..."; \
@@ -149,12 +153,12 @@
 cryptlib.o: ../include/openssl/crypto.h ../include/openssl/e_os.h
 cryptlib.o: ../include/openssl/e_os2.h ../include/openssl/err.h
 cryptlib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
-cryptlib.o: ../include/openssl/stack.h cryptlib.h date.h
+cryptlib.o: ../include/openssl/stack.h cryptlib.h
 cversion.o: ../include/openssl/bio.h ../include/openssl/buffer.h
 cversion.o: ../include/openssl/crypto.h ../include/openssl/e_os.h
 cversion.o: ../include/openssl/e_os2.h ../include/openssl/err.h
 cversion.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
-cversion.o: ../include/openssl/stack.h cryptlib.h date.h
+cversion.o: ../include/openssl/stack.h buildinf.h cryptlib.h
 ex_data.o: ../include/openssl/bio.h ../include/openssl/buffer.h
 ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os.h
 ex_data.o: ../include/openssl/e_os2.h ../include/openssl/err.h
diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
index d70a570..356c476 100644
--- a/crypto/cryptlib.c
+++ b/crypto/cryptlib.c
@@ -60,7 +60,6 @@
 #include <string.h>
 #include "cryptlib.h"
 #include <openssl/crypto.h>
-#include "date.h"
 
 #if defined(WIN32) || defined(WIN16)
 static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */
diff --git a/crypto/cversion.c b/crypto/cversion.c
index 959b261..72af476 100644
--- a/crypto/cversion.c
+++ b/crypto/cversion.c
@@ -60,7 +60,7 @@
 #include <string.h>
 #include "cryptlib.h"
 #include <openssl/crypto.h>
-#include "date.h"
+#include "buildinf.h"
 
 const char *SSLeay_version(int t)
 	{