LIBRARIES = $(shell ocamlfind query -recursive -predicates "byte $(PREDICATES)" -format "%d/%a" $(REQUIRES))
 LIBRARIES_OPT = $(shell ocamlfind query -recursive -predicates "native $(PREDICATES)" -format "%d/%a" $(REQUIRES))
 
-all: proofChecker
-opt: proofChecker.opt
+all: $(PROOFCHECKEROBJS) proofChecker
+opt: $(PROOFCHECKEROBJS:.cmo=.cmx) proofChecker.opt
 
 DEPOBJS = proofChecker.ml
 
 
       exit (-1)
      end
   ) usage_msg ;
-  while true do
-   begin
-    try
-     CicTypeChecker.typecheck (UriManager.uri_of_string (read_line ()))
-    with
-     e ->
-      print_newline() ;
-      flush stdout ;
-      raise e
-   end ;
-   print_endline "END"
-  done
+  try
+   while true do
+    begin
+     try
+      CicTypeChecker.typecheck (UriManager.uri_of_string (read_line ()))
+     with
+        End_of_file -> raise End_of_file
+      | e ->
+       print_newline() ;
+       flush stdout ;
+       raise e
+    end ;
+    print_endline "END"
+   done
+  with
+   End_of_file -> ()
 ;;
 
 CicCooking.init() ;