浏览代码

[java] Stricter Java_ver check, output defines' value in build file

Caue Waneck 12 年之前
父节点
当前提交
833e0c7109
共有 2 个文件被更改,包括 14 次插入1 次删除
  1. 12 1
      gencommon.ml
  2. 2 0
      genjava.ml

+ 12 - 1
gencommon.ml

@@ -942,7 +942,7 @@ let dump_descriptor gen name path_s =
   (* dump called path *)
   SourceWriter.write w (Sys.getcwd());
   SourceWriter.newline w;
-  (* dump all defines *)
+  (* dump all defines. deprecated *)
   SourceWriter.write w "begin defines";
   SourceWriter.newline w;
   PMap.iter (fun name _ ->
@@ -951,6 +951,17 @@ let dump_descriptor gen name path_s =
   ) gen.gcon.defines;
   SourceWriter.write w "end defines";
   SourceWriter.newline w;
+  (* dump all defines with their values; keeping the old defines for compatibility *)
+  SourceWriter.write w "begin defines_data";
+  SourceWriter.newline w;
+  PMap.iter (fun name v ->
+    SourceWriter.write w name;
+    SourceWriter.write w "=";
+    SourceWriter.write w v;
+    SourceWriter.newline w
+  ) gen.gcon.defines;
+  SourceWriter.write w "end defines_data";
+  SourceWriter.newline w;
   (* dump all generated types *)
   SourceWriter.write w "begin modules";
   SourceWriter.newline w;

+ 2 - 0
genjava.ml

@@ -2081,8 +2081,10 @@ let before_generate con =
   let java_ver = try
       int_of_string (PMap.find "java_ver" con.defines)
     with | Not_found ->
+      Common.define_value con Define.JavaVer "7";
       7
   in
+  if java_ver < 5 then failwith ("Java version is defined to target Java " ^ string_of_int java_ver ^ ", but the compiler can only output code to versions equal or superior to Java 5");
   let rec loop i =
     Common.raw_define con ("java" ^ (string_of_int i));
     if i > 0 then loop (i - 1)