#           define wxUSE_COMBOBOX 1
 #       endif
 #   endif
+
+#   if !wxUSE_DATETIME
+#       ifdef wxABORT_ON_CONFIG_ERROR
+#           error "wxCalendarCtrl requires wxUSE_DATETIME"
+#       else
+#           undef wxUSE_DATETIME
+#           define wxUSE_DATETIME 1
+#       endif
+#   endif
 #endif /* wxUSE_CALENDARCTRL */
 
 #if wxUSE_CHECKLISTBOX
 
     // the value in the provided pointer
     bool Found(const wxString& name, long *value) const;
 
+#if wxUSE_DATETIME
     // returns TRUE if an option taking a date value was found and stores the
     // value in the provided pointer
     bool Found(const wxString& name, wxDateTime *value) const;
+#endif // wxUSE_DATETIME
 
     // gets the number of parameters found
     size_t GetParamCount() const;
 
         // VZ: also need: IsDirWritable(), IsFileExecutable() &c (TODO)
 
     // time functions
-
+#if wxUSE_DATETIME
         // set the file last access/mod and creation times
         // (any of the pointers may be NULL)
     bool SetTimes(const wxDateTime *dtAccess,
         (void)GetTimes(NULL, &dtMod, NULL);
         return dtMod;
     }
+#endif // wxUSE_DATETIME
 
 #ifdef __WXMAC__
     bool MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) ;
 
 {
 public:
     wxFSFile(wxInputStream *stream, const wxString& loc,
-             const wxString& mimetype, const wxString& anchor,
-             wxDateTime modif)
+             const wxString& mimetype, const wxString& anchor
+#if wxUSE_DATETIME
+             , wxDateTime modif
+#endif // wxUSE_DATETIME
+             )
     {
         m_Stream = stream;
         m_Location = loc;
         m_MimeType = mimetype; m_MimeType.MakeLower();
         m_Anchor = anchor;
+#if wxUSE_DATETIME
         m_Modif = modif;
+#endif // wxUSE_DATETIME
     }
+
     virtual ~wxFSFile() { if (m_Stream) delete m_Stream; }
 
     // returns stream. This doesn't _create_ stream, it only returns
 
     const wxString& GetAnchor() const {return m_Anchor;}
 
+#if wxUSE_DATETIME
     wxDateTime GetModificationTime() const {return m_Modif;}
+#endif // wxUSE_DATETIME
 
 private:
     wxInputStream *m_Stream;
     wxString m_Location;
     wxString m_MimeType;
     wxString m_Anchor;
+#if wxUSE_DATETIME
     wxDateTime m_Modif;
+#endif // wxUSE_DATETIME
 
     DECLARE_ABSTRACT_CLASS(wxFSFile)
     DECLARE_NO_COPY_CLASS(wxFSFile)
 
 #define wxGRID_VALUE_CHOICEINT    _T("choiceint")
 #define wxGRID_VALUE_DATETIME     _T("datetime")
 
+#if wxUSE_DATETIME
+
 // the default renderer for the cells containing Time and dates..
 class WXDLLEXPORT wxGridCellDateTimeRenderer : public wxGridCellStringRenderer
 {
     wxDateTime::TimeZone m_tz;
 };
 
+#endif // wxUSE_DATETIME
 
 // the default renderer for the cells containing Time and dates..
 class WXDLLEXPORT wxGridCellEnumRenderer : public wxGridCellStringRenderer
 
     #include "wx/date.h"
 #endif // time/date
 
-#include "wx/datetime.h"
+#if wxUSE_DATETIME
+    #include "wx/datetime.h"
+#endif // wxUSE_DATETIME
 
 #if wxUSE_ODBC
     #include "wx/db.h"  // will #include sqltypes.h
     wxVariant(void* ptr, const wxString& name = wxEmptyString); // void* (general purpose)
     wxVariant(wxVariantData* data, const wxString& name = wxEmptyString); // User-defined data
 //TODO: Need to document
+#if wxUSE_DATETIME
     wxVariant(const wxDateTime& val, const wxString& name = wxEmptyString); // Date
+#endif // wxUSE_DATETIME
     wxVariant(const wxArrayString& val, const wxString& name = wxEmptyString); // String array
 #if wxUSE_ODBC
     wxVariant(const DATE_STRUCT* valptr, const wxString& name = wxEmptyString); // DateTime
     void operator= (const wxVariant& variant);
 
 //TODO: Need to document
+#if wxUSE_DATETIME
     bool operator== (const wxDateTime& value) const;
     bool operator!= (const wxDateTime& value) const;
     void operator= (const wxDateTime& value) ;
+#endif // wxUSE_DATETIME
 
     bool operator== (const wxArrayString& value) const;
     bool operator!= (const wxArrayString& value) const;
 #endif
     inline operator void* () const {  return GetVoidPtr(); }
 //TODO: Need to document
+#if wxUSE_DATETIME
     inline operator wxDateTime () const { return GetDateTime(); }
+#endif // wxUSE_DATETIME
 //TODO: End of Need to document
 
 // Accessors
 #endif
     void* GetVoidPtr() const ;
 //TODO: Need to document
+#if wxUSE_DATETIME
     wxDateTime GetDateTime() const ;
+#endif // wxUSE_DATETIME
     wxArrayString GetArrayString() const;
 //TODO: End of Need to document
 
     bool Convert(wxDate* value) const;
 #endif
 //TODO: Need to document
+#if wxUSE_DATETIME
     bool Convert(wxDateTime* value) const;
+#endif // wxUSE_DATETIME
 //TODO: End of Need to document
 
 // Attributes
 
         { Check(wxCMD_LINE_VAL_NUMBER); return m_longVal; }
     const wxString& GetStrVal() const
         { Check(wxCMD_LINE_VAL_STRING); return m_strVal;  }
+#if wxUSE_DATETIME
     const wxDateTime& GetDateVal() const
         { Check(wxCMD_LINE_VAL_DATE);   return m_dateVal; }
+#endif // wxUSE_DATETIME
 
     void SetLongVal(long val)
         { Check(wxCMD_LINE_VAL_NUMBER); m_longVal = val; m_hasVal = TRUE; }
     void SetStrVal(const wxString& val)
         { Check(wxCMD_LINE_VAL_STRING); m_strVal = val; m_hasVal = TRUE; }
+#if wxUSE_DATETIME
     void SetDateVal(const wxDateTime val)
         { Check(wxCMD_LINE_VAL_DATE); m_dateVal = val; m_hasVal = TRUE; }
+#endif // wxUSE_DATETIME
 
     void SetHasValue(bool hasValue = TRUE) { m_hasVal = hasValue; }
     bool HasValue() const { return m_hasVal; }
 
     long m_longVal;
     wxString m_strVal;
+#if wxUSE_DATETIME
     wxDateTime m_dateVal;
+#endif // wxUSE_DATETIME
 };
 
 struct wxCmdLineParam
     return TRUE;
 }
 
+#if wxUSE_DATETIME
 bool wxCmdLineParser::Found(const wxString& name, wxDateTime *value) const
 {
     int i = m_data->FindOption(name);
 
     return TRUE;
 }
+#endif // wxUSE_DATETIME
 
 size_t wxCmdLineParser::GetParamCount() const
 {
                             }
                             break;
 
+#if wxUSE_DATETIME
                         case wxCMD_LINE_VAL_DATE:
                             {
                                 wxDateTime dt;
                                 }
                             }
                             break;
+#endif // wxUSE_DATETIME
                     }
                 }
             }
 
 // private functions
 // ----------------------------------------------------------------------------
 
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if wxUSE_DATETIME && defined(__WIN32__) && !defined(__WXMICROWIN__)
 
 // convert between wxDateTime and FILETIME which is a 64-bit value representing
 // the number of 100-nanosecond intervals since January 1, 1601.
     }
 }
 
-#endif // __WIN32__
+#endif // wxUSE_DATETIME && __WIN32__
 
 // return a string with the volume par
 static wxString wxGetVolumeString(const wxString& volume, wxPathFormat format)
 // time functions
 // ----------------------------------------------------------------------------
 
+#if wxUSE_DATETIME
+
 bool wxFileName::SetTimes(const wxDateTime *dtAccess,
                           const wxDateTime *dtMod,
                           const wxDateTime *dtCreate)
     return FALSE;
 }
 
+#endif // wxUSE_DATETIME
+
 #ifdef __WXMAC__
 
 const short kMacExtensionMaxLength = 16 ;
 
     return new wxFSFile(new wxFFileInputStream(fullpath),
                         right,
                         GetMimeTypeFromExt(location),
-                        GetAnchor(location),
-                        wxDateTime(wxFileModificationTime(fullpath)));
+                        GetAnchor(location)
+#if wxUSE_DATETIME
+                        ,wxDateTime(wxFileModificationTime(fullpath))
+#endif // wxUSE_DATETIME
+                        );
 }
 
 wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags)
 
     return new wxFSFile(s,
                         right,
                         info->GetMime(),
-                        GetAnchor(location),
-                        wxDateTime::Now());
+                        GetAnchor(location)
+#if wxUSE_DATETIME
+                        , wxDateTime::Now()
+#endif // wxUSE_DATETIME
+                        );
 }
 
 
 
             m_Data = new char[len];
             memcpy(m_Data, data, len);
             m_Len = len;
-            m_Time = wxDateTime::Now();
+            InitTime();
         }
 
         MemFSHashObj(wxMemoryOutputStream& stream)
             m_Len = stream.GetSize();
             m_Data = new char[m_Len];
             stream.CopyTo(m_Data, m_Len);
-            m_Time = wxDateTime::Now();
+            InitTime();
         }
 
         ~MemFSHashObj()
 
         char *m_Data;
         size_t m_Len;
+#if wxUSE_DATETIME
         wxDateTime m_Time;
+#endif // wxUSE_DATETIME
 
     DECLARE_NO_COPY_CLASS(MemFSHashObj)
+
+    private:
+        void InitTime()
+        {
+#if wxUSE_DATETIME
+            m_Time = wxDateTime::Now();
+#endif // wxUSE_DATETIME            
+        }
 };
 
 
         else return new wxFSFile(new wxMemoryInputStream(obj -> m_Data, obj -> m_Len),
                             location,
                             GetMimeTypeFromExt(location),
-                            GetAnchor(location),
-                            obj -> m_Time);
+                            GetAnchor(location)
+#if wxUSE_DATETIME
+                            , obj -> m_Time
+#endif // wxUSE_DATETIME                            
+                            );
     }
     else return NULL;
 }
 
         return new wxFSFile(s,
                             left + wxT("#zip:") + right,
                             GetMimeTypeFromExt(location),
-                            GetAnchor(location),
-                            wxDateTime(wxFileModificationTime(left)));
+                            GetAnchor(location)
+#if wxUSE_DATETIME
+                            , wxDateTime(wxFileModificationTime(left))
+#endif // wxUSE_DATETIME
+                            );
     }
 
     delete s;
 
  * wxVariantDataDateTime
  */
 
+#if wxUSE_DATETIME
+
 class wxVariantDataDateTime: public wxVariantData
 {
     DECLARE_DYNAMIC_CLASS(wxVariantDataDateTime)
     return TRUE;
 }
 
+#endif // wxUSE_DATETIME
+
 // ----------------------------------------------------------------------------
 // wxVariantDataArrayString
 // ----------------------------------------------------------------------------
     m_name = name;
 }
 
+#if wxUSE_DATETIME
 wxVariant::wxVariant(const wxDateTime& val, const wxString& name) // Date
 {
     m_data = new wxVariantDataDateTime(val);
     m_name = name;
 }
+#endif // wxUSE_DATETIME
 
 #if wxUSE_ODBC
 wxVariant::wxVariant(const TIME_STRUCT* valptr, const wxString& name) // Date
     }
 }
 
+#if wxUSE_DATETIME
 bool wxVariant::operator== (const wxDateTime& value) const
 {
     wxDateTime thisValue;
         m_data = new wxVariantDataDateTime(value);
     }
 }
+#endif // wxUSE_DATETIME
 
 #if wxUSE_ODBC
 void wxVariant::operator= (const DATE_STRUCT* value)
     return (void*) ((wxVariantDataVoidPtr*) m_data)->GetValue();
 }
 
+#if wxUSE_DATETIME
 wxDateTime wxVariant::GetDateTime() const
 {
     wxDateTime value;
 
     return value;
 }
+#endif // wxUSE_DATETIME
 
 wxList& wxVariant::GetList() const
 {
 }
 #endif // wxUSE_TIMEDATE
 
+#if wxUSE_DATETIME
 bool wxVariant::Convert(wxDateTime* value) const
 {
     wxString type(GetType());
     wxString val;
     return Convert(&val) && (value->ParseDate(val));
 }
+#endif // wxUSE_DATETIME
\ No newline at end of file
 
 // wxGridCellDateTimeRenderer
 // ----------------------------------------------------------------------------
 
+#if wxUSE_DATETIME
+
 // Enables a grid cell to display a formated date and or time
 
 wxGridCellDateTimeRenderer::wxGridCellDateTimeRenderer(wxString outformat, wxString informat)
         m_oformat=params;
 }
 
+#endif // wxUSE_DATETIME
+
 // ----------------------------------------------------------------------------
 // wxGridCellChoiceNumberRenderer
 // ----------------------------------------------------------------------------
 
     fi = fsys.OpenFile(bookfile.GetLocation() + wxT(".cached"));
 
     if (fi == NULL ||
+#if wxUSE_DATETIME
           fi->GetModificationTime() < bookfile.GetModificationTime() ||
+#endif // wxUSE_DATETIME
           !LoadCachedBook(bookr, fi->GetStream()))
     {
         if (fi != NULL) delete fi;
         fi = fsys.OpenFile(m_TempPath + wxFileNameFromPath(bookfile.GetLocation()) + wxT(".cached"));
         if (m_TempPath == wxEmptyString || fi == NULL ||
+#if wxUSE_DATETIME
             fi->GetModificationTime() < bookfile.GetModificationTime() ||
+#endif // wxUSE_DATETIME
             !LoadCachedBook(bookr, fi->GetStream()))
         {
             LoadMSProject(bookr, fsys, indexfile, contfile);