diff --git a/util/mkdef.pl b/util/mkdef.pl
index c21b46f..0c38934 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -101,7 +101,9 @@
 			 # NEXTPROTONEG
 			 "NEXTPROTONEG",
 			 # Deprecated functions
-			 "DEPRECATED",
+			 "DEPRECATEDIN_0_9_8",
+			 "DEPRECATEDIN_1_0_0",
+			 "DEPRECATEDIN_1_1_0",
 			 # SCTP
 		 	 "SCTP",
 			 # SRTP
@@ -174,8 +176,23 @@
 	$do_ctestall=1 if $_ eq "ctestall";
 	$do_checkexist=1 if $_ eq "exist";
 	#$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK";
-
-	if (/^(enable|disable|no)-(.*)$/) {
+	if (/^--api=(\d+)\.(\d+)\.(\d+)$/) {
+		my $apiv = sprintf "%x%02x%02x", $1, $2, $3;
+		foreach (keys %disabled_algorithms) {
+			if (/^DEPRECATEDIN_(\d+)_(\d+)_(\d+)$/) {
+				my $depv = sprintf "%x%02x%02x", $1, $2, $3;
+				$disabled_algorithms{$_} = 1 if $apiv ge $depv;
+			}
+		}
+	}
+	if (/^no-deprecated$/) {
+		foreach (keys %disabled_algorithms) {
+			if (/^DEPRECATEDIN_/) {
+				$disabled_algorithms{$_} = 1;
+			}
+		}
+	}
+	elsif (/^(enable|disable|no)-(.*)$/) {
 		my $alg = uc $2;
         $alg =~ tr/-/_/;
 		if (exists $disabled_algorithms{$alg}) {
@@ -439,14 +456,15 @@
 		print STDERR "DEBUG: parsing ----------\n" if $debug;
 		while(<IN>) {
 			if($parens > 0) {
-				#Inside a DECLARE_DEPRECATED
+				#Inside a DEPRECATEDIN
 				$stored_multiline .= $_;
 				chomp $stored_multiline;
-				print STDERR "DEBUG: Continuing multiline DEPRECATED: $stored_multiline\n" if $debug;
+				print STDERR "DEBUG: Continuing multiline DEPRECATEDIN: $stored_multiline\n" if $debug;
 				$parens = count_parens($stored_multiline);
 				if ($parens == 0) {
-					$stored_multiline =~ /^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/;
-					$def .= "$1(void);";
+					$def .= do_deprecated($stored_multiline,
+							\@current_platforms,
+							\@current_algorithms);
 				}
 				next;
 			}
@@ -840,14 +858,16 @@
 					&$make_variant("_shadow_$2","_shadow_$2",
 						      "EXPORT_VAR_AS_FUNCTION",
 						      "FUNCTION");
-				} elsif (/^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/) {
+				} elsif (/^\s*DEPRECATEDIN/) {
 					$parens = count_parens($_);
 					if ($parens == 0) {
-						$def .= "$1(void);";
+						$def .= do_deprecated($_,
+							\@current_platforms,
+							\@current_algorithms);
 					} else {
 						$stored_multiline = $_;
 						chomp $stored_multiline;
-						print STDERR "DEBUG: Found multiline DEPRECATED starting with: $stored_multiline\n" if $debug;
+						print STDERR "DEBUG: Found multiline DEPRECATEDIN starting with: $stored_multiline\n" if $debug;
 						next;
 					}
 				} elsif ($tag{'CONST_STRICT'} != 1) {
@@ -1657,3 +1677,15 @@
 			if (($cvbase ne $tvbase) && ($tvletter gt $cvletter));
 	}
 }
+
+sub do_deprecated()
+{
+	my ($decl, $plats, $algs) = @_;
+	$decl =~ /^\s*(DEPRECATEDIN_\d_\d_\d)\s*\((.*)\)\s*$/;
+	my $info1 .= "#INFO:";
+	$info1 .= join(',', @{$plats}) . ":";
+	my $info2 = $info1;
+	$info1 .= join(',',@{$algs}, $1) . ";";
+	$info2 .= join(',',@{$algs}) . ";";
+	return $info1 . $2 . ";" . $info2;
+}
