Building libfossil with Microsoft Visual C++
Workspaces/Solutions are included to facilitate building libfossil on these
platforms:
* Visual C++ 6.0
32-bit only
* Developer Studio 2010
32-bit, and 64-bit (AMD)
* Developer Studio 2012
32-bit, and 64-bit (AMD)
These configurations will create Dll versions of libfossil. Static libraries
are not provided at this time due to a potential, albeit unlikely, consequence
of a version mismatch issue in the sqlite used internally, and sqlite that may
be use by clients. However, if you need static linkage, you can achieve the
same net result by using the 'amalgamation' build (which is a source
distribution).
Caveat: to produce the 'amalgamation' build, you will need a build environment
with autoconf tools, such as Linux. In that environment
./configure --disable-shared --no-long-long
cd src
make amal
This will produce three files:
libfossil-config.h
libfossil.h
libfossil.c
which constitute the entire library.
Dependencies:
zlib
sqlite3 (if building with amalgamation; the dll builds have their own copy)
Build Environment Setup
You may alter the projects' 'include' and 'libs' paths to suit your
environment, or you may set up your environment to match what has already
been configured.
The projects are set up to assume a sibling directory named '3rdparty' exists
containing includes and libs for dependencies (just zlib at present). The
structure, as defined in the project files, allows for fine granularity if you
need it, to accommodate things like disambiguating libs that have the same name
in debug and release, or for ia386 and amd-64 binaries, etc.
You don't have to make the whole tree, you can just make the parts that you
want, but here is the full explanation, so you can decide.
The full structure is:
this path is intended for architecture-neutral files (e.g. source
distributions)
\3rdparty\include
\3rdparty\lib
this path (and sub paths) is intended for x86 (32-bit) binaries and headers
\3rdparty\x86\include
\3rdparty\x86\lib
This path is intended for x86 debug binaries and headers
\3rdparty\x86\Debug\include
\3rdparty\x86\Debug\lib
This path is intended for x86 release binaries and headers
\3rdparty\x86\Release\include
\3rdparty\x86\Release\lib
this path (and sub paths) is intended for AMD-64 (64-bit) binaries and headers
\3rdparty\x64\include
\3rdparty\x64\lib
This path is intended for AMD-64 debug binaries and headers
\3rdparty\x64\Debug\include
\3rdparty\x64\Debug\lib
This path is intended for AMD-64 release binaries and headers
\3rdparty\x64\Release\include
\3rdparty\x64\Release\lib
The projects are configured to use all the paths mentioned above that
are pertinent to the configuration, in order of greater to lesser specificity.
f-apps
The test/demo apps have configurations located in subdirectories of f-apps,
as per development platform.
Running f-apps
These programs assume to be operating in an open checkout (meaning your
libfossil.fossil is still 'opened'). And that the current working directory
is f-apps. You will need to set this directory in your project's 'debugging'
section, because that is not a setting that is persisted in the project files
checked into the repo. This would be '..' for Visual C++ 6, and
'$(ProjectDir)..\' for the various Developer Studios.
To run the apps, you will also need to have the relevant dll in place. As a
convenience, there is a batch file placelibs.bat which will copy the dll into
place, so you can run or step the code in the debugger.
END