Added README.W32 files, removed INSTALL.W32 files, updated all Makefile.am's accordingly, added explanations for building from Win32 command line to all README.W32 files.

git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@1073 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
jcalcote
2008-07-02 00:39:41 +00:00
parent bd6d5215e6
commit ae067ea6ac
21 changed files with 601 additions and 271 deletions

View File

@@ -1,19 +1,18 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Windows
=======
For Microsoft Windows building and installation information, please
refer to README.W32.
Basic Installation
==================
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -26,9 +25,9 @@ debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
@@ -38,17 +37,20 @@ some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
@@ -67,55 +69,54 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
6. Often, you can also type `make uninstall' to remove the installed
files again.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
@@ -126,7 +127,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
@@ -141,11 +142,11 @@ you can use the `configure' options `--x-includes=DIR' and
Specifying the System Type
==========================
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
@@ -160,7 +161,7 @@ where SYSTEM can have one of these forms:
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
@@ -171,9 +172,9 @@ eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
@@ -182,7 +183,7 @@ A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
@@ -190,18 +191,14 @@ them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf bug. Until the bug is fixed you can use this workaround:
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it operates.
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'

View File

@@ -1,6 +1,6 @@
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = GNUMakefile INSTALL.W32 win32
EXTRA_DIST = GNUMakefile README.W32 win32
SUBDIRS = $(subdirs) src obs

View File

@@ -1,6 +1,10 @@
FLAIMSQL README file
====================
NOTE: This README file covers platform-independant, and GNU/Linux and
Unix specific information. For information on building and installing
on Windows platforms, please see the README.W32 file.
Contents
--------
1. What is FLAIMSQL?

View File

@@ -1,6 +1,17 @@
Building on Windows
===================
Visual C++ 2008 Express is good, but more to the point, it's free.
flaim-projects README.W32 file
==============================
Contents:
--------
1. Tools for Building on Windows
2. FLAIM Runtime Library Use
3. GUI or Command-Line Build
4. Legacy Makefile
Tools for Building on Windows
-----------------------------
Visual C++ 2008 Express is good, but more to the point, it's free.
To build the FLAIM projects, you will need to download and install
Visual C++ 2008 Express (which now thankfully comes with a reasonably
late version of the Windows Platform SDK).
@@ -40,15 +51,16 @@ files as the individual lower-level solution files, so if you make
changes in one of these, they'll be reflected in the other.
FLAIM Runtime Library Use
=========================
FLAIM libraries - both static and dynamic - and the flaim utilities
-------------------------
FLAIM libraries - both static and dynamic - and the flaim utilities
consume the dynamic (DLL) form of the Visual C++ 2008 runtime libraries.
This is in alignment with the use of runtime libraries on Unix platforms.
It's more efficient and flexible to use the DLL versions of these libraries,
and it allows Microsoft to update these libraries as necessary to fix
security holes and defects which may be found in the future.
With each new version of Windows and Microsoft tools, Microsoft
With each new version of Windows and Microsoft tools, Microsoft
platforms become more security minded - and more secure. This is
generally done by copying features from Unix platforms into the Windows
operating system and into the tools themselves. Visual Studio 2008 is no
@@ -57,7 +69,7 @@ is secure package deployment and executable module manifests. This is nothing
less than the direct equivalent of RPATH's in Unix and Linux, and the usual
security features - and annoying issues - come along with it.
The Visual C++ 2008 runtime libraries include MSVCR90.DLL, MSVCP90.DLL and
The Visual C++ 2008 runtime libraries include MSVCR90.DLL, MSVCP90.DLL and
MSVCM90.DLL, which represent the C standard library, the C++ standard
library, and the C math library, respectively. These libraries may no
longer be simply dropped into the same directory as your executable and
@@ -67,7 +79,7 @@ libraries need to be "deployed". Deployment consists of running a
significant algorithm to determine platform requirements and features,
and making the right decisions to install these runtime libraries.
Developers (like you) will not have a problem executing your own
Developers (like you) will not have a problem executing your own
projects built against the FLAIM libraries because you've installed VC8,
which consumes the VC8 runtime libraries, and so deploys it during its
install process. For more information, see this excellent article on
@@ -75,9 +87,59 @@ the CodeProjects website:
http://www.codeproject.com/cpp/vcredists_x86.asp
GUI or Command-Line Build
-------------------------
The flaim-projects repository is divided into four sub-projects, named
for the sub-directories in which they reside:
* flaim
* ftk
* sql
* xflaim
Each of these sub-projects is a complete project in its own right. The only
inter-project dependencies among them are that the flaim, sql and xflaim
projects depend on the FLAIM Tool Kit library (flaimtk) and header file
(flaimtk.h) provided by the ftk project.
When these four projects are built from the flaim\trunk\win32\flaim-projects
directory, using the flaim-projects.sln solution file or the buildall.cmd
file in that directory, the dependencies are managed for you by the umbrella
solution.
However, each of the four sub-projects may also be built as separate projects,
simply by changing into the desired win32\<project> sub-directory, and then
running ONE of the following two commands:
c:> buildall.cmd [debug|release]
c:> devenv <project-name>.sln
The latter will bring up the Visual C++ 2008 IDE, so you can build in a
"GUI" fashion. The former will use devenv command line options to build
from the commnand line.
When you build a sub-project by itself in this manner, you need to provide
the location of the flaimtk library by setting a few environment variables:
c:> set FTKLIB_STATIC_DEBUG=c:\full\path\to\debug\flaimtk_static.lib
c:> set FTKLIB_STATIC_RELEASE=c:\full\path\to\release\flaimtk_static.lib
c:> set FTKLIB_DEBUG=c:\full\path\to\debug\flaimtk.lib
c:> set FTKLIB_RELEASE=c:\full\path\to\release\flaimtk.lib
This technique works with all three of the higher level projects.
CAVEAT: Currently, the include directory location for flaimtk.h is hard-coded
into the three higher-level projects, so the ftk project must be located in
the relative path specified above -- that is, ftk must be co-located in the
same parent directory as the flaim, sql and xflaim directories. This will be
fixed soon to work with environment variables in the same manner as the
library paths.
Legacy Makefile
===============
There is also a legacy makefile (GNUMakefile) that has been hand written
---------------
There is also a legacy makefile (GNUMakefile) that has been hand written
to target flaim for all of the platforms that flaim currently supports. If you
don't want to use autotools, and you don't feel comfortable in the Visual C++
2008 IDE, then you may build for windows by simply running make from the root
@@ -107,3 +169,4 @@ CAVEAT: We're trying to phase out the legacy GNU makefile build system, so:
2) Don't be surprised if it doesn't work all the time
Enjoy!