avoid generating some OER object code if not -gen-OER
diff --git a/libasn1compiler/asn1c_save.c b/libasn1compiler/asn1c_save.c
index f7aa012..8f958d0 100644
--- a/libasn1compiler/asn1c_save.c
+++ b/libasn1compiler/asn1c_save.c
@@ -160,36 +160,37 @@
 			return -1;
 	}
 
-	safe_fprintf(mkf, "\n\n"
-		"lib_LTLIBRARIES=libsomething.la\n"
-		"libsomething_la_SOURCES="
-			"$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)\n"
-		"\n"
-		"# This file may be used as an input for make(3)\n"
-		"# Remove the lines below to convert it into a pure .am file\n"
-		"TARGET = progname\n"
-		"CFLAGS +=%s%s -I.\n"
-		"OBJS=${ASN_MODULE_SOURCES:.c=.o}"
-		  " ${ASN_CONVERTER_SOURCES:.c=.o}\n"
-		"\nall: $(TARGET)\n"
-		"\n$(TARGET): ${OBJS}"
-		"\n\t$(CC) $(CFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS)\n"
-		"\n.SUFFIXES:"
-		"\n.SUFFIXES: .c .o\n"
-		"\n.c.o:"
-		"\n\t$(CC) $(CFLAGS) -o $@ -c $<\n"
-		"\nclean:"
-		"\n\trm -f $(TARGET)"
-		"\n\trm -f $(OBJS)\n"
-		"\nregen: regenerate-from-asn1-source\n"
-		"\nregenerate-from-asn1-source:\n\t"
-		, (arg->flags & A1C_PDU_TYPE)
-			? generate_pdu_C_definition() : ""
-		, need_to_generate_pdu_collection(arg)
-			? " -DASN_PDU_COLLECTION" : ""
-	);
+    safe_fprintf(
+        mkf,
+        "\n\n"
+        "lib_LTLIBRARIES=libsomething.la\n"
+        "libsomething_la_SOURCES="
+        "$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)\n"
+        "\n"
+        "# This file may be used as an input for make(3)\n"
+        "# Remove the lines below to convert it into a pure .am file\n"
+        "TARGET = progname\n"
+        "CPPFLAGS += %s%s%s%s-I.\n"
+        "OBJS=${ASN_MODULE_SOURCES:.c=.o}"
+        " ${ASN_CONVERTER_SOURCES:.c=.o}\n"
+        "\nall: $(TARGET)\n"
+        "\n$(TARGET): ${OBJS}"
+        "\n\t$(CC) $(CPPFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS)\n"
+        "\n.SUFFIXES:"
+        "\n.SUFFIXES: .c .o\n"
+        "\n.c.o:"
+        "\n\t$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<\n"
+        "\nclean:"
+        "\n\trm -f $(TARGET)"
+        "\n\trm -f $(OBJS)\n"
+        "\nregen: regenerate-from-asn1-source\n"
+        "\nregenerate-from-asn1-source:\n\t",
+        (arg->flags & A1C_GEN_OER) ? "" : "-DASN_DISABLE_OER_SUPPORT ",
+        (arg->flags & A1C_GEN_PER) ? "" : "-DASN_DISABLE_PER_SUPPORT ",
+        (arg->flags & A1C_PDU_TYPE) ? generate_pdu_C_definition() : "",
+        need_to_generate_pdu_collection(arg) ? "-DASN_PDU_COLLECTION " : "");
 
-	for(i = 0; i < argc; i++)
+    for(i = 0; i < argc; i++)
 		safe_fprintf(mkf, "%s%s", i ? " " : "", argv[i]);
 	safe_fprintf(mkf, "\n\n");
 
@@ -568,18 +569,21 @@
 
 static const char *
 generate_pdu_C_definition(void) {
-	const char *src;
-	char *def;
+    const char *src;
+    char *def;
 	char *dst;
-	if(pduTypes == 0) return "";
-	def = malloc(strlen(pduType[0].typename) + 20);
-	assert(def);
-	strcpy(def, " -DPDU=");
-	for(src = pduType[0].typename, dst = def + 7; *src; src++, dst++)
-		if((*dst = *src) == '-')
-			*dst = '_';
-	*dst = 0;
-	return def;
+    if(pduTypes == 0) return "";
+    def = malloc(strlen(pduType[0].typename) + 20);
+    assert(def);
+    strcpy(def, "-DPDU=");
+	for(src = pduType[0].typename, dst = def + 6; *src; src++, dst++) {
+        if((*dst = *src) == '-') {
+            *dst = '_';
+        }
+    }
+    *dst++ = ' ';
+    *dst = 0;
+    return def;
 }
 
 void