+diff --git a/crypto/dh/Makefile b/crypto/dh/Makefile\r
+index 46fa5ac..cc366ec 100644\r
+--- a/crypto/dh/Makefile\r
++++ b/crypto/dh/Makefile\r
+@@ -134,7 +134,7 @@ dh_gen.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h\r
+ dh_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h\r
+ dh_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h\r
+ dh_gen.o: ../cryptlib.h dh_gen.c\r
+-dh_kdf.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h\r
++dh_kdf.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h\r
+ dh_kdf.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h\r
+ dh_kdf.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h\r
+ dh_kdf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h\r
+diff --git a/crypto/dh/dh.h b/crypto/dh/dh.h\r
+index 5498a9d..4a5c665 100644\r
+--- a/crypto/dh/dh.h\r
++++ b/crypto/dh/dh.h\r
+@@ -240,11 +240,13 @@ DH *DH_get_1024_160(void);\r
+ DH *DH_get_2048_224(void);\r
+ DH *DH_get_2048_256(void);\r
+ \r
++# ifndef OPENSSL_NO_CMS\r
+ /* RFC2631 KDF */\r
+ int DH_KDF_X9_42(unsigned char *out, size_t outlen,\r
+ const unsigned char *Z, size_t Zlen,\r
+ ASN1_OBJECT *key_oid,\r
+ const unsigned char *ukm, size_t ukmlen, const EVP_MD *md);\r
++# endif\r
+ \r
+ # define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \\r
+ EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \\r
+@@ -337,7 +339,9 @@ int DH_KDF_X9_42(unsigned char *out, size_t outlen,\r
+ \r
+ /* KDF types */\r
+ # define EVP_PKEY_DH_KDF_NONE 1\r
++# ifndef OPENSSL_NO_CMS\r
+ # define EVP_PKEY_DH_KDF_X9_42 2\r
++# endif\r
+ \r
+ /* BEGIN ERROR CODES */\r
+ /*\r
+diff --git a/crypto/dh/dh_kdf.c b/crypto/dh/dh_kdf.c\r
+index a882cb2..4eddb9a 100644\r
+--- a/crypto/dh/dh_kdf.c\r
++++ b/crypto/dh/dh_kdf.c\r
+@@ -51,13 +51,18 @@\r
+ * ====================================================================\r
+ */\r
+ \r
++#include <e_os.h>\r
++\r
++#ifndef OPENSSL_NO_CMS\r
+ #include <string.h>\r
+ #include <openssl/dh.h>\r
+ #include <openssl/evp.h>\r
+ #include <openssl/asn1.h>\r
+ #include <openssl/cms.h>\r
+ \r
++\r
+ /* Key derivation from X9.42/RFC2631 */\r
++/* Uses CMS functions, hence the #ifdef wrapper. */\r
+ \r
+ #define DH_KDF_MAX (1L << 30)\r
+ \r
+@@ -185,3 +190,4 @@ int DH_KDF_X9_42(unsigned char *out, size_t outlen,\r
+ EVP_MD_CTX_cleanup(&mctx);\r
+ return rv;\r
+ }\r
++#endif\r