Plasma GitLab Archive
Projects Blog Knowledge

******************************************************************************
INSTALL - Build instructions for WDialog
******************************************************************************


==============================================================================
Build instructions for the WDialog core
==============================================================================

The following text describes how to compile and install the core of WDialog. 
Later you will find instructions for the Perl bindings.

------------------------------------------------------------------------------
Prerequisites
------------------------------------------------------------------------------

-  In general, a UNIX-conforming operating system is required. The UNIX tools 
   like sed, grep, etc. are needed to build WDialog; furthermore, some parts of 
   the software rely on the strict and well-known semantics of a UNIX operating 
   system. (Linux and the BSD variants are counted as UNIX, here.)
   
-  The build system uses the GNU make tool. It is unlikely that other versions 
   of the make tool work.
   
-  You need Objective Caml [1] version 3.04 or later. The minimal requirement 
   is the bytecode compiler, the native-code compiler is optional (not needed 
   for the Perl bindings). It is recommended to enable dynamic loading of 
   shared libraries (if supported on your platform; this is a requirement for 
   the Perl bindings). Don't delete the source tree after installation if you 
   want to make the Perl bindings. 
   
-  Once you have Caml, don't forget to add the bin directory to your PATH, so 
   the compiler can be found.
   
-  Next, you need the findlib library, available on Gerd Stolpmann's site about 
   Caml [2]. Use the latest version.
   
-  Next, you need Markus Mottl's bindings of Philip Hazel's PCRE library. 
   Download both here [3]. Important: Build the library with "make 
   NO_CUSTOM=y", especially if you want to make the Perl bindings, too. 
   
-  Next, you need the Ocamlnet [4] library. The library parts "netstring" and 
   "cgi" are required. 
   
-  Next, you need Alain Frisch's ulex [5] lexer generator.
   
-  Next, you need PXP, the XML parser for Caml. It is available on Gerd 
   Stolpmann's site about Caml [6], too. Version 1.1.3 or later is required.
   
-  Optional: For the session daemon you also need the Inifiles [7] library.
   
You should now be able to compile WDialog.

------------------------------------------------------------------------------
Configuration
------------------------------------------------------------------------------

There is a configure script in the distribution. If you only want to make the 
Caml library, just call 

./configure

and see what it finds out. You can get a list of all options by running 

./configure -help

However, options are normally not necessary because the tool findlib provides 
an automatic way to locate the prerequisites.

For the Perl bindings, you also have to specify -with-perl, and you must pass 
the path of the directory ocaml-3.04 containing the Caml sources: 
-ocamltree /path/to/ocaml-3.04

Furthermore, you can specify a directory that will contain dynamically loaded 
libraries (default is /usr/local/libexec/wdialog): 
-perl-libdir /path/to/dir



------------------------------------------------------------------------------
Compile
------------------------------------------------------------------------------

To make the bytecode version of the libraries and the tools, run 

make all

from the top-level directory of the distribution. If you have ocamlopt, the 
native-code compiler, you can additionally run 

make opt

and compile Wdialog to native machine code. It is not possible to leave the 
bytecode libraries out. 

If you have configured the Perl bindings, these will not be made by one of 
these commands!

------------------------------------------------------------------------------
Install
------------------------------------------------------------------------------

Now run 

make install

to install one or both versions of the libraries and tools. You may wonder 
where they are installed. This is determined by findlib, and you can run 

ocamlfind printconf

to view the configuration of findlib. Look under "Packages will be installed 
in/removed from:". This directory will contain a subsdirectory for every major 
part that is installed (wdialog, wdialog-p4, wdialog-perlguts, wd-xmlcompiler, 
ocamlrun-dso, potentially more). "make install" is quite verbose, so just look 
at its output to get the details.

------------------------------------------------------------------------------
Uninstall
------------------------------------------------------------------------------

If you are totally disappointed, you can get rid of WDialog by removing all 
parts: 

make uninstall

- or by running 

ocamlfind remove name-of-part

for the individual parts. 

==============================================================================
Build instructions for the Perl Bindings
==============================================================================

------------------------------------------------------------------------------
Prerequisities
------------------------------------------------------------------------------

-  It is required that the WDialog core is compiled and installed. Furthermore, 
   it is strictly required that WDialog can be dynamically loaded. You can test 
   this by running (the paths may differ on your system): 
   
   ocaml
           Objective Caml version 3.04
   
   # #use "topfind";;
   Findlib has been successfully loaded. Additional directives:
     #require "package";;      to load a package
     #list;;                   to list the available packages
     #camlp4o;;                to load camlp4 (standard syntax)
     #camlp4r;;                to load camlp4 (revised syntax)
     Topfind.reset();;         to force that packages will be reloaded
   
   - : unit = ()
   # #require "wdialog";;
   Loading /opt/ocaml-3.04/site-lib/pcre/pcre.cma
   Loading /opt/ocaml-3.04/lib/unix.cma
   Loading /opt/ocaml-3.04/site-lib/netstring/netstring.cma
   Loading /opt/ocaml-3.04/site-lib/netstring/netmappings_iso.cmo
   Loading /opt/ocaml-3.04/site-lib/netstring/netmappings_other.cmo
   Loading /opt/ocaml-3.04/site-lib/netstring/netstring_top.cmo
   Loading /opt/ocaml-3.04/site-lib/pxp-engine/pxp_engine.cma
   Loading /opt/ocaml-3.04/site-lib/cgi/cgi.cma
   Loading /opt/ocaml-3.04/site-lib/pxp-lex-iso88591/pxp_lex_iso88591.cma
   Loading /opt/ocaml-3.04/site-lib/pxp-lex-iso88591/pxp_lex_link_iso88591.cmo
   Loading /opt/ocaml-3.04/site-lib/pxp-lex-utf8/pxp_lex_utf8.cma
   Loading /opt/ocaml-3.04/site-lib/pxp-lex-utf8/pxp_lex_link_utf8.cmo
   Loading /opt/ocaml-3.04/site-lib/wdialog/wdialog.cma
   # #quit;;
   
   It is important that you do not get any error message.
   
-  The build system currently requires a GNU environment (gcc). It is possible 
   to port it to another type of operating system. Furthermore, it is required 
   that the linker honours LD_RUN_PATH (and that gcc does not delete 
   LD_RUN_PATH; some versions do). 
   
-  I have tested it on Linux and Solaris, and with Perl 5.6.1.
   
-  Wdialog must have been configured with the options -with-perl, and 
   -ocamltree. Note that -with-perl implies -with-wdialog-perlguts, and that a 
   dynamically loadable version of the Caml bytecode interpreter will be 
   compiled. So "make all" will additionally build the components 
   "wdialog-perlguts" and "ocamlrun-dso".
   
-  You need camlidl, available on the Caml homepage [8]. Follow the special 
   instructions below to compile and install it.
   
-  Note that "make install" will install libraries in the directory specified 
   by -perl-libdir.
   
------------------------------------------------------------------------------
Compile
------------------------------------------------------------------------------

Just enter 

make perlapi

This will create a directory hierarchy under src/UI/blib.

------------------------------------------------------------------------------
Install
------------------------------------------------------------------------------

Run 

make install-perlapi

to install it as Perl package. Furthermore, this command installs a number of 
O'Caml stub libraries into the -perl-libdir directory, in addition to the 
libraries that can already be found there. The Perl modules are dependent on 
these libraries, so make sure this directory is available when running Perl 
programs. The Perl installation is independent of the O'Caml installation. 

==============================================================================
Special instructions for camlidl (1.02)
==============================================================================

Important: Version 1.04 of camlidl does not work (yet).

After unpacking the tar archive, do: 

cd config
cp Makefile.unix Makefile

Edit the Makefile, and set the following variables properly: OCAMLLIB (to the 
output of "ocamlc -where"), BINDIR (where the tool camlidl will be installed; 
in doubt use the same directory as for "ocamlc").

Create a file runtime/dummies.c with the one-line contents: 

int IID_IUnknown;

Change the "OBJS=" line in runtime/Makefile.unix to 

OBJS=idlalloc.o comintf.o comerror.o dummies.o



You can now do (in the top-level directory of the distribution): 

make all

- but this does not suffice, because this only builds the static version of the 
library. Do: 

cd runtime
ocamlmklib -o camlidl idlalloc.o comintf.o comerror.o dummies.o
cd ../lib
ocamlmklib -o com -oc camlidl com.cmo
ocamlmklib -o com -oc camlidl com.cmx



Installation: Go back to the top-level directory, and create a file called META 
with the following contents: 

requires = ""
version = "1.02"
directory = "^"
browse_interfaces = "Com"
archive(byte) = "com.cma"
archive(native) = "com.cmxa"

Install with 

make install

(installs in the standard library directory of Caml), followed by 

(O'Caml 3.04:) cp runtime/dllcamlidl.so $OCAMLLIB
(O'Caml 3.06:) cp runtime/dllcamlidl.so $OCAMLLIB/stublibs

(replace $OCAMLLIB by the path you entered in the Makefile), followed by 

ocamlfind install camlidl META

such that findlib knows about camlidl. 


--------------------------

[1]   see http://caml.inria.fr

[2]   see http://www.camlcity.org

[3]   see http://www.ocaml.info/home/ocaml_sources.html

[4]   see http://projects.camlcity.org/projects/ocamlnet.html

[5]   see http://alain.frisch.fr/soft.html

[6]   see http://www.camlcity.org

[7]   see http://www.csun.edu/~eric

[8]   see http://caml.inria.fr




This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml