--- a/Makefile	2012-02-04 01:24:21.000000000 +0000
+++ b/Makefile	2014-10-29 14:42:08.690188302 +0000
@@ -4,6 +4,8 @@
   version.ml pipeline.mli pipeline.ml common.mli common.ml \
   utils.mli utils.ml ocaml.mli ocaml.ml
 
+CAMLP4 := $(shell ocamlfind query camlp4)
+
 STDBIN = $(shell dirname `which ocamlfind`)
 ifndef PREFIX
   PREFIX = $(shell dirname $(STDBIN))
@@ -15,7 +17,7 @@
 endif
 export BINDIR
 
-PACKS = unix str
+PACKS = unix str findlib
 PP = camlp4o -I . -parser pa_tryfinally.cmo -parser pa_opt.cmo
 export PP
 
@@ -36,11 +38,11 @@
 
 common: version.ml
 	ocamlc -pp 'camlp4orf -loc _loc' -c \
-		-I +camlp4 pa_opt310.ml && \
+		-I $(CAMLP4) pa_opt310.ml && \
 		cp pa_opt310.cmo pa_opt.cmo && \
 		cp pa_opt310.cmi pa_opt.cmi
 	ocamlc -pp 'camlp4orf -loc _loc' -c \
-		-I +camlp4 pa_tryfinally310.ml && \
+		-I $(CAMLP4) pa_tryfinally310.ml && \
 		cp pa_tryfinally310.cmo pa_tryfinally.cmo && \
 		cp pa_tryfinally310.cmi pa_tryfinally.cmi
 
--- a/main.ml	2014-11-08 09:05:12.516401313 +0000
+++ b/main.ml	2014-11-08 09:09:59.801311230 +0000
@@ -250,9 +250,15 @@
 			Sys.getcwd ())
       | `File script_name -> "", get_dir script_name in
 
+  let findlibdir =
+    Filename.(
+      concat (Findlib.package_directory "findlib") parent_dir_name
+    ) in
+
   let file, oc = Filename.open_temp_file "meta" ".ml" in
   fprintf oc "\
 #%i %S;;
+#directory \"%s\";;
 #use \"topfind\";;
 #require \"ocamlscript\";;
 Ocamlscript.Common.verbose := %s;;
@@ -261,7 +267,7 @@
 open Ocamlscript;;
 open Utils;;
 #%i %S;;\n"
-     pos source verbose script_dir extra_args trash pos source;
+     pos source findlibdir verbose script_dir extra_args trash pos source;
   
   List.iter (output_line oc) lines;
 
@@ -544,6 +550,7 @@
       exit compilation_status
 
 let _ =
+  Findlib.init ();
   try main ()
   with Failure s ->
     eprintf "ocamlscript: %s\n%!" s;
 
