Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] DBM in OCaml 3.07
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Matt Gushee <matt@g...>
Subject: Re: [Caml-list] DBM in OCaml 3.07
On Wed, Oct 15, 2003 at 10:39:29AM +0900, Jacques Garrigue wrote:
> From: Matt Gushee <matt@gushee.net>
> 
> > > There seems to be another problem with gdbm-ndbm.h being ignored if
> > > there is no gdbm_compat library, which might have to be fixed, but I'm
> > > no gdbm exert. gdbm-ndbm.h was not checked on ocaml 3.06, but it has
> > > lower priority than ndbm.h anyway.
> > 
> > Ah, but it effectively has a *higher* priority in the configure script:
> > 
> The break is supposed to get out of the loop, so if ndbm.h is in the
> same directory, or a previous directory, it has priority.
> This is a bit confusing, as if ndbm.h is in /usr/include/db1 and
> gdbm-ndbm.h is in /usr/include, then gdbm-ndbm.h will be selected.
> Is it your case?

Yes, that's it exactly. Since it's very hard to anticipate exactly where
header files will be located, maybe it would be better to do two loops,
first searching for ndbm.h in all the directories, then searching for
gdbm-ndbm.h only if ndbm.h was not found. The following code works for
me:

  for dir in /usr/include /usr/include/db1 /usr/include/gdbm; do
    if test -f $dir/ndbm.h; then
      dbm_include=$dir
      if sh ./hasgot dbm_open; then
        dbm_link=""
      elif sh ./hasgot -lndbm dbm_open; then
        dbm_link="-lndbm"
      elif sh ./hasgot -ldb1 dbm_open; then
        dbm_link="-ldb1"
      elif sh ./hasgot -lgdbm dbm_open; then
        dbm_link="-lgdbm"
      elif sh ./hasgot -lgdbm_compat -lgdbm dbm_open; then
        dbm_link="-lgdbm_compat -lgdbm" 
      fi
      break
    fi
  done
  if [ "$dbm_include" = "not found" ]; then
    for dir in /usr/include /usr/include/db1 /usr/include/gdbm; do
      if test -f $dir/gdbm-ndbm.h; then
        dbm_include=$dir
        use_gdbm_ndbm=yes
        if sh ./hasgot -lgdbm_compat -lgdbm dbm_open; then
          dbm_link="-lgdbm_compat -lgdbm"
        elif sh ./hasgot -lgdbm dbm_open; then
          dbm_link="-lgdbm"
        fi
        break   
      fi
    done
  fi

-- 
Matt Gushee                 When a nation follows the Way,
Englewood, Colorado, USA    Horses bear manure through
mgushee@havenrock.com           its fields;
http://www.havenrock.com/   When a nation ignores the Way,
                            Horses bear soldiers through
                                its streets.
                                
                            --Lao Tzu (Peter Merel, trans.)

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners