summaryrefslogtreecommitdiffstats
path: root/ocamldoc
diff options
context:
space:
mode:
authorAdrien Nader <adrien@notk.org>2015-02-08 18:59:24 +0100
committerAdrien Nader <adrien@notk.org>2015-02-08 18:59:24 +0100
commit9aa69ae40db1cf8484d0caadb1da2d88f2038ddc (patch)
tree07b097cf00935b2437f934e5b4817a221f17af16 /ocamldoc
parent8fd3507127ac683825ccba3d98ad3048525b2acc (diff)
debugger, ocamlbuild, ocamldoc: separate their build from the compiler's.HEADmaster
In other words: "make world" doesn't build the aforementioned tools anymore and they need to be configured and built separately. They are still in the same source tree. At first sight this should lead to more work but there are _several_ reasons for such a split. * It dissociates the builds and therefore the breakage when doing changes in the build system. * It makes changing one of them simpler. * It simplifies the Makefile files and removes some needs for the UNIX_OR_WIN32 variable. * It removes the Makefile.nt files and enables the build of the manpages on Windows too. * It builds these tools using the .opt variants when possible. This doesn't save that much time but it's nice nonetheless. * It's simpler to package for distributions which already split these tools to their own packages. * It simplifies cross-compilation by reducing the scope of the changes needed (i.e. I hope there won't be a need for more changes in the build systems of these tools). * It refers less to boot/ and should make bootstrapping at least a bit simpler (I can't tell how much but in any case it's not negative). As for the negative aspects: * Possibly more steps for compiler hackers in the "hot path". * A hand-written "configure_tool" script which creates a "Makefile.local" file which is include'ed from the Makefile files and which defines the invocation of the compiler and of other tools. After these changes, there are two ways to build the tools: whether OCaml is installed system-wide or not (i.e. "uninstalled" [ I'm not to be blamed for this terminology ]). If the compiler has been installed (typical for packagers): ./configure_tool debugger make -C debugger all If the compiler has not been installed (probably typical for compiler devs even though I'm not sure most don't disable the build of the tools when doing their development): UNINSTALLED_OCAML_DESTDIR=$(pwd)/lapin UNINSTALLED_OCAML_PREFIX=/usr ./configure_tool debugger make -C debugger all In the example directly above, UNINSTALLED_OCAML_PREFIX defaults to "/usr/local" (the default for the compiler build too) and must match. UNINSTALLED_OCAML_DESTDIR has no default and must be the same as the value used for DESTDIR when running "make install DESTDIR=$(pwd)/lapin" for the compiler. Providing an absolute path, while not mandatory, is saner. Comments are welcome on how to make the whole process more handy for you (yes, "you", the reader, whoever you are).
Diffstat (limited to 'ocamldoc')
-rw-r--r--ocamldoc/.depend26
-rw-r--r--ocamldoc/Makefile10
-rw-r--r--ocamldoc/Makefile.nt253
-rw-r--r--ocamldoc/runocamldoc23
4 files changed, 14 insertions, 298 deletions
diff --git a/ocamldoc/.depend b/ocamldoc/.depend
index ec461d73d..5a2df26c5 100644
--- a/ocamldoc/.depend
+++ b/ocamldoc/.depend
@@ -1,3 +1,11 @@
+odoc.cmo : ../typing/typedtree.cmi odoc_messages.cmo odoc_info.cmi \
+ odoc_global.cmi odoc_gen.cmi odoc_config.cmi odoc_args.cmi \
+ odoc_analyse.cmi ../utils/misc.cmi ../utils/config.cmi \
+ ../utils/clflags.cmi
+odoc.cmx : ../typing/typedtree.cmx odoc_messages.cmx odoc_info.cmx \
+ odoc_global.cmx odoc_gen.cmx odoc_config.cmx odoc_args.cmx \
+ odoc_analyse.cmx ../utils/misc.cmx ../utils/config.cmx \
+ ../utils/clflags.cmx
odoc_analyse.cmo : ../utils/warnings.cmi ../typing/types.cmi \
../typing/typemod.cmi ../typing/typedtree.cmi ../parsing/syntaxerr.cmi \
../driver/pparse.cmi ../parsing/parse.cmi odoc_types.cmi odoc_text.cmi \
@@ -44,8 +52,6 @@ odoc_class.cmo : ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
odoc_parameter.cmo odoc_name.cmi
odoc_class.cmx : ../typing/types.cmx odoc_value.cmx odoc_types.cmx \
odoc_parameter.cmx odoc_name.cmx
-odoc_comments_global.cmo : odoc_comments_global.cmi
-odoc_comments_global.cmx : odoc_comments_global.cmi
odoc_comments.cmo : odoc_types.cmi odoc_text.cmi odoc_see_lexer.cmo \
odoc_parser.cmi odoc_misc.cmi odoc_messages.cmo odoc_merge.cmi \
odoc_lexer.cmo odoc_global.cmi odoc_cross.cmi odoc_comments_global.cmi \
@@ -54,6 +60,8 @@ odoc_comments.cmx : odoc_types.cmx odoc_text.cmx odoc_see_lexer.cmx \
odoc_parser.cmx odoc_misc.cmx odoc_messages.cmx odoc_merge.cmx \
odoc_lexer.cmx odoc_global.cmx odoc_cross.cmx odoc_comments_global.cmx \
odoc_comments.cmi
+odoc_comments_global.cmo : odoc_comments_global.cmi
+odoc_comments_global.cmx : odoc_comments_global.cmi
odoc_config.cmo : ../utils/config.cmi odoc_config.cmi
odoc_config.cmx : ../utils/config.cmx odoc_config.cmi
odoc_control.cmo :
@@ -144,14 +152,6 @@ odoc_misc.cmo : ../typing/types.cmi ../typing/predef.cmi ../typing/path.cmi \
odoc_misc.cmx : ../typing/types.cmx ../typing/predef.cmx ../typing/path.cmx \
odoc_types.cmx odoc_messages.cmx ../parsing/longident.cmx \
../typing/ctype.cmx ../typing/btype.cmx odoc_misc.cmi
-odoc.cmo : ../typing/typedtree.cmi odoc_messages.cmo odoc_info.cmi \
- odoc_global.cmi odoc_gen.cmi odoc_config.cmi odoc_args.cmi \
- odoc_analyse.cmi ../utils/misc.cmi ../utils/config.cmi \
- ../utils/clflags.cmi
-odoc.cmx : ../typing/typedtree.cmx odoc_messages.cmx odoc_info.cmx \
- odoc_global.cmx odoc_gen.cmx odoc_config.cmx odoc_args.cmx \
- odoc_analyse.cmx ../utils/misc.cmx ../utils/config.cmx \
- ../utils/clflags.cmx
odoc_module.cmo : ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
odoc_type.cmo odoc_name.cmi odoc_extension.cmo odoc_exception.cmo \
odoc_class.cmo
@@ -214,12 +214,12 @@ odoc_texi.cmo : ../typing/types.cmi odoc_to_text.cmo odoc_messages.cmo \
odoc_info.cmi ../parsing/asttypes.cmi
odoc_texi.cmx : ../typing/types.cmx odoc_to_text.cmx odoc_messages.cmx \
odoc_info.cmx ../parsing/asttypes.cmi
-odoc_text_lexer.cmo : odoc_text_parser.cmi odoc_misc.cmi
-odoc_text_lexer.cmx : odoc_text_parser.cmx odoc_misc.cmx
odoc_text.cmo : odoc_types.cmi odoc_text_parser.cmi odoc_text_lexer.cmo \
odoc_text.cmi
odoc_text.cmx : odoc_types.cmx odoc_text_parser.cmx odoc_text_lexer.cmx \
odoc_text.cmi
+odoc_text_lexer.cmo : odoc_text_parser.cmi odoc_misc.cmi
+odoc_text_lexer.cmx : odoc_text_parser.cmx odoc_misc.cmx
odoc_text_parser.cmo : odoc_types.cmi odoc_misc.cmi odoc_text_parser.cmi
odoc_text_parser.cmx : odoc_types.cmx odoc_misc.cmx odoc_text_parser.cmi
odoc_to_text.cmo : odoc_module.cmo odoc_messages.cmo odoc_info.cmi
@@ -238,8 +238,8 @@ odoc_analyse.cmi : odoc_module.cmo odoc_global.cmi
odoc_args.cmi : odoc_gen.cmi
odoc_ast.cmi : ../typing/types.cmi ../typing/typedtree.cmi \
../parsing/parsetree.cmi odoc_sig.cmi odoc_name.cmi odoc_module.cmo
-odoc_comments_global.cmi :
odoc_comments.cmi : odoc_types.cmi odoc_module.cmo
+odoc_comments_global.cmi :
odoc_config.cmi :
odoc_cross.cmi : odoc_types.cmi odoc_module.cmo
odoc_dag2html.cmi : odoc_info.cmi
diff --git a/ocamldoc/Makefile b/ocamldoc/Makefile
index 828aad062..30f7ebc0e 100644
--- a/ocamldoc/Makefile
+++ b/ocamldoc/Makefile
@@ -10,17 +10,10 @@
#(* *)
#(***********************************************************************)
-include ../config/Makefile
+include Makefile.local
# Various commands and dir
##########################
-ROOTDIR = ..
-OCAMLRUN = $(ROOTDIR)/boot/ocamlrun
-OCAMLC = $(OCAMLRUN) $(ROOTDIR)/ocamlc -nostdlib -I $(ROOTDIR)/stdlib
-OCAMLOPT = $(OCAMLRUN) $(ROOTDIR)/ocamlopt -nostdlib -I $(ROOTDIR)/stdlib
-OCAMLDEP = $(OCAMLRUN) $(ROOTDIR)/tools/ocamldep
-OCAMLLEX = $(OCAMLRUN) $(ROOTDIR)/boot/ocamllex
-OCAMLYACC = $(ROOTDIR)/yacc/ocamlyacc
OCAMLLIB = $(LIBDIR)
OCAMLBIN = $(BINDIR)
@@ -34,7 +27,6 @@ OCAMLPP=-pp "awk 'BEGIN { printf(\"# 1 %s\n\", ARGV[1]); } /DEBUG/ { printf(\"(*
MKDIR=mkdir -p
CP=cp -f
OCAMLDOC=ocamldoc
-OCAMLDOC_RUN=sh ./runocamldoc $(SUPPORTS_SHARED_LIBRARIES)
OCAMLDOC_OPT=$(OCAMLDOC).opt
OCAMLDOC_LIBCMA=odoc_info.cma
OCAMLDOC_LIBCMI=odoc_info.cmi
diff --git a/ocamldoc/Makefile.nt b/ocamldoc/Makefile.nt
deleted file mode 100644
index 22cd36eb0..000000000
--- a/ocamldoc/Makefile.nt
+++ /dev/null
@@ -1,253 +0,0 @@
-#(***********************************************************************)
-#(* *)
-#(* OCamldoc *)
-#(* *)
-#(* Maxence Guesdon, projet Cristal, INRIA Rocquencourt *)
-#(* *)
-#(* Copyright 2001 Institut National de Recherche en Informatique et *)
-#(* en Automatique. All rights reserved. This file is distributed *)
-#(* under the terms of the Q Public License version 1.0. *)
-#(* *)
-#(***********************************************************************)
-
-include ../config/Makefile
-
-# Various commands and dir
-##########################
-ROOTDIR = ..
-OCAMLRUN = $(ROOTDIR)/boot/ocamlrun
-OCAMLC = $(OCAMLRUN) $(ROOTDIR)/ocamlc -nostdlib -I $(ROOTDIR)/stdlib
-OCAMLOPT = $(OCAMLRUN) $(ROOTDIR)/ocamlopt -nostdlib -I $(ROOTDIR)/stdlib
-OCAMLDEP = $(OCAMLRUN) $(ROOTDIR)/tools/ocamldep
-OCAMLLEX = $(OCAMLRUN) $(ROOTDIR)/boot/ocamllex
-OCAMLYACC = $(ROOTDIR)/yacc/ocamlyacc
-OCAMLLIB = $(LIBDIR)
-OCAMLBIN = $(BINDIR)
-
-OCAMLPP=-pp "grep -v DEBUG"
-
-# For installation
-##############
-MKDIR=mkdir
-CP=cp
-OCAMLDOC=ocamldoc
-OCAMLDOC_RUN=$(CAMLRUN) $(OCAMLDOC)
-OCAMLDOC_OPT=$(OCAMLDOC).opt
-OCAMLDOC_LIBCMA=odoc_info.cma
-OCAMLDOC_LIBCMI=odoc_info.cmi
-OCAMLDOC_LIBCMXA=odoc_info.cmxa
-OCAMLDOC_LIBA=odoc_info.$(A)
-INSTALL_LIBDIR=$(DESTDIR)$(OCAMLLIB)/ocamldoc
-INSTALL_CUSTOMDIR=$(INSTALL_LIBDIR)/custom
-INSTALL_BINDIR=$(DESTDIR)$(OCAMLBIN)
-
-INSTALL_MLIS=odoc_info.mli
-INSTALL_CMIS=$(INSTALL_MLIS:.mli=.cmi)
-
-# Compilation
-#############
-OCAMLSRCDIR=..
-INCLUDES_DEP=-I $(OCAMLSRCDIR)/parsing \
- -I $(OCAMLSRCDIR)/utils \
- -I $(OCAMLSRCDIR)/typing \
- -I $(OCAMLSRCDIR)/driver \
- -I $(OCAMLSRCDIR)/bytecomp \
- -I $(OCAMLSRCDIR)/tools \
- -I $(OCAMLSRCDIR)/toplevel/
-
-INCLUDES_NODEP= -I $(OCAMLSRCDIR)/stdlib \
- -I $(OCAMLSRCDIR)/otherlibs/str \
- -I $(OCAMLSRCDIR)/otherlibs/dynlink \
- -I $(OCAMLSRCDIR)/otherlibs/$(UNIXLIB) \
- -I $(OCAMLSRCDIR)/otherlibs/num \
- -I $(OCAMLSRCDIR)/otherlibs/$(GRAPHLIB)
-
-INCLUDES=$(INCLUDES_DEP) $(INCLUDES_NODEP)
-
-COMPFLAGS=$(INCLUDES) -warn-error A -safe-string
-LINKFLAGS=$(INCLUDES) -nostdlib
-
-CMOFILES= odoc_config.cmo \
- odoc_messages.cmo\
- odoc_global.cmo\
- odoc_types.cmo\
- odoc_misc.cmo\
- odoc_text_parser.cmo\
- odoc_text_lexer.cmo\
- odoc_text.cmo\
- odoc_name.cmo\
- odoc_parameter.cmo\
- odoc_value.cmo\
- odoc_type.cmo\
- odoc_extension.cmo\
- odoc_exception.cmo\
- odoc_class.cmo\
- odoc_module.cmo\
- odoc_print.cmo \
- odoc_str.cmo\
- odoc_comments_global.cmo\
- odoc_parser.cmo\
- odoc_lexer.cmo\
- odoc_see_lexer.cmo\
- odoc_env.cmo\
- odoc_merge.cmo\
- odoc_sig.cmo\
- odoc_ast.cmo\
- odoc_control.cmo\
- odoc_inherit.cmo\
- odoc_search.cmo\
- odoc_scan.cmo\
- odoc_cross.cmo\
- odoc_comments.cmo\
- odoc_dep.cmo\
- odoc_analyse.cmo\
- odoc_info.cmo
-
-
-CMXFILES= $(CMOFILES:.cmo=.cmx)
-CMIFILES= $(CMOFILES:.cmo=.cmi)
-
-EXECMOFILES=$(CMOFILES) \
- odoc_dag2html.cmo \
- odoc_to_text.cmo \
- odoc_ocamlhtml.cmo \
- odoc_html.cmo \
- odoc_man.cmo \
- odoc_latex_style.cmo \
- odoc_latex.cmo \
- odoc_texi.cmo \
- odoc_dot.cmo \
- odoc_gen.cmo \
- odoc_args.cmo \
- odoc.cmo
-
-EXECMXFILES= $(EXECMOFILES:.cmo=.cmx)
-EXECMIFILES= $(EXECMOFILES:.cmo=.cmi)
-
-LIBCMOFILES=$(CMOFILES)
-LIBCMXFILES= $(LIBCMOFILES:.cmo=.cmx)
-LIBCMIFILES= $(LIBCMOFILES:.cmo=.cmi)
-
-# Les cmo et cmx de la distrib OCAML
-OCAMLCMOFILES= \
- $(OCAMLSRCDIR)/tools/depend.cmo
-
-OCAMLCMXFILES=$(OCAMLCMOFILES:.cmo=.cmx)
-
-all:
- $(MAKEREC) exe
- $(MAKEREC) lib
-
-exe: $(OCAMLDOC)
-lib: $(OCAMLDOC_LIBCMA) $(OCAMLDOC_LIBCMI)
-
-opt.opt: exeopt libopt
-exeopt: $(OCAMLDOC_OPT)
-libopt: $(OCAMLDOC_LIBCMXA) $(OCAMLDOC_LIBCMI)
-
-debug:
- $(MAKEREC) OCAMLPP=""
-
-$(OCAMLDOC): $(EXECMOFILES)
- $(OCAMLC) -o $@ -linkall unix.cma str.cma dynlink.cma \
- $(OCAMLSRCDIR)/compilerlibs/ocamlcommon.cma \
- $(LINKFLAGS) $(OCAMLCMOFILES) $(EXECMOFILES)
-$(OCAMLDOC_OPT): $(EXECMXFILES)
- $(OCAMLOPT) -o $@ -linkall unix.cmxa str.cmxa dynlink.cmxa \
- $(OCAMLSRCDIR)/compilerlibs/ocamlcommon.cmxa \
- $(LINKFLAGS) $(OCAMLCMXFILES) $(EXECMXFILES)
-
-$(OCAMLDOC_LIBCMA): $(LIBCMOFILES)
- $(OCAMLC) -a -o $@ $(LINKFLAGS) $(OCAMLSRCDIR)/tools/depend.cmo \
- $(LIBCMOFILES)
-$(OCAMLDOC_LIBCMXA): $(LIBCMXFILES)
- $(OCAMLOPT) -a -o $@ $(LINKFLAGS) $(OCAMLSRCDIR)/tools/depend.cmx \
- $(LIBCMXFILES)
-
-# Parsers and lexers dependencies :
-###################################
-odoc_text_parser.ml: odoc_text_parser.mly
-odoc_text_parser.mli: odoc_text_parser.mly
-
-odoc_parser.ml: odoc_parser.mly
-odoc_parser.mli:odoc_parser.mly
-
-odoc_text_lexer.ml: odoc_text_lexer.mll
-
-odoc_lexer.ml:odoc_lexer.mll
-
-odoc_ocamlhtml.ml: odoc_ocamlhtml.mll
-
-odoc_see_lexer.ml: odoc_see_lexer.mll
-
-
-# generic rules :
-#################
-
-.SUFFIXES: .mll .mly .ml .mli .cmo .cmi .cmx .cmxs
-
-.ml.cmo:
- $(OCAMLC) $(OCAMLPP) $(COMPFLAGS) -c $<
-
-.mli.cmi:
- $(OCAMLC) $(OCAMLPP) $(COMPFLAGS) -c $<
-
-.ml.cmx:
- $(OCAMLOPT) $(OCAMLPP) $(COMPFLAGS) -c $<
-
-.ml.cmxs:
- $(OCAMLOPT) -shared -o $@ $(OCAMLPP) $(COMPFLAGS) $<
-
-.mll.ml:
- $(OCAMLLEX) $<
-
-.mly.ml:
- $(OCAMLYACC) -v $<
-
-.mly.mli:
- $(OCAMLYACC) -v $<
-
-# Installation targets
-######################
-install: dummy
- $(MKDIR) -p $(INSTALL_BINDIR)
- $(MKDIR) -p $(INSTALL_LIBDIR)
- $(CP) $(OCAMLDOC) $(INSTALL_BINDIR)/$(OCAMLDOC)$(EXE)
- $(CP) ocamldoc.hva *.cmi $(OCAMLDOC_LIBCMA) $(INSTALL_LIBDIR)
- $(CP) $(INSTALL_MLIS) $(INSTALL_CMIS) $(INSTALL_LIBDIR)
-
-installopt:
- if test -f $(OCAMLDOC_OPT); then $(MAKEREC) installopt_really; fi
-
-installopt_really:
- $(MKDIR) -p $(INSTALL_BINDIR)
- $(MKDIR) -p $(INSTALL_LIBDIR)
- $(CP) $(OCAMLDOC_OPT) $(INSTALL_BINDIR)/$(OCAMLDOC_OPT)$(EXE)
- $(CP) ocamldoc.hva $(OCAMLDOC_LIBA) $(OCAMLDOC_LIBCMXA) $(INSTALL_LIBDIR)
- $(CP) $(INSTALL_MLIS) $(INSTALL_CMIS) $(INSTALL_LIBDIR)
-
-
-# backup, clean and depend :
-############################
-
-clean:: dummy
- @rm -f *~ \#*\#
- @rm -f $(OCAMLDOC) $(OCAMLDOC_OPT) *.cma *.cmxa *.cmo *.cmi *.cmx *.$(A) *.$(O)
- @rm -f odoc_parser.output odoc_text_parser.output
- @rm -f odoc_lexer.ml odoc_text_lexer.ml odoc_see_lexer.ml odoc_ocamlhtml.ml
- @rm -f odoc_parser.ml odoc_parser.mli odoc_text_parser.ml odoc_text_parser.mli
- @rm -rf stdlib_man
- @rm -f generators/*.cm[aiox] generators/*.$(A) generators/*.$(O) generators/*.cmx[as]
-
-depend::
- $(OCAMLYACC) odoc_text_parser.mly
- $(OCAMLYACC) odoc_parser.mly
- $(OCAMLLEX) odoc_text_lexer.mll
- $(OCAMLLEX) odoc_lexer.mll
- $(OCAMLLEX) odoc_ocamlhtml.mll
- $(OCAMLLEX) odoc_see_lexer.mll
- $(OCAMLDEP) $(INCLUDES_DEP) *.mll *.mly *.ml *.mli > .depend
-
-dummy:
-
-include .depend
diff --git a/ocamldoc/runocamldoc b/ocamldoc/runocamldoc
deleted file mode 100644
index d2112e9cd..000000000
--- a/ocamldoc/runocamldoc
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-#######################################################################
-# #
-# OCaml #
-# #
-# Xavier Leroy, projet Cristal, INRIA Rocquencourt #
-# #
-# Copyright 2002 Institut National de Recherche en Informatique et #
-# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the Q Public License version 1.0. #
-# #
-#######################################################################
-
-case "$1" in
- true) shift
- exec ../boot/ocamlrun -I ../otherlibs/unix -I ../otherlibs/str \
- ./ocamldoc "$@"
- ;;
- *) shift
- exec ./ocamldoc "$@"
- ;;
-esac