From ae067ea6ac845ba256bc8dda7391fd74e42a7048 Mon Sep 17 00:00:00 2001 From: jcalcote Date: Wed, 2 Jul 2008 00:39:41 +0000 Subject: [PATCH] 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 --- INSTALL | 2 +- Makefile.am | 2 +- README | 5 + INSTALL.W32 => README.W32 | 83 ++++++++++++-- flaim/INSTALL | 2 +- flaim/Makefile.am | 2 +- flaim/README | 4 + flaim/{INSTALL.W32 => README.W32} | 83 ++++++++++++-- ftk/INSTALL | 111 ++++++++++--------- ftk/Makefile.am | 2 +- ftk/README | 4 + ftk/{INSTALL.W32 => README.W32} | 83 ++++++++++++-- sql/INSTALL | 111 ++++++++++--------- sql/Makefile.am | 2 +- sql/README | 4 + sql/{INSTALL.W32 => README.W32} | 83 ++++++++++++-- xflaim/INSTALL | 2 +- xflaim/INSTALL.W32 | 109 ------------------- xflaim/Makefile.am | 2 +- xflaim/README | 4 + xflaim/README.W32 | 172 ++++++++++++++++++++++++++++++ 21 files changed, 601 insertions(+), 271 deletions(-) rename INSTALL.W32 => README.W32 (58%) rename flaim/{INSTALL.W32 => README.W32} (58%) rename ftk/{INSTALL.W32 => README.W32} (58%) rename sql/{INSTALL.W32 => README.W32} (58%) delete mode 100644 xflaim/INSTALL.W32 create mode 100644 xflaim/README.W32 diff --git a/INSTALL b/INSTALL index e9a2198..5e684fe 100644 --- a/INSTALL +++ b/INSTALL @@ -24,7 +24,7 @@ in each of the four sub-projects. Windows ======= For Microsoft Windows building and installation information, please -refer to INSTALL.W32. +refer to README.W32. Basic Installation ================== diff --git a/Makefile.am b/Makefile.am index aa0394f..5baba6e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = INSTALL.W32 tools win32 +EXTRA_DIST = README.W32 tools win32 SUBDIRS = ftk flaim sql xflaim diff --git a/README b/README index 108d6a7..ce0ce91 100644 --- a/README +++ b/README @@ -1,10 +1,15 @@ flaim-projects 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. Project Hierarchy 2. Autotools Build +3. Windows Build Project Hierarchy ----------------- diff --git a/INSTALL.W32 b/README.W32 similarity index 58% rename from INSTALL.W32 rename to README.W32 index ed83084..159c4ac 100644 --- a/INSTALL.W32 +++ b/README.W32 @@ -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\ sub-directory, and then +running ONE of the following two commands: + + c:> buildall.cmd [debug|release] + c:> devenv .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! + diff --git a/flaim/INSTALL b/flaim/INSTALL index 73e6ab3..75a5d30 100644 --- a/flaim/INSTALL +++ b/flaim/INSTALL @@ -7,7 +7,7 @@ unlimited permission to copy, distribute and modify it. Windows ======= For Microsoft Windows building and installation information, please -refer to INSTALL.W32. +refer to README.W32. Basic Installation ================== diff --git a/flaim/Makefile.am b/flaim/Makefile.am index 7012584..732dc06 100644 --- a/flaim/Makefile.am +++ b/flaim/Makefile.am @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = GNUMakefile INSTALL.W32 debian netware win32 +EXTRA_DIST = GNUMakefile README.W32 debian netware win32 SUBDIRS = $(subdirs) src util sample docs obs diff --git a/flaim/README b/flaim/README index 390baba..536abc2 100644 --- a/flaim/README +++ b/flaim/README @@ -1,6 +1,10 @@ FLAIM 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 FLAIM? diff --git a/flaim/INSTALL.W32 b/flaim/README.W32 similarity index 58% rename from flaim/INSTALL.W32 rename to flaim/README.W32 index ed83084..159c4ac 100644 --- a/flaim/INSTALL.W32 +++ b/flaim/README.W32 @@ -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\ sub-directory, and then +running ONE of the following two commands: + + c:> buildall.cmd [debug|release] + c:> devenv .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! + diff --git a/ftk/INSTALL b/ftk/INSTALL index d3c5b40..75a5d30 100644 --- a/ftk/INSTALL +++ b/ftk/INSTALL @@ -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' diff --git a/ftk/Makefile.am b/ftk/Makefile.am index ca60044..753f6c9 100644 --- a/ftk/Makefile.am +++ b/ftk/Makefile.am @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = GNUMakefile INSTALL.W32 debian netware win32 +EXTRA_DIST = GNUMakefile README.W32 debian netware win32 SUBDIRS = src util obs diff --git a/ftk/README b/ftk/README index 120ff15..798e4a6 100644 --- a/ftk/README +++ b/ftk/README @@ -1,6 +1,10 @@ FLAIM Tool Kit 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 the FLAIM Tool Kit? diff --git a/ftk/INSTALL.W32 b/ftk/README.W32 similarity index 58% rename from ftk/INSTALL.W32 rename to ftk/README.W32 index ed83084..159c4ac 100644 --- a/ftk/INSTALL.W32 +++ b/ftk/README.W32 @@ -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\ sub-directory, and then +running ONE of the following two commands: + + c:> buildall.cmd [debug|release] + c:> devenv .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! + diff --git a/sql/INSTALL b/sql/INSTALL index d3c5b40..75a5d30 100644 --- a/sql/INSTALL +++ b/sql/INSTALL @@ -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' diff --git a/sql/Makefile.am b/sql/Makefile.am index 61e485e..c4c89d1 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = GNUMakefile INSTALL.W32 win32 +EXTRA_DIST = GNUMakefile README.W32 win32 SUBDIRS = $(subdirs) src obs diff --git a/sql/README b/sql/README index a99b2ed..ac5ec78 100644 --- a/sql/README +++ b/sql/README @@ -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? diff --git a/sql/INSTALL.W32 b/sql/README.W32 similarity index 58% rename from sql/INSTALL.W32 rename to sql/README.W32 index ed83084..159c4ac 100644 --- a/sql/INSTALL.W32 +++ b/sql/README.W32 @@ -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\ sub-directory, and then +running ONE of the following two commands: + + c:> buildall.cmd [debug|release] + c:> devenv .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! + diff --git a/xflaim/INSTALL b/xflaim/INSTALL index 73e6ab3..75a5d30 100644 --- a/xflaim/INSTALL +++ b/xflaim/INSTALL @@ -7,7 +7,7 @@ unlimited permission to copy, distribute and modify it. Windows ======= For Microsoft Windows building and installation information, please -refer to INSTALL.W32. +refer to README.W32. Basic Installation ================== diff --git a/xflaim/INSTALL.W32 b/xflaim/INSTALL.W32 deleted file mode 100644 index ed83084..0000000 --- a/xflaim/INSTALL.W32 +++ /dev/null @@ -1,109 +0,0 @@ -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). - -You can get Visual C++ 2008 Express here: - - http://www.microsoft.com/express/vc - -The ">> Download Now!" link on that page, and decide whether you want to -install from the web (slow) or install off-line (also slow - there's no -fast solution, sorry). - -Once Visual C++ 2008 Express has been installed you may simply double -click on any of the flaim project solution files to bring up the flaim -project in the Visual C++ 2008 IDE. Use the main or context menu options -to build the desired targets. - -The flaim project solution files are located in the win32 directories -in the following locations: - -flaim-projects - flaim - win32 - flaim.sln - ftk - win32 - flaimtk.sln - sql - win32 - flaimsql.sln - xflaim - win32 - xflaim.sln - win32 - flaim-projects.sln - -The projects may be build individually from each of the lower-level -solution files, or all at once from the flaim-projects solution file. - -WARNING: The flaim-projects solution file refers to the same project -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 -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 -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 -exception. The most significant security feature in Visual C++ 2008 (IMHO) -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 -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 -consumed. Executables and consumer DLL's need to be configured to build -with a manifest file (a default setting for new projects), and the runtime -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 -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 -the CodeProjects website: - - http://www.codeproject.com/cpp/vcredists_x86.asp - -Legacy Makefile -=============== - 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 -of the FLAIM project. This makefile accepts multiple auxilliary targets, which -modify the build in various ways. These auxilliary targets include: - - debug - release - 32bit - 64bit - verbose - usegcc - flm_dbg_log - -True build targets include: - - libs (default) - flaim libraries (static and dynamic) - checkdb - checkdb.exe - rebuild - rebuild.exe - view - view.exe - ut_basictest - basic unit tests - sample - sample.exe - -CAVEAT: We're trying to phase out the legacy GNU makefile build system, so: - -1) Don't expect it to last forever, and -2) Don't be surprised if it doesn't work all the time - -Enjoy! diff --git a/xflaim/Makefile.am b/xflaim/Makefile.am index 7012584..732dc06 100644 --- a/xflaim/Makefile.am +++ b/xflaim/Makefile.am @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = GNUMakefile INSTALL.W32 debian netware win32 +EXTRA_DIST = GNUMakefile README.W32 debian netware win32 SUBDIRS = $(subdirs) src util sample docs obs diff --git a/xflaim/README b/xflaim/README index 8933846..5416e0f 100644 --- a/xflaim/README +++ b/xflaim/README @@ -1,6 +1,10 @@ XFLAIM 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 XFLAIM? diff --git a/xflaim/README.W32 b/xflaim/README.W32 new file mode 100644 index 0000000..159c4ac --- /dev/null +++ b/xflaim/README.W32 @@ -0,0 +1,172 @@ +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). + +You can get Visual C++ 2008 Express here: + + http://www.microsoft.com/express/vc + +The ">> Download Now!" link on that page, and decide whether you want to +install from the web (slow) or install off-line (also slow - there's no +fast solution, sorry). + +Once Visual C++ 2008 Express has been installed you may simply double +click on any of the flaim project solution files to bring up the flaim +project in the Visual C++ 2008 IDE. Use the main or context menu options +to build the desired targets. + +The flaim project solution files are located in the win32 directories +in the following locations: + +flaim-projects + flaim + win32 - flaim.sln + ftk + win32 - flaimtk.sln + sql + win32 - flaimsql.sln + xflaim + win32 - xflaim.sln + win32 - flaim-projects.sln + +The projects may be build individually from each of the lower-level +solution files, or all at once from the flaim-projects solution file. + +WARNING: The flaim-projects solution file refers to the same project +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 +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 +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 +exception. The most significant security feature in Visual C++ 2008 (IMHO) +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 +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 +consumed. Executables and consumer DLL's need to be configured to build +with a manifest file (a default setting for new projects), and the runtime +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 +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 +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\ sub-directory, and then +running ONE of the following two commands: + + c:> buildall.cmd [debug|release] + c:> devenv .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 +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 +of the FLAIM project. This makefile accepts multiple auxilliary targets, which +modify the build in various ways. These auxilliary targets include: + + debug + release + 32bit + 64bit + verbose + usegcc + flm_dbg_log + +True build targets include: + + libs (default) - flaim libraries (static and dynamic) + checkdb - checkdb.exe + rebuild - rebuild.exe + view - view.exe + ut_basictest - basic unit tests + sample - sample.exe + +CAVEAT: We're trying to phase out the legacy GNU makefile build system, so: + +1) Don't expect it to last forever, and +2) Don't be surprised if it doesn't work all the time + +Enjoy! +