Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r50190 - in sandbox/chrono: boost/chrono libs/chrono/build libs/chrono/src libs/chrono/test/chrono_msvc libs/chrono/test/chrono_msvc/await_keystroke libs/chrono/test/chrono_msvc/chrono_dll libs/chrono/test/chrono_msvc/run_timer_example libs/chrono/test/chrono_msvc/run_timer_test libs/chrono/test/chrono_msvc/system_dll libs/chrono/test/chrono_msvc/time2_demo
From: bdawes_at_[hidden]
Date: 2008-12-08 10:11:03


Author: bemandawes
Date: 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
New Revision: 50190
URL: http://svn.boost.org/trac/boost/changeset/50190

Log:
Chrono: Work in progress, including Windows, POSIX, Mac implementations with error handling, convert VC++ solution to build dll's, work on Jamfiles.
Added:
   sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_dll/
   sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_dll/chrono_dll.vcproj (contents, props changed)
   sandbox/chrono/libs/chrono/test/chrono_msvc/system_dll/
   sandbox/chrono/libs/chrono/test/chrono_msvc/system_dll/system_dll.vcproj (contents, props changed)
Text files modified:
   sandbox/chrono/boost/chrono/chrono.hpp | 6
   sandbox/chrono/boost/chrono/process_times.hpp | 5
   sandbox/chrono/libs/chrono/build/Jamfile.v2 | 9 +
   sandbox/chrono/libs/chrono/src/chrono.cpp | 179 +++++++++++++++++++++++++++++++++++++--
   sandbox/chrono/libs/chrono/test/chrono_msvc/await_keystroke/await_keystroke.vcproj | 12 -
   sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln | 33 ++++++
   sandbox/chrono/libs/chrono/test/chrono_msvc/common.vsprops | 4
   sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj | 24 ----
   sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_test/run_timer_test.vcproj | 24 ----
   sandbox/chrono/libs/chrono/test/chrono_msvc/time2_demo/time2_demo.vcproj | 12 -
   10 files changed, 227 insertions(+), 81 deletions(-)

Modified: sandbox/chrono/boost/chrono/chrono.hpp
==============================================================================
--- sandbox/chrono/boost/chrono/chrono.hpp (original)
+++ sandbox/chrono/boost/chrono/chrono.hpp 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -908,7 +908,8 @@
       typedef chrono::time_point<system_clock> time_point;
       static const bool is_monotonic = false;
 
- static time_point now( system::error_code & ec = system::throws );
+ static time_point now(); // throws on error
+ static time_point now(system::error_code & ec); // never throws
 
       static std::time_t to_time_t(const time_point& t);
       static time_point from_time_t(std::time_t t);
@@ -927,7 +928,8 @@
       typedef chrono::time_point<monotonic_clock> time_point;
       static const bool is_monotonic = true;
 
- static time_point now( system::error_code & ec = system::throws );
+ static time_point now(); // throws on error
+ static time_point now(system::error_code & ec); // never throws
   };
 
 //----------------------------------------------------------------------------//

Modified: sandbox/chrono/boost/chrono/process_times.hpp
==============================================================================
--- sandbox/chrono/boost/chrono/process_times.hpp (original)
+++ sandbox/chrono/boost/chrono/process_times.hpp 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -57,7 +57,10 @@
 // process_timer //
 //---------------------------------------------------------------------------------//
 
- class process_timer
+ class BOOST_CHRONO_DECL process_timer
+ // BOOST_CHRONO_DECL is required to quiet compiler warnings even though
+ // process_timer has no dynamically linked members, because process_timer is
+ // used as a base class for run_timer, which does have dynamically linked members.
     {
     public:
 

Modified: sandbox/chrono/libs/chrono/build/Jamfile.v2
==============================================================================
--- sandbox/chrono/libs/chrono/build/Jamfile.v2 (original)
+++ sandbox/chrono/libs/chrono/build/Jamfile.v2 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -10,16 +10,17 @@
 project boost/chrono
     : source-location ../src
     : usage-requirements # pass these requirement to dependents (i.e. users)
- <link>shared:<define>BOOST_CHRONO_DYN_LINK=1
- <link>static:<define>BOOST_CHRONO_STATIC_LINK=1
+ <link>shared:<define>BOOST_CHRONO_DYN_LINK
+ <link>static:<define>BOOST_CHRONO_STATIC_LINK
     ;
 
 SOURCES = chrono ;
 
 lib boost_chrono
    : $(SOURCES).cpp
- : <link>shared:<define>BOOST_CHRONO_DYN_LINK=1
- <link>static:<define>BOOST_CHRONO_STATIC_LINK=1
+ ../../system/build//boost_system
+ : <link>shared:<define>BOOST_ALL_DYN_LINK
+ <link>static:<define>BOOST_All_STATIC_LINK
    ;
 
 boost-install boost_chrono ;
\ No newline at end of file

Modified: sandbox/chrono/libs/chrono/src/chrono.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/src/chrono.cpp (original)
+++ sandbox/chrono/libs/chrono/src/chrono.cpp 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -34,10 +34,11 @@
   {
     LARGE_INTEGER freq;
     if ( !QueryPerformanceFrequency( &freq ) )
- return -1.0;
+ return 0.0L;
     return 1000000000.0L / freq.QuadPart;
   }
 
+ const double nanosecs_per_tic = get_nanosecs_per_tic();
 }
 
 namespace boost
@@ -45,6 +46,21 @@
 namespace chrono
 {
 
+ monotonic_clock::time_point monotonic_clock::now()
+ {
+
+ LARGE_INTEGER pcount;
+ if ( nanosecs_per_tic <= 0.0L || !QueryPerformanceCounter( &pcount ) )
+ {
+ DWORD cause = (nanosecs_per_tic <= 0.0L ? ERROR_NOT_SUPPORTED : ::GetLastError());
+ boost::throw_exception(
+ system::system_error( cause, system::system_category, "chrono::monotonic_clock" ));
+ }
+
+ return time_point(duration(
+ static_cast<monotonic_clock::rep>(nanosecs_per_tic * pcount.QuadPart) ));
+ }
+
   monotonic_clock::time_point monotonic_clock::now( system::error_code & ec )
   {
     static double nanosecs_per_tic = get_nanosecs_per_tic();
@@ -53,26 +69,28 @@
     if ( nanosecs_per_tic <= 0.0L || !QueryPerformanceCounter( &pcount ) )
     {
       DWORD cause = (nanosecs_per_tic <= 0.0L ? ERROR_NOT_SUPPORTED : ::GetLastError());
- if ( &ec == &system::throws )
- {
- boost::throw_exception(
- system::system_error( cause, system::system_category, "monotonic_clock" ));
- }
       ec.assign( cause, system::system_category );
- return time_point(duration(
- static_cast<monotonic_clock::rep>(-1.0) ));
- }
+ return time_point(duration(0));
+ }
 
- if ( &ec != &system::throws ) ec.clear();
+ ec.clear();
     return time_point(duration(
       static_cast<monotonic_clock::rep>(nanosecs_per_tic * pcount.QuadPart) ));
   }
 
+ system_clock::time_point system_clock::now()
+ {
+ FILETIME ft;
+ ::GetSystemTimeAsFileTime( &ft ); // never fails
+ return time_point(duration(
+ (static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime));
+ }
+
   system_clock::time_point system_clock::now( system::error_code & ec )
   {
     FILETIME ft;
     ::GetSystemTimeAsFileTime( &ft ); // never fails
- if ( &ec != &system::throws ) ec.clear();
+ ec.clear();
     return time_point(duration(
       (static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime));
   }
@@ -113,6 +131,111 @@
 //----------------------------------------------------------------------------//
 #elif defined(BOOST_CHRONO_MAC_API)
 
+#include <sys/time.h> //for gettimeofday and timeval
+#include <mach/mach_time.h> // mach_absolute_time, mach_timebase_info_data_t
+
+namespace boost
+{
+namespace chrono
+{
+
+// system_clock
+
+// gettimeofday is the most precise "system time" available on this platform.
+// It returns the number of microseconds since New Years 1970 in a struct called timeval
+// which has a field for seconds and a field for microseconds.
+// Fill in the timeval and then convert that to the time_point
+system_clock::time_point
+system_clock::now()
+{
+ timeval tv;
+ gettimeofday(&tv, 0);
+ return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec));
+}
+
+system_clock::time_point
+system_clock::now(system::error_code & ec)
+{
+ timeval tv;
+ gettimeofday(&tv, 0);
+ ec.clear();
+ return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec));
+}
+
+// Take advantage of the fact that on this platform time_t is nothing but
+// an integral count of seconds since New Years 1970 (same epoch as timeval).
+// Just get the duration out of the time_point and truncate it to seconds.
+time_t
+system_clock::to_time_t(const time_point& t)
+{
+ return time_t(duration_cast<seconds>(t.time_since_epoch()).count());
+}
+
+// Just turn the time_t into a count of seconds and construct a time_point with it.
+system_clock::time_point
+system_clock::from_time_t(time_t t)
+{
+ return system_clock::time_point(seconds(t));
+}
+
+// monotonic_clock
+
+// Note, in this implementation monotonic_clock and high_resolution_clock
+// are the same clock. They are both based on mach_absolute_time().
+// mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number of
+// nanoseconds since the computer booted up. MachInfo.numer and MachInfo.denom
+// are run time constants supplied by the OS. This clock has no relationship
+// to the Gregorian calendar. It's main use is as a high resolution timer.
+
+// MachInfo.numer / MachInfo.denom is often 1 on the latest equipment. Specialize
+// for that case as an optimization.
+static
+monotonic_clock::rep
+monotonic_simplified()
+{
+ return mach_absolute_time();
+}
+
+static
+double
+compute_monotonic_factor()
+{
+ mach_timebase_info_data_t MachInfo;
+ mach_timebase_info(&MachInfo);
+ return static_cast<double>(MachInfo.numer) / MachInfo.denom;
+}
+
+static
+monotonic_clock::rep
+monotonic_full()
+{
+ static const double factor = compute_monotonic_factor();
+ return static_cast<monotonic_clock::rep>(mach_absolute_time() * factor);
+}
+
+typedef monotonic_clock::rep (*FP)();
+
+static
+FP
+init_monotonic_clock()
+{
+ mach_timebase_info_data_t MachInfo;
+ mach_timebase_info(&MachInfo);
+ if (MachInfo.numer == MachInfo.denom)
+ return &monotonic_simplified;
+ return &monotonic_full;
+}
+
+monotonic_clock::time_point
+monotonic_clock::now()
+{
+ static FP fp = init_monotonic_clock();
+ return time_point(duration(fp()));
+}
+
+} // namespace chrono
+} // namespace boost
+
 //----------------------------------------------------------------------------//
 // POSIX //
 //----------------------------------------------------------------------------//
@@ -144,13 +267,28 @@
     timespec ts;
     if ( ::clock_gettime( CLOCK_REALTIME, &ts ) )
     {
- throw std::runtime_error( "system_clock: clock_gettime failed" );
+ boost::throw_exception(
+ system::system_error( errno, system::system_category, "chrono::system_clock" ));
     }
 
     return time_point(duration(
       static_cast<system_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
   }
 
+ system_clock::time_point system_clock::now(system::error_code & ec)
+ {
+ timespec ts;
+ if ( ::clock_gettime( CLOCK_REALTIME, &ts ) )
+ {
+ ec.assign( errno, system::system_category );
+ return time_point(0);
+ }
+
+ ec.clear();
+ return time_point(duration(
+ static_cast<system_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
+ }
+
   std::time_t system_clock::to_time_t(const system_clock::time_point& t)
   {
       return static_cast<std::time_t>( t.time_since_epoch().count() / 1000000000 );
@@ -170,9 +308,24 @@
     timespec ts;
     if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) )
     {
- throw std::runtime_error( "monotonic_clock: clock_gettime failed" );
+ boost::throw_exception(
+ system::system_error( errno, system::system_category, "chrono::monotonic_clock" ));
+ }
+
+ return time_point(duration(
+ static_cast<monotonic_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
+ }
+
+ monotonic_clock::time_point monotonic_clock::now(system::error_code & ec)
+ {
+ timespec ts;
+ if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) )
+ {
+ ec.assign( errno, system::system_category );
+ return time_point(duration(0));
     }
 
+ ec.clear();
     return time_point(duration(
       static_cast<monotonic_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
   }

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/await_keystroke/await_keystroke.vcproj
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/await_keystroke/await_keystroke.vcproj (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/await_keystroke/await_keystroke.vcproj 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -18,6 +18,8 @@
         <Configurations>
                 <Configuration
                         Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -88,6 +90,8 @@
                 </Configuration>
                 <Configuration
                         Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -172,14 +176,6 @@
                                 RelativePath="..\..\..\example\await_keystroke.cpp"
>
                         </File>
- <File
- RelativePath="..\..\..\src\chrono.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\system\src\error_code.cpp"
- >
- </File>
                 </Filter>
                 <Filter
                         Name="Header Files"

Added: sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_dll/chrono_dll.vcproj
==============================================================================
--- (empty file)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_dll/chrono_dll.vcproj 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="chrono_dll"
+ ProjectGUID="{724599F0-7DB3-4D37-A8F6-D905020C2D8F}"
+ RootNamespace="chrono_dll"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="..\common.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CHRONO_DLL_EXPORTS"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="..\common.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CHRONO_DLL_EXPORTS"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\src\chrono.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\process_clock.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\run_timer.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\run_timer_static.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -4,12 +4,35 @@
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ratio_test", "ratio_test\ratio_test.vcproj", "{C2B1EC73-9C8A-46C8-A602-F4DC36EF4874}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "time2_demo", "time2_demo\time2_demo.vcproj", "{1635693B-62F9-4D21-B341-090987602716}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212} = {8E1660C2-6981-4D39-ACF4-1594D6BEB212}
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F} = {724599F0-7DB3-4D37-A8F6-D905020C2D8F}
+ EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "await_keystroke", "await_keystroke\await_keystroke.vcproj", "{E0E5B024-EF94-46AE-A848-3973848F2773}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212} = {8E1660C2-6981-4D39-ACF4-1594D6BEB212}
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F} = {724599F0-7DB3-4D37-A8F6-D905020C2D8F}
+ EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_timer_test", "run_timer_test\run_timer_test.vcproj", "{BD153170-B250-4081-A736-603A593B470B}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212} = {8E1660C2-6981-4D39-ACF4-1594D6BEB212}
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F} = {724599F0-7DB3-4D37-A8F6-D905020C2D8F}
+ EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_timer_example", "run_timer_example\run_timer_example.vcproj", "{50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212} = {8E1660C2-6981-4D39-ACF4-1594D6BEB212}
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F} = {724599F0-7DB3-4D37-A8F6-D905020C2D8F}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "system_dll", "system_dll\system_dll.vcproj", "{8E1660C2-6981-4D39-ACF4-1594D6BEB212}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chrono_dll", "chrono_dll\chrono_dll.vcproj", "{724599F0-7DB3-4D37-A8F6-D905020C2D8F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212} = {8E1660C2-6981-4D39-ACF4-1594D6BEB212}
+ EndProjectSection
 EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -18,9 +41,7 @@
         EndGlobalSection
         GlobalSection(ProjectConfigurationPlatforms) = postSolution
                 {C2B1EC73-9C8A-46C8-A602-F4DC36EF4874}.Debug|Win32.ActiveCfg = Debug|Win32
- {C2B1EC73-9C8A-46C8-A602-F4DC36EF4874}.Debug|Win32.Build.0 = Debug|Win32
                 {C2B1EC73-9C8A-46C8-A602-F4DC36EF4874}.Release|Win32.ActiveCfg = Release|Win32
- {C2B1EC73-9C8A-46C8-A602-F4DC36EF4874}.Release|Win32.Build.0 = Release|Win32
                 {1635693B-62F9-4D21-B341-090987602716}.Debug|Win32.ActiveCfg = Debug|Win32
                 {1635693B-62F9-4D21-B341-090987602716}.Debug|Win32.Build.0 = Debug|Win32
                 {1635693B-62F9-4D21-B341-090987602716}.Release|Win32.ActiveCfg = Release|Win32
@@ -37,6 +58,14 @@
                 {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Debug|Win32.Build.0 = Debug|Win32
                 {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Release|Win32.ActiveCfg = Release|Win32
                 {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Release|Win32.Build.0 = Release|Win32
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212}.Debug|Win32.Build.0 = Debug|Win32
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212}.Release|Win32.ActiveCfg = Release|Win32
+ {8E1660C2-6981-4D39-ACF4-1594D6BEB212}.Release|Win32.Build.0 = Release|Win32
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F}.Debug|Win32.Build.0 = Debug|Win32
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F}.Release|Win32.ActiveCfg = Release|Win32
+ {724599F0-7DB3-4D37-A8F6-D905020C2D8F}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/common.vsprops
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/common.vsprops (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/common.vsprops 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -3,13 +3,11 @@
         ProjectType="Visual C++"
         Version="8.00"
         Name="common"
- OutputDirectory="$(TEMP)\$(SolutionName)\$(ConfigurationName)"
- IntermediateDirectory="$(TEMP)\$(SolutionName)\$(ProjectName)\$(ConfigurationName)"
>
         <Tool
                 Name="VCCLCompilerTool"
                 AdditionalIncludeDirectories="..\..\..\..\.."
- PreprocessorDefinitions="BOOST_ALL_NO_LIB"
+ PreprocessorDefinitions="BOOST_ALL_NO_LIB;BOOST_SYSTEM_DYN_LINK;BOOST_CHRONO_DYN_LINK"
                 ExceptionHandling="2"
         />
 </VisualStudioPropertySheet>

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -18,6 +18,8 @@
         <Configurations>
                 <Configuration
                         Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -88,6 +90,8 @@
                 </Configuration>
                 <Configuration
                         Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -169,29 +173,9 @@
                         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
                         <File
- RelativePath="..\..\..\src\chrono.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\system\src\error_code.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\src\process_clock.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\src\run_timer.cpp"
- >
- </File>
- <File
                                 RelativePath="..\..\..\example\run_timer_example.cpp"
>
                         </File>
- <File
- RelativePath="..\..\..\src\run_timer_static.cpp"
- >
- </File>
                 </Filter>
                 <Filter
                         Name="Header Files"

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_test/run_timer_test.vcproj
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_test/run_timer_test.vcproj (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_test/run_timer_test.vcproj 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -18,6 +18,8 @@
         <Configurations>
                 <Configuration
                         Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -90,6 +92,8 @@
                 </Configuration>
                 <Configuration
                         Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -173,26 +177,6 @@
                         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
                         <File
- RelativePath="..\..\..\src\chrono.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\system\src\error_code.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\src\process_clock.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\src\run_timer.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\src\run_timer_static.cpp"
- >
- </File>
- <File
                                 RelativePath="..\..\run_timer_test.cpp"
>
                         </File>

Added: sandbox/chrono/libs/chrono/test/chrono_msvc/system_dll/system_dll.vcproj
==============================================================================
--- (empty file)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/system_dll/system_dll.vcproj 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="system_dll"
+ ProjectGUID="{8E1660C2-6981-4D39-ACF4-1594D6BEB212}"
+ RootNamespace="system_dll"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="..\common.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SYSTEM_DLL_EXPORTS"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="&#x0D;&#x0A;"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="..\common.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SYSTEM_DLL_EXPORTS"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\..\system\src\error_code.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/time2_demo/time2_demo.vcproj
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/time2_demo/time2_demo.vcproj (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/time2_demo/time2_demo.vcproj 2008-12-08 10:11:02 EST (Mon, 08 Dec 2008)
@@ -18,6 +18,8 @@
         <Configurations>
                 <Configuration
                         Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -88,6 +90,8 @@
                 </Configuration>
                 <Configuration
                         Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1"
                         InheritedPropertySheets="..\common.vsprops"
                         CharacterSet="1"
@@ -169,14 +173,6 @@
                         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
                         <File
- RelativePath="..\..\..\src\chrono.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\system\src\error_code.cpp"
- >
- </File>
- <File
                                 RelativePath="..\..\..\example\time2_demo.cpp"
>
                         </File>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk