# Date-Time Build-Compiler Information

Overall Index -- Gregorian Index -- Posix Time Index

Overview -- Compilation Options -- Compiler/Portability Notes -- Directory Structure -- Required Boost Libraries

## Overview

The library has several functions that require the creation of a library file. The Jamfile in the build directory will produce a library (libboost_date_time) that contains these functions.

The variable DATE_TIME_INLINE is used to control the inlining of certain core functions. By default this variable is defined by in the compilation of the library. All compiles using the library must also include this define or linking errors will result.

## Compilation Options

By default the posix_time system uses a 64 bit integer and a 32 bit integer internally to provide nano-second level resolutions. As an alternative, a single 64 bit integer can be used to provide a microsecond level resolution. This alternative implementation may provide better performance and more compact memory usage for many applications that do not require nano-second resolutions.

The variable BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG, as defined in build/Jamfile, selects between these options. To select the 64 bit integer implementation simply remove this define from the Jamfile.

## Compiler/Portability Notes

The Boost Date-Time library has been built and tested with many compilers. However, some compilers and standard libraries have issues. While some of these issues can be worked around, others are difficult to work around. The following compilers fully support all aspects of the library:

- GCC 3.0.3 on Linux
- GCC 3.1 (cygwin)
- MSVC 7

In particular, a lack of support for standard locales limits the ability of the library to support iostream based input output. For these compilers a set of more limited string based input-output is provided. The compilers/stadard libraries with this limitation include:

- GCC 2.9x on Linux
- Borland 5.1.1 and 5.6
- MSVC 6 SP5

Other compilers such as Comeau and Metroworks have been tested sucessfully with earlier versions of the library.

## Directory Structure

The date_time directory structure has been changed for boost submission.

The directory tree has the following structure:

      /boost/date_time                    -- common headers and template code
      /boost/date_time/gregoran           -- gregorian calendar system header files
      /boost/date_time/posix_time         -- posix time system headers
      /libs/date_time/build               -- build files and output directory
      /libs/date_time/test                -- test battery for generic code
      /libs/date_time/test/gregorian      -- test battery for the gregorian system
      /libs/date_time/examples/gregorian  -- nifty example programs
      /libs/date_time/src/gregorian       -- cpp files for libboost_date_time
      /libs/date_time/test/posix_time     -- test battery for the posix_time system
      /libs/date_time/examples/posix_time -- time example programs
      /libs/date_time/src/posix_time      -- empty (one file, but no source code...)

## Required Boost Libraries

The library depends on

- boost.tokenizer,
- boost.integer(cstdint),
- boost.operators, and
- boost::lexical_cast

so at least these libraries need to be installed.