From 066022aa8a88cf9ac25318e588888574c4edf70a Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 22 Sep 2015 11:21:31 +0200 Subject: [PATCH] move install file to asciidoc --- INSTALL => INSTALL.adoc | 153 ++++++++++++++++++++++------------------ 1 file changed, 83 insertions(+), 70 deletions(-) rename INSTALL => INSTALL.adoc (83%) diff --git a/INSTALL b/INSTALL.adoc similarity index 83% rename from INSTALL rename to INSTALL.adoc index a83bbd3bd..dabe8cfe1 100644 --- a/INSTALL +++ b/INSTALL.adoc @@ -1,7 +1,6 @@ - Installing OCaml on a Unix machine - ---------------------------------- += Installing OCaml on a Unix machine = -PREREQUISITES +== PREREQUISITES * The GNU C compiler gcc is recommended, as the bytecode interpreter takes advantage of gcc-specific features to enhance @@ -21,43 +20,43 @@ PREREQUISITES export GNUMAKE=gmake -INSTALLATION INSTRUCTIONS +== INSTALLATION INSTRUCTIONS -1- Configure the system. From the top directory, do: +1. Configure the system. From the top directory, do: ./configure - ++ This generates the three configuration files "Makefile", "m.h" and "s.h" in the config/ subdirectory. - -The "configure" script accepts the following options: - --prefix (default: /usr/local) ++ +The `configure` script accepts the following options: ++ +-prefix :: (default: '/usr/local') Set the PREFIX variable used to define the defaults of the following three options. Must be an absolute path name. --bindir (default: $(PREFIX)/bin) +-bindir :: (default: '$(PREFIX)/bin') Directory where the binaries will be installed. Must be an absolute path name, or start with "$(PREFIX)" --libdir (default: $(PREFIX)/lib/ocaml) +-libdir :: (default: '$(PREFIX)/lib/ocaml') Directory where the OCaml library will be installed Must be an absolute path name, or start with "$(PREFIX)" --mandir (default: $(PREFIX)/man/man1) +-mandir :: (default: '$(PREFIX)/man/man1') Directory where the manual pages will be installed Must be an absolute path name, or start with "$(PREFIX)" --cc (default: gcc if available, cc otherwise) +-cc :: (default: gcc if available, cc otherwise) C compiler to use for building the system --libs (default: none) +-libs :: (default: none) Extra libraries to link with the system --no-curses +-no-curses:: Do not use the curses library. --host (default: determined automatically) +-host :: (default: determined automatically) The type of the host machine, in GNU's "configuration name" format (CPU-COMPANY-SYSTEM or CPU-COMPANY-KERNEL-SYSTEM). This info is generally determined automatically by the @@ -65,7 +64,7 @@ The "configure" script accepts the following options: hand. The installation instructions for gcc or emacs contain a complete list of configuration names. --target (default: same as -host) +-target :: (default: same as -host) The type of the target machine, in GNU's "configuration name" format (CPU-COMPANY-SYSTEM or CPU-COMPANY-KERNEL-SYSTEM). Setting this will setup OCaml as a cross-compiler which runs on @@ -74,138 +73,148 @@ The "configure" script accepts the following options: compiler of the exact same version (if you want a cross 4.00.1, you need a native 4.00.1). --x11include (default: determined automatically) --x11lib (default: determined automatically) +-x11include :: (default: determined automatically) +-x11lib :: (default: determined automatically) Location of the X11 include directory (e.g. /usr/X11R6/include) and the X11 library directory (e.g. /usr/X11R6/lib). --no-pthread +-no-pthread:: Do not attempt to use POSIX threads. --with-pthread +-with-pthread:: Attempt to use POSIX threads (this is the default). --no-shared-libs +-no-shared-libs:: Do not configure support for shared libraries --dldefs --dllibs +-dldefs :: +-dllibs :: These options specify where to find the libraries for dynamic linking (i.e. use of shared libraries). "-dldefs" specifies options for finding the header files, and "-dllibs" for finding the C libraries. --as (default: determined automatically) +-as :: (default: determined automatically) The assembler to use for assembling ocamlopt-generated code. --aspp (default: determined automatically) +-aspp :: (default: determined automatically) The assembler to use for assembling the parts of the run-time system manually written in assembly language. This assembler must preprocess its input with the C preprocessor. --with-debug-runtime +-with-debug-runtime:: Compile and install the debug version of the runtimes, useful for debugging C stubs and other low-level code. --verbose +-verbose:: Verbose output of the configuration tests. Use it if the outcome of configure is not what you were expecting. --no-debugger +-no-debugger:: Do not build ocamldebug. --no-ocamldoc +-no-ocamldoc:: Do not build ocamldoc. --no-ocamlbuild +-no-ocamlbuild:: Do not build ocamlbuild. --no-graph +-no-graph:: Do not compile the Graphics library. --partialld (default: determined automatically) +-partialld :: (default: determined automatically) The linker and options to use for producing an object file (rather than an executable) from several other object files. --no-cfi +-no-cfi:: Do not compile support for CFI directives. - ++ Examples: - Standard installation in /usr/{bin,lib,man} instead of /usr/local: +* Standard installation in /usr/{bin,lib,man} instead of /usr/local: ./configure -prefix /usr - Installation in /usr, man pages in section "l": + +* Installation in /usr, man pages in section "l": + ./configure -bindir /usr/bin -libdir /usr/lib/ocaml -mandir /usr/man/manl - or: ++ +or: + ./configure -prefix /usr -mandir '$(PREFIX)/man/manl' - On a Linux x86-64 host, to build a 32-bit version of OCaml: +* On a Linux x86-64 host, to build a 32-bit version of OCaml: + ./configure -cc "gcc -m32" -as "as --32" -aspp "gcc -m32 -c" \ -host i386-linux -partialld "ld -r -melf_i386" - On a Linux x86-64 host, to build the run-time system in PIC mode, +* On a Linux x86-64 host, to build the run-time system in PIC mode, no special options should be required---the libraries should be built automatically. The old instructions were: - ./configure -cc "gcc -fPIC" -aspp "gcc -c -fPIC" + ./configure -cc "gcc -fPIC" -aspp "gcc -c -fPIC" ++ On a 64-bit POWER architecture host running Linux, OCaml only operates in a 32-bit environment. If your system compiler is configured as 32-bit, e.g. Red Hat 5.9, you don't need to do anything special. If that is not the case (e.g. Red Hat 6.4), then IBM's "Advance Toolchain" can be used. For example: + export PATH=/opt/at7.0/bin:$PATH ./configure -cc "gcc -m32" -as "as -a32" -aspp "gcc -m32 -c" \ -partialld "ld -r -m elf32ppc" - On a MacOSX 10.5/Intel Core 2 or MacOSX 10.5/PowerPC host, +* On a MacOSX 10.5/Intel Core 2 or MacOSX 10.5/PowerPC host, to build a 64-bit version of OCaml: ./configure -cc "gcc -m64" - On Intel Mac OS X, to build a 32-bit version of OCaml: +* On Intel Mac OS X, to build a 32-bit version of OCaml: + ./configure -host "i386-apple-darwin13.2.0" -cc "gcc -arch i386 -m32" \ -as "as -arch i386" -aspp "gcc -arch i386 -m32 -c" - For Sun Solaris with the "acc" compiler: +* For Sun Solaris with the "acc" compiler: + ./configure -cc "acc -fast" -libs "-lucb" - For Sun Solaris on Sparc 64bit, to compile natively (32bit only) +* For Sun Solaris on Sparc 64bit, to compile natively (32bit only) + ./configure -cc "gcc -m32" -as "as -32" -aspp "gcc -m32 -c" - For AIX 4.3 with the IBM compiler xlc: +* For AIX 4.3 with the IBM compiler xlc: + ./configure -cc "xlc_r -D_AIX43 -Wl,-bexpall,-brtl -qmaxmem=8192" - - ++ If something goes wrong during the automatic configuration, or if the generated files cause errors later on, then look at the template files config/Makefile-templ config/m-templ.h config/s-templ.h - ++ for guidance on how to edit the generated files by hand. -2- From the top directory, do: +2. From the top directory, do: make world - ++ This builds the OCaml bytecode compiler for the first time. This phase is fairly verbose; consider redirecting the output to a file: make world > log.world 2>&1 # in sh make world >& log.world # in csh -3- (Optional) To be sure everything works well, you can try to +3. (Optional) To be sure everything works well, you can try to bootstrap the system --- that is, to recompile all OCaml sources with the newly created compiler. From the top directory, do: make bootstrap - ++ or, better: make bootstrap > log.bootstrap 2>&1 # in sh make bootstrap >& log.bootstrap # in csh - ++ The "make bootstrap" checks that the bytecode programs compiled with the new compiler are identical to the bytecode programs compiled with the old compiler. If this is the case, you can be pretty sure the @@ -215,21 +224,23 @@ a second bootstrapping phase: just do "make bootstrap" again. It will either crash almost immediately, or re-re-compile everything correctly and reach the fixpoint. -4- If your platform is supported by the native-code compiler (as +4. If your platform is supported by the native-code compiler (as reported during the autoconfiguration), you can now build the native-code compiler. From the top directory, do: make opt ++ or: + make opt > log.opt 2>&1 # in sh make opt >& log.opt # in csh -5- Compile fast versions of the OCaml compilers, by compiling them +5. Compile fast versions of the OCaml compilers, by compiling them with the native-code compiler (you have only compiled them to bytecode so far). Just do: make opt.opt - ++ Later, you can compile your programs to bytecode using ocamlc.opt instead of ocamlc, and to native-code using ocamlopt.opt instead of ocamlopt. The ".opt" compilers should run faster than the normal @@ -237,15 +248,15 @@ compilers, especially on large input files, but they may take longer to start due to increased code size. If compilation times are an issue on your programs, try the ".opt" compilers to see if they make a significant difference. - ++ An alternative, and faster approach to steps 2 to 5 is make world.opt # to build using native-code compilers - ++ The result is equivalent to "make world opt opt.opt", but this may fail if anything goes wrong in native-code generation. -6- You can now install the OCaml system. This will create the +6. You can now install the OCaml system. This will create the following commands (in the binary directory selected during autoconfiguration): @@ -262,38 +273,40 @@ autoconfiguration): ocamldoc documentation generator ocamlprof execution count profiler ocamlcp the bytecode compiler in profiling mode - ++ and also, if you built them during step 5, ocamlc.opt the batch bytecode compiler compiled with ocamlopt ocamlopt.opt the batch native-code compiler compiled with ocamlopt ocamllex.opt the lexer generator compiled with ocamlopt - ++ From the top directory, become superuser and do: umask 022 # make sure to give read & execute permission to all make install -7- Installation is complete. Time to clean up. From the toplevel +7. Installation is complete. Time to clean up. From the toplevel directory, do "make clean". -8- (Optional) The emacs/ subdirectory contains Emacs-Lisp files for an +8. (Optional) The emacs/ subdirectory contains Emacs-Lisp files for an OCaml editing mode and an interface for the debugger. To install these files, change to the emacs/ subdirectory and do make EMACSDIR= install ++ or - make install + make install ++ In the latter case, the destination directory defaults to the "site-lisp" directory of your Emacs installation. -9- After installation, do *not* strip the ocamldebug and ocamlbrowser +9. After installation, do *not* strip the ocamldebug and ocamlbrowser executables. (These are mixed-mode executables, containing both compiled C code and OCaml bytecode; stripping erases the bytecode!) Other executables such as ocamlrun can safely be stripped. -IF SOMETHING GOES WRONG: +== IF SOMETHING GOES WRONG Read the "common problems" and "machine-specific hints" section at the end of this file. @@ -314,12 +327,12 @@ another C compiler (e.g. gcc instead of the vendor-supplied cc). You can also build a debug version of the runtime system. Go to the byterun/ directory and do "make ocamlrund". Then, copy ocamlrund to -../boot/ocamlrun, and try again. This version of the runtime system +'../boot/ocamlrun', and try again. This version of the runtime system contains lots of assertions and sanity checks that could help you pinpoint the problem. -COMMON PROBLEMS: +== COMMON PROBLEMS * The Makefiles do not support parallel make (e.g. make -j2). Fix: do not pass the -j option to make, and be patient.