132 lines
5.1 KiB
Plaintext
132 lines
5.1 KiB
Plaintext
# @(#)README 8.6 (Berkeley) 6/20/94
|
|
|
|
This is the area for building the libdb library. There are a number
|
|
of porting directories, for various architecture/OS combinations. Pick
|
|
the one that's closest to yours and try "make". For the rest of this
|
|
file, I'll use "MACH" as a fake architecture/OS name.
|
|
|
|
To PORT to a new system, create the following subdirectories and
|
|
symbolic links.
|
|
|
|
mkdir MACH (for example: mkdir sunos.4.0)
|
|
cd MACH
|
|
cp ../Makefile .
|
|
chmod 664 Makefile
|
|
ln -s ../clib .
|
|
mkdir include
|
|
ln -s include sys
|
|
cd include
|
|
ln -s ../../include/*.h .
|
|
rm compat.h
|
|
cp ../../include/compat.h .
|
|
chmod 664 compat.h
|
|
cd ..
|
|
|
|
The basic idea is that you now have a local area that you can modify.
|
|
In particular, you have local copies of the Makefile and the include
|
|
file compat.h. Read through the Makefile and compat.h and make whatever
|
|
changes are appropriate to your system. If there's an architecture
|
|
that's close to yours, you probably should diff the Makefile and
|
|
compat.h in that tree against the standard ones and see what changes
|
|
were necessary, as they're probably necessary for you as well. Then,
|
|
enter "make" and see what happens!
|
|
|
|
There are several subroutines that are found in POSIX 1003.2, ANSI
|
|
C, or 4.4BSD that you may not have. Once you get libdb.a to compile,
|
|
go through the list of undefined routines and add entries to the MISC
|
|
line in the Makefile as necessary.
|
|
|
|
If you have to add some functions that are missing (and which aren't
|
|
in the PORT/clib directory), please don't add them in the PORT/clib
|
|
directory. Add them in a MACH/local directory, and add lines of the
|
|
form:
|
|
|
|
function.o: local/function.o
|
|
${CL} -Ilocal local/function.o
|
|
|
|
to your local Makefile.
|
|
|
|
Hopefully, over time, we'll develop a set of system directories that
|
|
are known to work. If you send me the changes that were necessary to
|
|
make your system work, this will happen much more quickly.
|
|
|
|
In some of the system directories, you'll see a file named OTHER_PATCHES.
|
|
This is a set of patches which you'll have to make from the top-level db
|
|
directory to get libdb.a to run on this system:
|
|
|
|
cd ..
|
|
patch < PORT/MACH/OTHER_PATCHES
|
|
|
|
If patch prompts you for the name of the file to modify (some versions
|
|
of patch don't figure it out on their own) use the file name which patch
|
|
displays.
|
|
|
|
Some knobs you may have to turn:
|
|
|
|
In include/db.h:
|
|
Before attempting to build libdb, you should look through the
|
|
db.h file, and adjust it as necessary for your system. The
|
|
only adjustments that you should need to make are for the
|
|
fixed sized typedef's at the top of the file. Make sure they're
|
|
right for your system.
|
|
|
|
In include/compat.h:
|
|
Before attempting to build libdb, you should look through the
|
|
compat.h file, and adjust it as necessary for your system.
|
|
It's possible to use the #ifndef construct to figure out if a
|
|
#ifdef has been set, but C provides no similar method to figure
|
|
out if a typedef has been done. Your compile errors should
|
|
give you a good indication of which ones you need.
|
|
|
|
You may see warning messages about illegal pointer combinations. You may
|
|
also see lots of warning messages about #define's being redefined. These
|
|
can mostly be ignored. I usually ignore warning messages until something
|
|
doesn't work. Some systems produce thousands of lines of useless warnings,
|
|
bless their little hearts.
|
|
|
|
The other parts of the PORT directory are as follows:
|
|
|
|
The directory PORT/clib is a set of functions that the 4.4BSD
|
|
C library had and which your system may not have. They are
|
|
added to the MISC line of the Makefile if they aren't defined
|
|
when you try and load libdb.a.
|
|
|
|
The directory PORT/include is header files that the 4.4BSD
|
|
system had which your system may not have. There is also
|
|
one really important extra one, named compat.h, which is a
|
|
set of compatibility work-arounds that you'll almost certainly
|
|
have to copy and modify for a new system.
|
|
|
|
The symbolic link PORT/sys points to the PORT/include directory
|
|
so that includes of the form <sys/include.h> work.
|
|
|
|
Some of the more common portability problems:
|
|
|
|
If you don't have:
|
|
|
|
memmove(3): add memmove.o
|
|
mkstemp(3): add mktemp.o
|
|
|
|
... to the MISC line in the Makefile.
|
|
|
|
If you don't have snprintf/vsnprintf(3), add snprintf.o to the
|
|
MISC line in the Makefile. This workaround depends on your
|
|
system having vsprintf(3) -- if you don't, there's no workaround
|
|
other than changing the source code to not use the snprintf calls.
|
|
If you have to make that change, check to see if your vsprintf
|
|
returns a length or a char *; if it's the latter, make sure you
|
|
set VSPRINTF_CHARSTAR in the MACH/include/compat.h file.
|
|
|
|
Installing the DB library:
|
|
|
|
The Makefile builds a C library named libdb.a. This file needs
|
|
to be installed in a place where the loader will automatically
|
|
look for it (or, if you're building it for a single project,
|
|
wherever that project's Makefile loads it from).
|
|
|
|
In addition, the header file PORT/include/db.h must be copied to
|
|
a directory (often /usr/include/) where programs that use the
|
|
db package can include it in their source. (If you intend to use
|
|
the ndbm interface to libdb, you'll need to copy the header file
|
|
PORT/include/ndbm.h as well.)
|