]> git.mxchange.org Git - simgear.git/commitdiff
Initial revision.
authorcurt <curt>
Thu, 25 May 2000 16:45:19 +0000 (16:45 +0000)
committercurt <curt>
Thu, 25 May 2000 16:45:19 +0000 (16:45 +0000)
README.metakit [new file with mode: 0644]

diff --git a/README.metakit b/README.metakit
new file mode 100644 (file)
index 0000000..e4db1c6
--- /dev/null
@@ -0,0 +1,243 @@
+With the author's permission, SimGear now bundles MetaKit.  MetaKit is
+ explained
+
+The MetaKit Library 2.01                                            March 2000
+==============================================================================
+
+
+WHAT IT IS - MetaKit is an embeddable database which runs on Unix, Windows,
+    Macintosh, and other platforms.  It lets you build applications which
+    store their data efficiently, in a portable way, and which will not need a
+    complex runtime installation.  In terms of the data model, MetaKit takes
+    the middle ground between RDBMS, OODBMS, and flat-file databases - yet it
+    is quite different from each of them.
+
+WHAT IT ISN'T - MetaKit is not: 1) multi-user/-threading, 2) scalable to
+    gigabytes, 3) proprietary software, 4) full of bugs, 5) just a toy.
+
+TECHNOLOGY - Everything is stored variable-sized yet with efficient positional
+    row access.  Changing an existing datafile structure is as simple as re-
+    opening it with that new structure.  All changes are transacted.  You can
+    mix and match software written in C++, Python, and Tcl.  Things can't get
+    much more flexible...
+
+CORE - The Metakit core library is written in C++.  It has a code footprint of
+    just over 100 Kb on Windows.  It can be used as DLL, or linked statically.
+    Debug builds include extensive assertion checks to catch problems early.
+
+PYTHON - The binding for Python is called "Mk4py".  It uses SCXX by Gordon
+    McMillan as C++ glue interface.  The source is in directory "python/".
+
+TCL/TK - The MK extension for Tcl is called "Mk4tcl".  It is being used in a
+    number of commercial projects, for in-house use as well as in commercially
+    distributed products.  The source is in directory "tcl/".
+
+LICENSE AND SUPPORT - MetaKit 2.01 is distributed as open source software (the
+    X/MIT-style license is at the end of this document).  Commercial support
+    is available through an Enterprise License, see the URL mentioned below.
+
+DOCUMENTATION - All documentation uses HTML.  The main page is "MetaKit.html",
+    which leads to the rest of the documentation in the "doc/" directory.
+
+WEBSITE URLS - The main pages on the world wide web, for news and downloads:
+    Homepage:       http://www.equi4.com/metakit/
+    Python news:    http://www.equi4.com/metakit/python.html
+    Tcl/Tk news:    http://www.equi4.com/metakit/tcl.html
+    License info:   http://www.equi4.com/metakit/license.html
+    Contact info:   http://www.equi4.com/contact.html
+
+
+INSTALLATION
+============
+
+Starting with this release, all platform builds and language bindings are now
+designed to work from a single common "builds/" directory.  It turns out to
+be impossible to keep build side-effects limited to *just* this directory
+(CodeWarrior can't be told where to place its temp data, and Visual C++ still
+alters a few files next to the project ".dsw" file, to name two offenders).
+
+UNIX
+
+    It is no longer advised to build the Unix code in the "unix/" directory.
+    Instead, you should perform the following steps:
+        % cd builds
+        % ../unix/configure
+        % make
+        % make test
+    And optionally (this only installs the core lib, not script extensions):
+        % make install
+
+    By switching to the "builds/" directory, you will keep the distribution
+    directory tree 100% unaltered.  All changes are made in this subdir, and
+    all final build results are left behind in this same subdir.
+
+    Nastiness: if you build Mk4tcl, please do a "make Mk4tcl.so" as well.
+    And if you intend to create the Python extension, do a "make Mk4py.so".
+    The "libmk4tcl.so.0.0.0" and "libMk4py.so.0.0.0" targets are bogus ones.
+
+    You will probably have to make changes in the makefile to locate the
+    proper includes and libs for Python (Tcl has been fixed, see "--with-tcl).
+    You probably only need to adjust "CXX_SWITCHES_PY" to find the headers.
+
+    To build with STL containers and strings, you can do the following:
+        make CXXFLAGS='-Dq4_STD' test   # add -O3 etc, as needed
+    This passes the test suite on Linux RedHat 5.2 with gcc 2.95-2.
+
+    See below for some platform-specific build notes.
+
+WINDOWS
+
+    There is a "win/" directory which contains subdirectories for a number of
+    compiler systems.  MetaKit has been built with many different compilers
+    in the past (Microsoft, Borland, Watcom, Symantec, Metrowerks, Optima),
+    but to preserve my sanity (there are 12 configurations for MSVC6 alone!),
+    I am limiting myself to MSVC6, MWCW5, Borland C++ Builder 4, and Cygwin.
+
+    The MS Visual C++ 6.0 project is "win/msvc60/mksrc.dsw", with subprojects
+    for the C++ demo (mkdemo), building dll's (mkdll), static libs (mklib),
+    regression tests (mktest), as well as Tcl (mktcl) and Python (mkpython).
+    It has been set up to place all intermediate files and final results in
+    the "builds/" subdirectory, even though you'll launch it from "win/".
+
+    To build with STL containers and strings under MSVC, define "q4_STD".
+    To build with MFC containers and strings under MSVC, define "q4_MFC".
+
+    The Metrowerks Codewarrior project is in the "mac/" directory, and can be
+    used to build both Mac and Windows versions (on either Mac *or* Windows).
+    The core libraries are built with "mac/cw5.mcp", demos / tests are built
+    with "cw5apps.mcp", Tcl is "cw5tcl.mcp", and Python is "cw5python.mcp".
+
+    The Borland C++ Builder projects have not yet been incorporated in this
+    release, but the "KitViewer" application is an example of how to use BCB.
+
+    The Cygwin build (B20.1 / gcc 2.95.2) is different, because it uses the
+    unix autoconf system, and must be launched as described above for UNIX.
+    I have upgraded to the latest development of libtool to be able to build
+    DLL's with Cygwin.  You can build the "-mno-cygwin" version by editing
+    the Makefile by hand and adding that option to CXXFLAGS.
+
+    Rob Bloodgood adds that the following GCC options are for maximum code
+    efficiency on x86 hardware: "-O2 -m486 -malign-loops=2 -malign-jumps=2".
+    I have not yet tried this myself, but am passing on the tip.
+
+MACINTOSH
+
+    The Mac version requires Metrowerks CodeWarrior 5.  See the info above
+    in the Windows section (MWCW is multi-platform).  The projects are all
+    located in the "mac/" folder, which is also where MWCW will place its own
+    "... Data" folders with intermediate results.  As with all other setups,
+    final results are made to end up in the "builds/" directory.
+
+    Static 68K builds appear to work fine, the 68K CFM variants will need
+    some more work (I couldn't get the libraries to export their symbols).
+
+
+PLATFORM-SPECIFIC NOTES
+=======================
+
+* Linux RH 5.2 / gcc 2.95.2
+
+    Builds with gcc 2.95.2 work out of the box.  The Tcl extension ends up as
+    ".libs/libmk4tcl.so.0.0.0" (to please libtool), and should be renamed to
+    "Mk4tcl.so".  Similarly, ".libs/libMk4py.so.0.0.0" is in fact the Python
+    extension, and *must* be renamed to "Mk4py.so" to call it from Python.
+
+    The core MK libs end up as ".libs/libmk4.a" and ".libs/libmk4.so.0.0.0".
+
+* Solaris 2.6 / gcc 2.8.1
+
+    The Solaris builds are nasty for several reasons:
+
+    - I do not own such a machine, and often have to make arrangements
+      (or fight limited space on one of the machines I can telnet to).
+    - The gcc 2.8.1 optimizer appears to be buggy, I have had to turn off
+      the default "-O3" flag to prevent compiler crashes (several files).
+      This problems appears to be resolved with gcc 2.95.
+    - Locking on Solaris (especially w.r.t NFS) remains a mystery to me.
+      The Tcl and Python extensions both use locking (the core not yet).
+      See tcl/Mk4tcl.cpp around line 520, and python/PyStorage.cpp around
+      line 80 for details.  It's all pretty messy, and not 100% correct.
+
+    Despite this, I'm doing my best to resolve these issues.  Having a solid
+    build of the core *and* of Tcl / Python extensions is quite important.
+
+* Other Unix systems
+
+    No further notes, though many systems will build fine out of the box.
+
+* Windows
+
+    MSVC 6 builds MK as static lib and as DLL (universal config, I have not
+    yet created build versions with MFC or STL, mainly because MK can now be
+    used in all contexts regardless of how it was built).  The Python and Tcl
+    extensions build as dynamic extensions (a static build is easy to add).
+
+    MWCW 5 builds MK as static lib and as DLL (interestingly enough, the DLL
+    is slightly smaller than MSVC 6 - 102 vs 108 Kb - when their runtimes are
+    linked in dynamically as well).  I have not added Win builds for Tcl or
+    Python, since MSVC 6 has those already.
+
+    Cygwin B20.1, with gcc 2.95.2 ugrade, also builds MK as static lib and as
+    DLL.  Both "pure" Cygwin (i.e. requiring cygwin1.dll) and mingw32 (using
+    the -mno-cygwin flag) build, but there are some hairy include issues when
+    it comes to choosing the right locking model for Tcl and Python.  These
+    issues have not been resolved fully.
+
+* Macintosh
+
+    MWCW 5 builds PPC shared libs, PPC static libs, and 68K static libraries.
+
+    Building 68K CFM libraries leads to a "MetaKit 68K.shlb" which comes out
+    of the linker without errors, but the result does not seem to have any
+    export symbols defined (despite the fact that the library is over 200 K).
+    Because of that, I've been unable to build apps or Mk4tcl/Mk4py so far.
+
+    The other three configurations build, but for some reason MK's regression
+    test stops at L03 (everything up to that point looks ok, i.e. over 90%).
+
+    The Mk4tcl PPC extension appears to work (quick manual test), and so does
+    the Python extension, "Mk4py.PPC.slb".  I have not yet given these two
+    a serious workout, hoping to have a basic test harness in place soon.
+
+* VMS, BeOS, ...
+
+    No news yet, please report your findings with any other platform builds.
+
+
+WHAT'S MISSING HERE
+===================
+
+    - a section on basic concepts (or maybe it doesn't belong here?)
+    - a section on getting started (C++, Python, Tcl all differ - point to
+      the respective intro pages)
+    - maybe a small sample for each of C++ / Tcl / Python, to give an idea
+    - mention TclKit, scripted docs (WiKit/Tequila?), VFS?
+    - I forgot... please tell me :)
+
+
+LICENSE AND COPYRIGHT STATEMENT
+===============================
+
+Copyright (c) 1996-2000 Jean-Claude Wippler
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+==============================================================================
+-- Jean-Claude Wippler <jcw@equi4.com>