Make no-engine work again.
diff --git a/apps/dsa.c b/apps/dsa.c
index 0ebba08..5911f11 100644
--- a/apps/dsa.c
+++ b/apps/dsa.c
@@ -96,9 +96,7 @@
 
 int MAIN(int argc, char **argv)
 	{
-#ifndef OPENSSL_NO_ENGINE
 	ENGINE *e = NULL;
-#endif
 	int ret=1;
 	DSA *dsa=NULL;
 	int i,badops=0;
diff --git a/apps/engine.c b/apps/engine.c
index b51244a..baee824 100644
--- a/apps/engine.c
+++ b/apps/engine.c
@@ -56,7 +56,6 @@
  *
  */
 
-#ifndef OPENSSL_NO_ENGINE
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -66,6 +65,7 @@
 #endif
 #include "apps.h"
 #include <openssl/err.h>
+#ifndef OPENSSL_NO_ENGINE
 #include <openssl/engine.h>
 #include <openssl/ssl.h>
 
diff --git a/apps/genpkey.c b/apps/genpkey.c
index dc69e74..6dfda08 100644
--- a/apps/genpkey.c
+++ b/apps/genpkey.c
@@ -376,8 +376,10 @@
 
 	ameth = EVP_PKEY_asn1_find_str(&tmpeng, algname, -1);
 
+#ifndef OPENSSL_NO_ENGINE
 	if (!ameth && e)
 		ameth = ENGINE_get_pkey_asn1_meth_str(e, algname, -1);
+#endif
 
 	if (!ameth)
 		{
diff --git a/apps/pkeyparam.c b/apps/pkeyparam.c
index 0b911af..4319eb4 100644
--- a/apps/pkeyparam.c
+++ b/apps/pkeyparam.c
@@ -68,13 +68,13 @@
 
 int MAIN(int argc, char **argv)
 	{
-	ENGINE *e = NULL;
 	char **args, *infile = NULL, *outfile = NULL;
 	BIO *in = NULL, *out = NULL;
 	int text = 0, noout = 0;
 	EVP_PKEY *pkey=NULL;
 	int badarg = 0;
 #ifndef OPENSSL_NO_ENGINE
+	ENGINE *e = NULL;
 	char *engine=NULL;
 #endif
 	int ret = 1;
@@ -125,7 +125,9 @@
 
 	if (badarg)
 		{
+#ifndef OPENSSL_NO_ENGINE
 		bad:
+#endif
 		BIO_printf(bio_err, "Usage pkeyparam [options]\n");
 		BIO_printf(bio_err, "where options are\n");
 		BIO_printf(bio_err, "-in file        input file\n");
diff --git a/apps/s_client.c b/apps/s_client.c
index f0783bc..dcc289b 100644
--- a/apps/s_client.c
+++ b/apps/s_client.c
@@ -413,8 +413,9 @@
 #ifndef OPENSSL_NO_ENGINE
 	char *engine_id=NULL;
 	char *ssl_client_engine_id=NULL;
-	ENGINE *e=NULL, *ssl_client_engine=NULL;
+	ENGINE *ssl_client_engine=NULL;
 #endif
+	ENGINE *e=NULL;
 #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
 	struct timeval tv;
 #if defined(OPENSSL_SYS_BEOS_R5)
diff --git a/apps/s_server.c b/apps/s_server.c
index 12d39c3..b6cc5ee 100644
--- a/apps/s_server.c
+++ b/apps/s_server.c
@@ -849,9 +849,7 @@
 	int state=0;
 	const SSL_METHOD *meth=NULL;
 	int socket_type=SOCK_STREAM;
-#ifndef OPENSSL_NO_ENGINE
 	ENGINE *e=NULL;
-#endif
 	char *inrand=NULL;
 	int s_cert_format = FORMAT_PEM, s_key_format = FORMAT_PEM;
 	char *passarg = NULL, *pass = NULL;
diff --git a/apps/ts.c b/apps/ts.c
index edeab82..08b8c4a 100644
--- a/apps/ts.c
+++ b/apps/ts.c
@@ -813,9 +813,10 @@
 
 	/* Setting serial number provider callback. */
 	if (!TS_CONF_set_serial(conf, section, serial_cb, resp_ctx)) goto end;
-
+#ifndef OPENSSL_NO_ENGINE
 	/* Setting default OpenSSL engine. */
 	if (!TS_CONF_set_crypto_device(conf, section, engine)) goto end;
+#endif
 
 	/* Setting TSA signer certificate. */
 	if (!TS_CONF_set_signer_cert(conf, section, signer, resp_ctx)) goto end;
diff --git a/crypto/engine/enginetest.c b/crypto/engine/enginetest.c
index 3c1d2b4..f4d70e7 100644
--- a/crypto/engine/enginetest.c
+++ b/crypto/engine/enginetest.c
@@ -58,6 +58,7 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <openssl/e_os2.h>
 
 #ifdef OPENSSL_NO_ENGINE
 int main(int argc, char *argv[])
@@ -66,7 +67,6 @@
     return(0);
 }
 #else
-#include <openssl/e_os2.h>
 #include <openssl/buffer.h>
 #include <openssl/crypto.h>
 #include <openssl/engine.h>
diff --git a/crypto/ts/ts_conf.c b/crypto/ts/ts_conf.c
index fbd294b..c39be76 100644
--- a/crypto/ts/ts_conf.c
+++ b/crypto/ts/ts_conf.c
@@ -61,7 +61,9 @@
 #include <openssl/crypto.h>
 #include "cryptlib.h"
 #include <openssl/pem.h>
+#ifndef OPENSSL_NO_ENGINE
 #include <openssl/engine.h>
+#endif
 #include <openssl/ts.h>
 
 /* Macro definitions for the configuration file. */
@@ -185,6 +187,8 @@
 	return ret;
 	}
 
+#ifndef OPENSSL_NO_ENGINE
+
 int TS_CONF_set_crypto_device(CONF *conf, const char *section,
 			      const char *device)
 	{
@@ -230,6 +234,8 @@
 	return ret;
 	}
 
+#endif
+
 int TS_CONF_set_signer_cert(CONF *conf, const char *section,
 			    const char *cert, TS_RESP_CTX *ctx)
 	{
diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
index 1990fcc..02cf181 100644
--- a/ssl/ssl_ciph.c
+++ b/ssl/ssl_ciph.c
@@ -143,7 +143,9 @@
 #include <stdio.h>
 #include <openssl/objects.h>
 #include <openssl/comp.h>
+#ifndef OPENSSL_NO_ENGINE
 #include <openssl/engine.h>
+#endif
 #include "ssl_locl.h"
 
 #define SSL_ENC_DES_IDX		0
@@ -314,20 +316,38 @@
 /* Search for public key algorithm with given name and 
  * return its pkey_id if it is available. Otherwise return 0
  */
+#ifdef OPENSSL_NO_ENGINE
+
+static int get_optional_pkey_id(const char *pkey_name)
+	{
+	const EVP_PKEY_ASN1_METHOD *ameth;
+	int pkey_id=0;
+	ameth = EVP_PKEY_asn1_find_str(NULL,pkey_name,-1);
+	if (ameth) 
+		{
+		EVP_PKEY_asn1_get0_info(&pkey_id, NULL,NULL,NULL,NULL,ameth);
+		}		
+	return pkey_id;
+	}
+
+#else
+
 static int get_optional_pkey_id(const char *pkey_name)
 	{
 	const EVP_PKEY_ASN1_METHOD *ameth;
 	ENGINE *tmpeng = NULL;
 	int pkey_id=0;
 	ameth = EVP_PKEY_asn1_find_str(&tmpeng,pkey_name,-1);
-	if (ameth) 
+	if (ameth)
 		{
 		EVP_PKEY_asn1_get0_info(&pkey_id, NULL,NULL,NULL,NULL,ameth);
-		}		
-	if (tmpeng) ENGINE_finish(tmpeng);	
+		}
+	if (tmpeng) ENGINE_finish(tmpeng);
 	return pkey_id;
 	}
 
+#endif
+
 void ssl_load_ciphers(void)
 	{
 	ssl_cipher_methods[SSL_ENC_DES_IDX]=