Re: Portability of applications written in OCAML: C stuff

From: Markus Mottl (mottl@miss.wu-wien.ac.at)
Date: Wed Feb 23 2000 - 19:31:30 MET

  • Next message: Damien Doligez: "Re: Calling C from OCaml, GC problems"

    > The way these packages are distributed is a 'build in separate
    > directory and install' model. This is NOT acceptable for my
    > package. I require all components to be built and usable
    > WITHOUT installing them (with one exception: the standard ocaml (and
    > python)
    > distributions).

    Hm, I don't know about "mlgtk", but what concerns the PCRE, you need not
    install it anywhere to use it. The only thing you have to do is place
    directory "{whatever}/pcre_ocaml/pcre-OCaml" on the include- and the
    library path when you compile/link your project.

    In case you also use my "OcamlMakefile", this should be fairly easy, e.g.
    add something like:

      INCDIRS = ../../pcre-OCaml
      LIBDIRS = ../../pcre-OCaml
      LIBS = pcre

    > [In other words I must distribute IN MY PACKAGE everything
    > which is not stock standard in the official ocaml distribution,
    > and a single command must build the whole system]

    I don't see any problem here - just "entering" into the directory of the
    "third-party" distribution, "making" and including the directory with the
    generated libraries should work fine.

    > 1. DO NOT USE A FILE CALLED 'config.h'
    >
    > Such a file will clobber someone elses config.h
    > Pleae call these files 'pcre_config.h' or 'gdk_config.h'
    > or whatever.

    "config.h" is generated by "configure" automatically and is actually part
    of the C-library "pcre", which I always copy verbatim from its author.
    Unless you also copy this "configure"-script out of its assigned directory
    into your source dir, it won't do any harm to your files.

    > PLEASE use filenames that are specialised to your package,
    > do NOT use generic names on the assumption your code will
    > be built with your Makefile in a separate directory.

    This is impossible. How do you want to guarantee that files of other people
    don't get overwritten if you mix some distribution with theirs? That's what
    directories are for!

    > 2. Do NOT require you package be 'main'.
    > Only ONE main is allowed, and it is MINE.
    > Do NOT supply 'main' in ANY C libraries.
    > (you can supply a sample 'main.c', but is must be that: a sample)

    I always prefix C-identifiers with very unique names so as to avoid
    name-clashes. I also don't see any "main"-routine in the underlying
    PCRE-library other than in example files.

    > Some of these problems will be alieviated when Ocaml gets a proper
    > mechanism to add components to the system. This is non-trivial,
    > but it is handled much better in Python than Ocaml at present.

    I agree on this: a standard way for adding libraries, etc., would probably
    boost productivity...

    Regards,
    Markus Mottl

    -- 
    Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl
    



    This archive was generated by hypermail 2b29 : Thu Feb 24 2000 - 14:52:56 MET