-fno-include-deps

diff --git a/ChangeLog b/ChangeLog
index fc03b75..a19179f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,11 +3,13 @@
 
 	* Released -fcompound-names to fix the name clashes in the code
 	  produced by the asn1c.
+	* Released -fno-include-deps to avoid #including non-critical
+	  external dependencies.
+	* Compiler is taught to produce compilable code for yet another class
+	  of circular ASN.1 type references.
 	* X.693:8.3.4 prohibits anything but SignedNumber; fixed XER codec.
 	* Fixed ENUMERATED identifier to value conversion in XER.
 	  Reported by <jacque.celaire@caramail.com>.
-	* Compiler is taught to produce compilable code for yet another class
-	  of circular ASN.1 type references.
 	* If the compiled file contents are the same as in already existing
 	  file (left from previous compilation), the old file is retained.
 	  This prevents thrashing `make` dependencies if amount of changes in
diff --git a/asn1c/asn1c.c b/asn1c/asn1c.c
index b068abc..5792430 100644
--- a/asn1c/asn1c.c
+++ b/asn1c/asn1c.c
@@ -87,6 +87,8 @@
 			asn1_compiler_flags |= A1C_USE_NATIVE_TYPES;
 		} else if(strcmp(optarg, "no-constraints") == 0) {
 			asn1_compiler_flags |= A1C_NO_CONSTRAINTS;
+		} else if(strcmp(optarg, "no-include-deps") == 0) {
+			asn1_compiler_flags |= A1C_NO_INCLUDE_DEPS;
 		} else if(strcmp(optarg, "unnamed-unions") == 0) {
 			asn1_compiler_flags |= A1C_UNNAMED_UNIONS;
 		} else if(strcmp(optarg, "types88") == 0) {
@@ -313,6 +315,7 @@
 "  -fknown-extern-type=<name>    Pretend this type is known\n"
 "  -fnative-types        Use \"long\" instead of INTEGER_t whenever possible, etc.\n"
 "  -fno-constraints      Do not generate constraint checking code\n"
+"  -fno-include-deps     Do not generate courtesy #includes for dependencies\n"
 "  -funnamed-unions      Enable unnamed unions in structures\n"
 "  -ftypes88             Pretend to support only ASN.1:1988 embedded types\n"
 "\n"
diff --git a/libasn1compiler/asn1c_save.c b/libasn1compiler/asn1c_save.c
index 0f3ed04..cded3dd 100644
--- a/libasn1compiler/asn1c_save.c
+++ b/libasn1compiler/asn1c_save.c
@@ -224,21 +224,22 @@
 
 	fprintf(fp_h, "#include <asn_application.h>\n");
 
-#define	SAVE_STREAM(idx, msg, actdep)	do {				\
-	if(TQ_FIRST(&(cs->destination[idx].chunks)))			\
-		fprintf(fp_h, "\n/* %s */\n", msg);			\
+#define	SAVE_STREAM(fp, idx, msg, actdep)	do {			\
+	if(TQ_FIRST(&(cs->destination[idx].chunks)) && msg)		\
+		fprintf(fp, "\n/* %s */\n", msg);			\
 	TQ_FOR(ot, &(cs->destination[idx].chunks), next) {		\
 		if(actdep) asn1c_activate_dependency(deps, 0, ot->buf);	\
-		fwrite(ot->buf, ot->len, 1, fp_h);			\
+		fwrite(ot->buf, ot->len, 1, fp);			\
 	}								\
 } while(0)
 
-	SAVE_STREAM(OT_INCLUDES, "Including external dependencies", 1);
-	SAVE_STREAM(OT_DEPS, "Dependencies", 0);
-	SAVE_STREAM(OT_FWD_DECLS, "Forward declarations", 0);
-	SAVE_STREAM(OT_TYPE_DECLS, expr->Identifier, 0);
-	SAVE_STREAM(OT_FUNC_DECLS, "Implementation", 0);
-	SAVE_STREAM(OT_POST_INCLUDE, "Referred external types", 1);
+	SAVE_STREAM(fp_h, OT_INCLUDES,	"Including external dependencies", 1);
+	SAVE_STREAM(fp_h, OT_DEPS,	"Dependencies", 0);
+	SAVE_STREAM(fp_h, OT_FWD_DECLS,	"Forward declarations", 0);
+	SAVE_STREAM(fp_h, OT_TYPE_DECLS, expr->Identifier, 0);
+	SAVE_STREAM(fp_h, OT_FUNC_DECLS,"Implementation", 0);
+	if(!(arg->flags & A1C_NO_INCLUDE_DEPS))
+	SAVE_STREAM(fp_h, OT_POST_INCLUDE, "Referred external types", 1);
 
 	fprintf(fp_h, "\n#ifdef __cplusplus\n}\n#endif\n\n"
 			"#endif\t/* _%s_H_ */\n",
@@ -246,6 +247,8 @@
 
 	fprintf(fp_c, "#include <asn_internal.h>\n\n");
 	fprintf(fp_c, "#include <%s.h>\n\n", expr->Identifier);	/* Myself */
+	if(arg->flags & A1C_NO_INCLUDE_DEPS)
+		SAVE_STREAM(fp_c, OT_POST_INCLUDE, 0, 1);
 	TQ_FOR(ot, &(cs->destination[OT_CTABLES].chunks), next)
 		fwrite(ot->buf, ot->len, 1, fp_c);
 	TQ_FOR(ot, &(cs->destination[OT_CODE].chunks), next)
diff --git a/libasn1compiler/asn1compiler.h b/libasn1compiler/asn1compiler.h
index d073517..9db02ca 100644
--- a/libasn1compiler/asn1compiler.h
+++ b/libasn1compiler/asn1compiler.h
@@ -43,6 +43,10 @@
 	 * Generate type_id_PR_member things identifiers of id_PR_member.
 	 */
 	A1C_COMPOUND_NAMES	= 0x0100,
+	/*
+	 * Do not generate courtesy #includes for external dependencies.
+	 */
+	A1C_NO_INCLUDE_DEPS	= 0x0200,
 };
 
 /*