Commits

camlspotter committed 51b2fa4

oasis update

  • Participants
  • Parent commits d35c647
  • Branches 1.0.0

Comments (0)

Files changed (7)

 FILES[] = 
    spotinstall
 
-MyOCamlInstalledProgram(spotinstall, $(FILES))
+MyOCamlProgram(spotinstall, $(FILES))
 
 .PHONY: install
 install: spotinstall.opt
 #| A flag to tell that we can use OMyMakefile functions
 WithOMy=true
 
+#| The prefix. Equal to the PREFIX environment variable
+try
+  PREFIX=$(getenv PREFIX)
+default
+  eprintln(Specify PREFIX environment variable.)
+  exit 1 
+
+# OCaml 
+# ========================================================================
+
+#|Path to the OCaml library directory
+OCAML_WHERE = $(shell ocamlc -where)
+
+#|Version without extensions
+OCAML_VERSION = $(shell ocamlc -version | sed -e 's/^\([0-9.]*\).*/\1/')
+
+#|OMy requires OCamlFind!
+USE_OCAMLFIND = true
+OCAMLFIND_DESTDIR= $(shell ocamlfind printconf destdir)
+
+#|Set NATIVE_ENABLED false locally if a project does not requre opt compilation.
+NATIVE_ENABLED = $(OCAMLOPT_EXISTS)
+NATIVE_SHARED_ENABLED = $(OCAMLOPT_EXISTS)
+BYTE_ENABLED = true
+
+#|The default warning and errors. If you want to use different warning and error switches, use redefine the variable.
+OCAMLFLAGS = -w A-4-9 -warn-error A-4-9
+
+#|Global variable to be defined as empty
+OCAMLPACKAGEFLAGS=
+
+#|Preinstalled libraries which are always available for normal ocaml.
+#
+# You may want to add the required packages which are built and installed out of OMy framework:
+#
+#::
+#
+#   include OMyMakefile
+#   
+#   OCAML_PREINSTALLED_PACKS += llvm # llvm has been installed already, independently
+#   
+#   Subdirs()
+#
+# It includes "findlib" by default. If you want to build findlib in OMy framework, you have to remove it from the list.
+OCAML_PREINSTALLED_PACKS[]= bigarray camlp4 dbm dynlink graphics num num-top stdlib str threads unix findlib compiler-libs compiler-libs.common
+
+#|Redefinition of compiler commands
+public.OCamlC() =
+    value $(OCAMLFIND) $(OCAMLC) $(OCAMLPACKAGEFLAGS) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\
+              $(OCAMLCFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES)
+# Why we need "public." ?
+
+public.OCamlOpt() =
+    value $(OCAMLFIND) $(OCAMLOPT) $(OCAMLPACKAGEFLAGS) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\
+              $(OCAMLOPTFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES)
+
+if $(and $(not $(NATIVE_ENABLED)) $(not $(BYTE_ENABLED)))
+   err. =
+       extends $(UnbuildableException)
+       message = $(string $"You must turn on either NATIVE_ENABLED or BYTE_ENABLED")
+       raise $(err)
+
+#|Additional implicit rules by file extensions
+# annot, cmt, cmti files
+%.annot %.cmt: %.ml %.cmi
+	$(OCamlC) -c -annot -bin-annot $<
+
+%.spit %.cmti: %.mli 
+	$(OCamlC) -c -bin-annot $<
+
+#|Define OCAML_ANNOT so that ocamlc/ocamlopt automatically create spot/spit/annot/cmt/cmti files, even without -annot/-bin-annot option. This requires a special compiler patch 
+setenv(OCAML_ANNOT, 1)
+
+#|Enable the backtrace
+setenv(OCAMLRUNPARAM, b)
+
+# Common phonies
+# ==================================================================
 .PHONY: all install uninstall clean
 
 # Directories
         println(dump md5 $(INSTALLED)/$(pack))
         CreateCheckSum($(INSTALLED)/$(pack), $(targets))
 
-# OCaml -where
-# ========================================================================
-
-#|Path to the OCaml library directory
-OCAML_WHERE = $(shell ocamlc -where)
-
-# OCamlFind
-# ========================================================================
-
-#|OMy requires OCamlFind! Do not ask me how to use OMy without OCamlFind. Please.
-USE_OCAMLFIND = true
-OCAMLFIND_DESTDIR= $(shell ocamlfind printconf destdir)
-
-#|Preinstalled libraries which are always available for normal ocaml.
-#
-# You may want to add the required packages which are built and installed out of OMy framework:
-#
-#::
-#
-#   include OMyMakefile
-#   
-#   OCAML_PREINSTALLED_PACKS += llvm # llvm has been installed already, independently
-#   
-#   Subdirs()
-#
-# It includes "findlib" by default. If you want to build findlib in OMy framework, you have to remove it from the list.
-OCAML_PREINSTALLED_PACKS[]= bigarray camlp4 dbm dynlink graphics num num-top stdlib str threads unix findlib compiler-libs compiler-libs.common
-
-#|If set false in a project directory, native/byte compilation is disabled locally.
-NATIVE_ENABLED = $(OCAMLOPT_EXISTS)
-BYTE_ENABLED = true
-
-######################### Compiler
-
-#|Never use OCAMLFLAGS += ... to override this default. Redefine as OCAMLFLAGS = ...
-OCAMLFLAGS = -w A-4-9 -warn-error A-4-9
-
-OCAMLPACKAGEFLAGS=
-
-# Why we need "public." ?
-public.OCamlC() =
-    value $(OCAMLFIND) $(OCAMLC) $(OCAMLPACKAGEFLAGS) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\
-              $(OCAMLCFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES)
-
-public.OCamlOpt() =
-    value $(OCAMLFIND) $(OCAMLOPT) $(OCAMLPACKAGEFLAGS) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\
-              $(OCAMLOPTFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES)
-
-#| Define OCAML_ANNOT so that custom ocamlc/ocamlopt automatically create spot/spit/annot/cmt/cmti files, even without -annot/-bin-annot option. This requires a special compiler patch 
-setenv(OCAML_ANNOT, 1)
-setenv(OCAMLRUNPARAM, b)
-
-# Additional implicit rules by file extensions
-
-# annot, spot, spit files
-%.annot %.spot %.cmt: %.ml %.cmi
-	$(OCamlC) -c $<
-
-%.spit %.cmti: %.mli 
-	$(OCamlC) -c $<
-
 # Packages
 # =========================================================
 
 # ==========================================================
 
 # Extend the bundled OCamlPackage with .spot creation
+public.OCamlLibrary(name, files) =
+   # XXX: JYH: these variables should be marked private in 0.9.9
+   protected.name = $(file $(name))
+
+   protected.OFILES   = $(addsuffix $(EXT_OBJ), $(files))
+   protected.CMOFILES = $(addsuffix .cmo, $(files))
+   protected.CMXFILES = $(addsuffix .cmx, $(files))
+
+   protected.CLIB      = $(file $(name)$(EXT_LIB))
+   protected.BYTELIB   = $(file $(name).cma)
+   protected.NATIVELIB = $(file $(name).cmxa)
+   protected.NATIVESHAREDLIB = $(file $(name).cmxs)
+
+   #
+   # Link commands
+   #
+   $(BYTELIB): $(CMOFILES)
+        $(OCAMLFIND) $(OCAMLLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLCFLAGS) \
+                $(OCAML_LIB_FLAGS) -a -o $@ $(OCamlLinkSort $(CMOFILES))
+
+   $(NATIVELIB) $(CLIB): $(CMXFILES) $(OFILES)
+        $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) \
+                $(OCAML_LIB_FLAGS) -a -o $(NATIVELIB) $(OCamlLinkSort $(CMXFILES))
+
+   $(NATIVESHAREDLIB): $(CMXFILES) $(OFILES)
+         $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) \
+                 $(OCAML_LIB_FLAGS) -shared -o $(NATIVESHAREDLIB) $(OCamlLinkSort $(CMXFILES))
+
+   return $(array $(if $(NATIVE_ENABLED), $(NATIVELIB)), \
+                  $(if $(NATIVE_ENABLED), $(CLIB)), \
+                  $(if $(NATIVE_SHARED_ENABLED), $(NATIVESHAREDLIB)), \
+                  $(if $(BYTE_ENABLED), $(BYTELIB)))
+
+# Extend the bundled OCamlPackage with .spot creation
 public.OCamlPackage(name, files) =
    # XXX: JYH: these variables should be marked private in 0.9.9
    protected.OFILES   = $(addsuffix $(EXT_OBJ), $(files))
              export
          $(BYTE_TARGETS): $(BYTE_DEPS)
             $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
-                $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES))
+                $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -bin-annot -o $(CMO) $(OCamlLinkSort $(CMOFILES))
 
    protected.NATIVE_DEPS = $(CMXFILES) $(OFILES)
    $(NATIVE_TARGETS): $(NATIVE_DEPS)
             export
          $(NATIVE_TARGETS): $(NATIVE_DEPS)
             $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
-                $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMX) $(OCamlLinkSort $(CMXFILES))
+                $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -bin-annot -o $(CMX) $(OCamlLinkSort $(CMXFILES))
 
    $(CMI):
       section rule
 #         C library link option (without OCaml -cclib options)    
 #
 #  You can specify MyOCamlPackageExtras before using this function to install files out of the scope of this rule.   
+#  
+#  If $(NO_INSTALL) is defined, omake install does not install the package
 #
 #  Example::
 #
   ## the followings are necessary for packing
 
   OCAMLPACKAGEFLAGS += -for-pack $(capitalize $(library_name))
-  export OCAMLPACKAGEFLAGS
+  # export OCAMLPACKAGEFLAGS
 
   ## build rule
 
 
   targets[]+= $(library_name).cmt
 
-  if $(defined INSTALLED)
-    $(Installed $(library_name)): $(targets)
-	$(OCAMLFIND) remove $(library_name)
-	section:
-            $(OCAMLFIND) install $(library_name) $(targets)
-            CreateInstalled($(library_name), $(targets))
+  if $(not $(defined NO_INSTALL))
+    if $(defined INSTALLED)
+      $(Installed $(library_name)): $(targets)
+        $(OCAMLFIND) remove $(library_name)
+        section:
+              $(OCAMLFIND) install $(library_name) $(targets)
+              CreateInstalled($(library_name), $(targets))
 
-    install: $(Installed $(library_name))
+      install: $(Installed $(library_name))
 
-    uninstall:
-	rm -f $(Installed $(library_name))
-	$(OCAMLFIND) remove $(library_name)
-
-    export
-  else
-    install: $(targets)
-	$(OCAMLFIND) remove $(library_name)
+      uninstall:
+        rm -f $(Installed $(library_name))
+        $(OCAMLFIND) remove $(library_name)
+      export
+    else
+      install: $(targets)
+        $(OCAMLFIND) remove $(library_name)
         $(OCAMLFIND) install $(library_name) $(targets)
 
-    uninstall:
+      uninstall:
 	$(OCAMLFIND) remove $(library_name)
-
+      export
     export
 
 ############################################################## build ocaml exec
 #          Name of the program
 #      files
 #          OCaml module names (without .ml)
-MyOCamlProgram(name, files) =
+MyOCamlTestProgram(name, files) =
   AddLocalOCamlPackageDependencies()
   export # The above thing is local: need to be exported
 
   $(name).run $(name).opt: $(Installed $(OMyManagedPackages $(OCAMLPACKS)))
 
-  .PHONY: install
-  install: $(name) $(name).run $(name).opt
-    /bin/cp -a $(name) $(name).run $(name).opt $(PREFIX)/bin
-
   # CR jfuruse: forgot to add the deps over the packages!
   .DEFAULT: $(OCamlProgram $(name), $(files))
 
 #          Name of the program
 #      files
 #          OCaml module names (without .ml)
-#  In addition to MyOCamlProgram, the binary is installed by omake install
-MyOCamlInstalledProgram(name, files) =
-  MyOCamlProgram($(name), $(files))
+#  In addition to MyOCamlTestProgram, the binary is installed by omake install
+MyOCamlProgram(name, files) =
+  MyOCamlTestProgram($(name), $(files))
   export # The above thing is local: need to be exported
 
-  .PHONY: install
-  install: $(name) $(name).run $(name).opt
-    /bin/cp -a $(name) $(name).run $(name).opt $(PREFIX)/bin
-  uninstall:
-    rm -f $(PREFIX)/bin/$(name) $(PREFIX)/bin/$(name).run $(PREFIX)/bin/$(name).opt
+  if $(not $(defined NO_INSTALL))
+    install: $(name) $(name).run $(name).opt
+      install $(name) $(name).run $(name).opt $(PREFIX)/bin
+    uninstall:
+      rm -f $(PREFIX)/bin/$(name) $(PREFIX)/bin/$(name).run $(PREFIX)/bin/$(name).opt
+    export
+
+#| Add a rule to build a toplevel $(name)
+#      name
+#          Name of the program
+#      files
+#          OCaml module names (without .ml)
+OCamlTop(name, files) =
+   # XXX: JYH: these variables should be marked private in 0.9.9
+   protected.CMOFILES  = $(addsuffix .cmo, $(files))
+   # protected.CMXFILES  = $(addsuffix .cmx, $(files))
+   # protected.OFILES    = $(addsuffix $(EXT_OBJ), $(files))
+
+   protected.CMAFILES  = $(addsuffix .cma,  $(OCAML_LIBS))
+   # protected.CMXAFILES = $(addsuffix .cmxa, $(OCAML_LIBS))
+   protected.ARFILES   = $(addsuffix $(EXT_LIB), $(OCAML_LIBS))
+   protected.CMA_OTHER_FILES = $(addsuffix .cma, $(OCAML_OTHER_LIBS))
+   # protected.CMXA_OTHER_FILES = $(addsuffix .cmxa, $(OCAML_OTHER_LIBS))
+
+   protected.CLIBS = $(addsuffix $(EXT_LIB), $(OCAML_CLIBS))
+
+   protected.name = $(file $(name))
+
+   protected.PROG     = $(file $(name)$(EXE))
+   protected.BYTEPROG = $(file $(name).run)
+   # protected.OPTPROG  = $(file $(name).opt)
+
+   #
+   # Rules to build byte-code and native targets
+   #
+   $(BYTEPROG): $(CMAFILES) $(CMOFILES) $(CLIBS)
+        $(OCAMLFIND) $(OCAMLMKTOP) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLCFLAGS)\
+                $(PREFIXED_OCAMLINCLUDES) $(OCAML_BYTE_LINK_FLAGS)\
+                -o $@ $(CMA_OTHER_FILES) $(CMAFILES) $(OCamlLinkSort $(CMOFILES))\
+                $(CLIBS) $(OCAML_LINK_FLAGS)
+
+   $(PROG): $(BYTEPROG)
+        ln-or-cp $< $@
+
+   return $(array $(PROG), $(BYTEPROG))
+
+MyOCamlTop(name, files) =
+  AddLocalOCamlPackageDependencies()
+  export # The above thing is local: need to be exported
+
+  $(name): $(Installed $(OMyManagedPackages $(OCAMLPACKS)))
+
+  # CR jfuruse: forgot to add the deps over the packages!
+  .DEFAULT: $(OCamlTop $(name), $(files))
+
+  # The following clean the files twice if MyOCamlPackge coexists,
+  # but who cases ?
+  AutoClean()
+  export # The above thing is local: need to be exported
+
+  if $(not $(defined NO_INSTALL))
+    install: $(name) $(name).run
+      install $(name) $(name).run $(PREFIX)/bin
+    uninstall:
+      rm -f $(PREFIX)/bin/$(name) $(PREFIX)/bin/$(name).run
+    export
 
 #|  Add rules to build OCaml library $(name)
 #        name
 #            OCaml module name (without .ml)
 #
 #   .. note :: Probably you should use MyOCamlPackage
-MyOCamlLibrary(name, files) =
+MyOCamlLibrary(library_name, files) =
   AddLocalOCamlPackageDependencies()
+  targets = $(OCamlLibrary $(library_name), $(files))
+
+  .DEFAULT: $(targets)
+
   export # The above thing is local: need to be exported
 
-  # CR jfuruse: forgot to add the deps over the packages!
-  install-lib: $(OCamlLibrary $(name), $(files))
+  if $(not $(defined NO_INSTALL))
+    targets[] += META 
+    if $(defined INSTALLED)
+      $(Installed $(library_name)): $(targets)
+        $(OCAMLFIND) remove $(library_name)
+        section:
+              $(OCAMLFIND) install $(library_name) $(targets)
+              CreateInstalled($(library_name), $(targets))
+
+      install: $(Installed $(library_name))
+
+      uninstall:
+        rm -f $(Installed $(library_name))
+        $(OCAMLFIND) remove $(library_name)
+      export
+    else
+      install: $(targets)
+        $(OCAMLFIND) remove $(library_name)
+        $(OCAMLFIND) install $(library_name) $(targets)
+
+      uninstall:
+	$(OCAMLFIND) remove $(library_name)
+      export
+    export
 
   # The following clean the files twice if MyOCamlPacakge coexists,
   # but who cases ?
 OASISFormat: 0.2
 Name:        spotinstall
 Version:     1.0.0
-Synopsis:    A tool to facilitate the installation of OCaml annotation files.
+Synopsis:    SpotInstall : a tool to install annot files
 Authors:     Jun FURUSE
 License:     LGPL-2.0 with OCaml linking exception
 Plugins:      StdFiles (0.2)
 BuildType:    Custom (0.2)
 InstallType:    Custom (0.2)
-XCustomBuild: yes no | omake --install; omake
-XCustomInstall: omake install
-XCustomUninstall: omake uninstall
+XCustomBuild: . yes no | omake --install; PREFIX=$prefix omake
+XCustomInstall: PREFIX=$prefix omake install
+XCustomUninstall: PREFIX=$prefix omake uninstall
 BuildTools: omake
 BuildDepends:  unix

File opam/spotinstall.1.0.0/descr

-A tool to facilitate the installation of OCaml annotation files (.cmt, .cmti, .spot, .spit). 
-Many existing OCaml libraries, applications and the compiler itself do
-not produce or install the annotation files (.annot, .cmt, .cmti,
-.spot, .spit) which are essential for sub-expression type queries
-(caml-types.el), definition seaches and code refactoring (TypeRex and
-OCamlSpotter). If you want to use development tools, you have to:
-
-* Rebuild all the software from the source, adding -annot/-bin-annot
-  option to compiler flags in build scripts
-  i.e. Makefile/OCamlBuild/OMakefile.
-
-* Install those annotation files together with the library objects and
-  signatures. (Require modification of the build scripts)
-
-for all the programs.
-
-SpotInstall provides a post-installation workaround, consists of two things:
-
-* A very small compiler patch which activates -annot and -bin-annot if OCAML_ANNOT environment variable is defined. (You no longder need to add -annot/-bin-annot to the build scripts.)
-* A small tool to install annotation files to the library destination directory. (You no longer need to add annotation file installation to the build scripts.)
-
-For the first workaround, you need a small patch available from::
-
-    hg clone -b annot https://bitbucket.org/camlspotter/mutated_ocaml
-
-or included in this source package, ocaml-annot-<version>.patch.
-
-For the second one, you can use SpotInstall. This tool.

File opam/spotinstall.1.0.0/opam

-opam-version: "1"
-maintainer: "jun.furuse@gmail.com"
-build: [
-  ["ocaml" "setup.ml" "-configure" "--prefix" "%{prefix}%"]
-  ["ocaml" "setup.ml" "-build"]
-  ["ocaml" "setup.ml" "-install"]
-]
-remove: [
-  ["omake" "unintall"]
-]
-depends: [ "ocamlfind" "spotlib" {>="2.0.0"} "omake"]

File opam/spotinstall.1.0.0/url

-archive: "https://bitbucket.org/camlspotter/spotinstall/get/1.0.0.tar.gz"
 (* setup.ml generated for the first time by OASIS v0.3.0 *)
 
 (* OASIS_START *)
-(* DO NOT EDIT (digest: 8842780c67601f77d14f3ca61cc0b035) *)
+(* DO NOT EDIT (digest: 85e0bbfe894ef4dd66fd8f97277bc97f) *)
 (*
    Regenerated by OASIS v0.3.0
    Visit http://oasis.forge.ocamlcore.org for more information and
             CustomPlugin.cmd_main =
               [
                  (OASISExpr.EBool true,
-                   ("yes", ["no"; "|"; "omake"; "--install;"; "omake"]))
+                   (".",
+                     [
+                        "yes";
+                        "no";
+                        "|";
+                        "omake";
+                        "--install;";
+                        "PREFIX=$prefix";
+                        "omake"
+                     ]))
               ];
             cmd_clean = [(OASISExpr.EBool true, None)];
             cmd_distclean = [(OASISExpr.EBool true, None)];
        CustomPlugin.main
          {
             CustomPlugin.cmd_main =
-              [(OASISExpr.EBool true, ("omake", ["install"]))];
+              [
+                 (OASISExpr.EBool true,
+                   ("PREFIX=$prefix", ["omake"; "install"]))
+              ];
             cmd_clean = [(OASISExpr.EBool true, None)];
             cmd_distclean = [(OASISExpr.EBool true, None)];
             };
        CustomPlugin.main
          {
             CustomPlugin.cmd_main =
-              [(OASISExpr.EBool true, ("omake", ["uninstall"]))];
+              [
+                 (OASISExpr.EBool true,
+                   ("PREFIX=$prefix", ["omake"; "uninstall"]))
+              ];
             cmd_clean = [(OASISExpr.EBool true, None)];
             cmd_distclean = [(OASISExpr.EBool true, None)];
             };
                CustomPlugin.cmd_main =
                  [
                     (OASISExpr.EBool true,
-                      ("yes", ["no"; "|"; "omake"; "--install;"; "omake"]))
+                      (".",
+                        [
+                           "yes";
+                           "no";
+                           "|";
+                           "omake";
+                           "--install;";
+                           "PREFIX=$prefix";
+                           "omake"
+                        ]))
                  ];
                cmd_clean = [(OASISExpr.EBool true, None)];
                cmd_distclean = [(OASISExpr.EBool true, None)];
           CustomPlugin.clean
             {
                CustomPlugin.cmd_main =
-                 [(OASISExpr.EBool true, ("omake", ["install"]))];
+                 [
+                    (OASISExpr.EBool true,
+                      ("PREFIX=$prefix", ["omake"; "install"]))
+                 ];
                cmd_clean = [(OASISExpr.EBool true, None)];
                cmd_distclean = [(OASISExpr.EBool true, None)];
                };
           CustomPlugin.clean
             {
                CustomPlugin.cmd_main =
-                 [(OASISExpr.EBool true, ("omake", ["uninstall"]))];
+                 [
+                    (OASISExpr.EBool true,
+                      ("PREFIX=$prefix", ["omake"; "uninstall"]))
+                 ];
                cmd_clean = [(OASISExpr.EBool true, None)];
                cmd_distclean = [(OASISExpr.EBool true, None)];
                }
                CustomPlugin.cmd_main =
                  [
                     (OASISExpr.EBool true,
-                      ("yes", ["no"; "|"; "omake"; "--install;"; "omake"]))
+                      (".",
+                        [
+                           "yes";
+                           "no";
+                           "|";
+                           "omake";
+                           "--install;";
+                           "PREFIX=$prefix";
+                           "omake"
+                        ]))
                  ];
                cmd_clean = [(OASISExpr.EBool true, None)];
                cmd_distclean = [(OASISExpr.EBool true, None)];
           CustomPlugin.distclean
             {
                CustomPlugin.cmd_main =
-                 [(OASISExpr.EBool true, ("omake", ["install"]))];
+                 [
+                    (OASISExpr.EBool true,
+                      ("PREFIX=$prefix", ["omake"; "install"]))
+                 ];
                cmd_clean = [(OASISExpr.EBool true, None)];
                cmd_distclean = [(OASISExpr.EBool true, None)];
                };
           CustomPlugin.distclean
             {
                CustomPlugin.cmd_main =
-                 [(OASISExpr.EBool true, ("omake", ["uninstall"]))];
+                 [
+                    (OASISExpr.EBool true,
+                      ("PREFIX=$prefix", ["omake"; "uninstall"]))
+                 ];
                cmd_clean = [(OASISExpr.EBool true, None)];
                cmd_distclean = [(OASISExpr.EBool true, None)];
                }
           maintainers = [];
           authors = ["Jun FURUSE"];
           homepage = None;
-          synopsis =
-            "A tool to facilitate the installation of OCaml annotation files.";
+          synopsis = "SpotInstall : a tool to install annot files";
           description = None;
           categories = [];
           conf_type = (`Configure, "internal", Some "0.3");
           };
      oasis_fn = Some "_oasis";
      oasis_version = "0.3.0";
-     oasis_digest = Some "\145a\006\006E\240\2552\203_\204\022-\234\025\232";
+     oasis_digest = Some "\154\193\129&\193o\162\191A\159~\014SrgI";
      oasis_exec = None;
      oasis_setup_args = [];
      setup_update = false;
 
 let setup () = BaseSetup.setup setup_t;;
 
-# 5536 "setup.ml"
+# 5580 "setup.ml"
 (* OASIS_STOP *)
 let () = setup ();;