Index: toltcl/CMakeLists.txt
===================================================================
--- toltcl/CMakeLists.txt	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/CMakeLists.txt	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,38 @@
+cmake_minimum_required( VERSION 2.8 )
+
+set( CMAKE_MODULE_PATH
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
+  ${CMAKE_MODULE_PATH} )
+
+# The version number.
+set (TOLTCL_VERSION_MAJOR 3)
+set (TOLTCL_VERSION_MINOR 2)
+
+# look for tcl
+find_package( TclStub REQUIRED )
+if( TCL_FOUND )
+  add_definitions( -DUSE_TCL_STUBS )
+  add_definitions( -DTCL_THREADS )
+  include_directories( ${TCL_INCLUDE_PATH} )
+  message( STATUS ${TCL_LIBRARY_PATH} )
+  message( STATUS ${TCL_LIBRARY_PATH_PARENT} )
+
+  set( CMAKE_INSTALL_PREFIX ${TCL_LIBRARY_PATH_PARENT} )
+else( TCL_FOUND )
+  message( SEND_ERROR "TCL extensions need Tcl Stubs library" )
+endif( TCL_FOUND )
+
+# look fot tol
+find_package( TOL REQUIRED )
+if( TOL_FOUND )
+  message( STATUS "TOL_INCLUDE_DIR = ${TOL_INCLUDE_DIR}" )
+  message( STATUS "TOL_LIBRARIES = ${TOL_LIBRARIES}" )
+else( TOL_FOUND )
+endif( TOL_FOUND )
+ 
+set( TOLTCL_DEST_DIR "lib/toltcl${TOLTCL_VERSION_MAJOR}.${TOLTCL_VERSION_MINOR}"
+  CACHE INTERNAL "" )
+
+add_subdirectory( generic )
+add_subdirectory( library )
+
Index: toltcl/cmake/modules/FindTOL.cmake
===================================================================
--- toltcl/cmake/modules/FindTOL.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/cmake/modules/FindTOL.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,55 @@
+# This module defines
+# TOL_FOUND.  If false, you cannot build anything that requires TOL.
+# TOL_INCLUDE_DIR where to find the tol's header files
+# TOL_LIBRARIES, the libraries to link against to use TOL
+# also defined, but not for general use is
+# TOL_LIBRARY, the path to tol library.
+#
+# You can provide in TOL_PREFIX_PATH the path to the prefix
+# instalation of TOL.
+#
+
+include( LibFindMacros )
+
+set( TOL_FOUND 0 )
+
+if( EXISTS ${TOL_PREFIX_PATH} )
+
+  #find includes
+  find_path(
+    TOL_INCLUDE_DIR
+    NAMES "tol/tol_bcommon.h"
+    PATHS ${TOL_PREFIX_PATH}
+    PATH_SUFFIXES "include"
+    NO_DEFAULT_PATH )
+  find_library( TOL_LIBRARY
+    NAMES tol
+    PATHS ${TOL_PREFIX_PATH}
+    PATH_SUFFIXES "lib"
+    NO_DEFAULT_PATH )
+else(  EXISTS ${TOL_PREFIX_PATH} )
+
+  #find includes
+  find_path(
+    TOL_INCLUDE_DIR
+    NAMES "tol/tol_bcommon.h" )
+  find_library( TOL_LIBRARY
+    NAMES tol )
+endif( EXISTS ${TOL_PREFIX_PATH} )
+
+set( TOL_PROCESS_INCLUDES TOL_INCLUDE_DIR )
+set( TOL_PROCESS_LIBS TOL_LIBRARY )
+libfind_process( TOL )
+
+if( TOL_FOUND )
+  add_definitions(
+    -DHAVE_CONFIG_H -DUSE_DELAY_INIT -D__USE_ZIP_ARCHIVE__
+    -D__USE_DYNSCOPE__
+    -D__POOL_NONE__=0 -D__POOL_BFSMEM__=1 -D__USE_POOL__=__POOL_BFSMEM__
+    -D__HASH_MAP_MSVC__=1 -D__HASH_MAP_GOOGLE__=2 -D__HASH_MAP_GCC__=3 
+    -D__HASH_MAP_ICC__=4 -D__USE_HASH_MAP__=__HASH_MAP_GOOGLE__ )
+  if( UNIX )
+    add_definitions( -DUNIX )
+  endif( )
+endif( TOL_FOUND )
+
Index: toltcl/cmake/modules/LibFindMacros.cmake
===================================================================
--- toltcl/cmake/modules/LibFindMacros.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/cmake/modules/LibFindMacros.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,265 @@
+# Version 2.2
+# Public Domain, originally written by Lasse KÃ€rkkÃ€inen <tronic>
+# Maintained at https://github.com/Tronic/cmake-modules
+# Please send your improvements as pull requests on Github.
+
+# Find another package and make it a dependency of the current package.
+# This also automatically forwards the "REQUIRED" argument.
+# Usage: libfind_package(<prefix> <another package> [extra args to find_package])
+macro (libfind_package PREFIX PKG)
+  set(${PREFIX}_args ${PKG} ${ARGN})
+  if (${PREFIX}_FIND_REQUIRED)
+    set(${PREFIX}_args ${${PREFIX}_args} REQUIRED)
+  endif()
+  find_package(${${PREFIX}_args})
+  set(${PREFIX}_DEPENDENCIES ${${PREFIX}_DEPENDENCIES};${PKG})
+  unset(${PREFIX}_args)
+endmacro()
+
+# A simple wrapper to make pkg-config searches a bit easier.
+# Works the same as CMake's internal pkg_check_modules but is always quiet.
+macro (libfind_pkg_check_modules)
+  find_package(PkgConfig QUIET)
+  if (PKG_CONFIG_FOUND)
+    pkg_check_modules(${ARGN} QUIET)
+  endif()
+endmacro()
+
+# Avoid useless copy&pasta by doing what most simple libraries do anyway:
+# pkg-config, find headers, find library.
+# Usage: libfind_pkg_detect(<prefix> <pkg-config args> FIND_PATH <name> [other args] FIND_LIBRARY <name> [other args])
+# E.g. libfind_pkg_detect(SDL2 sdl2 FIND_PATH SDL.h PATH_SUFFIXES SDL2 FIND_LIBRARY SDL2)
+function (libfind_pkg_detect PREFIX)
+  # Parse arguments
+  set(argname pkgargs)
+  foreach (i ${ARGN})
+    if ("${i}" STREQUAL "FIND_PATH")
+      set(argname pathargs)
+    elseif ("${i}" STREQUAL "FIND_LIBRARY")
+      set(argname libraryargs)
+    else()
+      set(${argname} ${${argname}} ${i})
+    endif()
+  endforeach()
+  if (NOT pkgargs)
+    message(FATAL_ERROR "libfind_pkg_detect requires at least a pkg_config package name to be passed.")
+  endif()
+  # Find library
+  libfind_pkg_check_modules(${PREFIX}_PKGCONF ${pkgargs})
+  if (pathargs)
+    find_path(${PREFIX}_INCLUDE_DIR NAMES ${pathargs} HINTS ${${PREFIX}_PKGCONF_INCLUDE_DIRS})
+  endif()
+  if (libraryargs)
+    find_library(${PREFIX}_LIBRARY NAMES ${libraryargs} HINTS ${${PREFIX}_PKGCONF_LIBRARY_DIRS})
+  endif()
+endfunction()
+
+# Extracts a version #define from a version.h file, output stored to <PREFIX>_VERSION.
+# Usage: libfind_version_header(Foobar foobar/version.h FOOBAR_VERSION_STR)
+# Fourth argument "QUIET" may be used for silently testing different define names.
+# This function does nothing if the version variable is already defined.
+function (libfind_version_header PREFIX VERSION_H DEFINE_NAME)
+  # Skip processing if we already have a version or if the include dir was not found
+  if (${PREFIX}_VERSION OR NOT ${PREFIX}_INCLUDE_DIR)
+    return()
+  endif()
+  set(quiet ${${PREFIX}_FIND_QUIETLY})
+  # Process optional arguments
+  foreach(arg ${ARGN})
+    if (arg STREQUAL "QUIET")
+      set(quiet TRUE)
+    else()
+      message(AUTHOR_WARNING "Unknown argument ${arg} to libfind_version_header ignored.")
+    endif()
+  endforeach()
+  # Read the header and parse for version number
+  set(filename "${${PREFIX}_INCLUDE_DIR}/${VERSION_H}")
+  if (NOT EXISTS ${filename})
+    if (NOT quiet)
+      message(AUTHOR_WARNING "Unable to find ${${PREFIX}_INCLUDE_DIR}/${VERSION_H}")
+    endif()
+    return()
+  endif()
+  file(READ "${filename}" header)
+  string(REGEX REPLACE ".*#[ \t]*define[ \t]*${DEFINE_NAME}[ \t]*\"([^\n]*)\".*" "\\1" match "${header}")
+  # No regex match?
+  if (match STREQUAL header)
+    if (NOT quiet)
+      message(AUTHOR_WARNING "Unable to find \#define ${DEFINE_NAME} \"<version>\" from ${${PREFIX}_INCLUDE_DIR}/${VERSION_H}")
+    endif()
+    return()
+  endif()
+  # Export the version string
+  set(${PREFIX}_VERSION "${match}" PARENT_SCOPE)
+endfunction()
+
+# Do the final processing once the paths have been detected.
+# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain
+# all the variables, each of which contain one include directory.
+# Ditto for ${PREFIX}_PROCESS_LIBS and library files.
+# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES.
+# Also handles errors in case library detection was required, etc.
+function (libfind_process PREFIX)
+  # Skip processing if already processed during this configuration run
+  if (${PREFIX}_FOUND)
+    return()
+  endif()
+
+  set(found TRUE)  # Start with the assumption that the package was found
+
+  # Did we find any files? Did we miss includes? These are for formatting better error messages.
+  set(some_files FALSE)
+  set(missing_headers FALSE)
+
+  # Shorthands for some variables that we need often
+  set(quiet ${${PREFIX}_FIND_QUIETLY})
+  set(required ${${PREFIX}_FIND_REQUIRED})
+  set(exactver ${${PREFIX}_FIND_VERSION_EXACT})
+  set(findver "${${PREFIX}_FIND_VERSION}")
+  set(version "${${PREFIX}_VERSION}")
+
+  # Lists of config option names (all, includes, libs)
+  unset(configopts)
+  set(includeopts ${${PREFIX}_PROCESS_INCLUDES})
+  set(libraryopts ${${PREFIX}_PROCESS_LIBS})
+
+  # Process deps to add to 
+  foreach (i ${PREFIX} ${${PREFIX}_DEPENDENCIES})
+    if (DEFINED ${i}_INCLUDE_OPTS OR DEFINED ${i}_LIBRARY_OPTS)
+      # The package seems to export option lists that we can use, woohoo!
+      list(APPEND includeopts ${${i}_INCLUDE_OPTS})
+      list(APPEND libraryopts ${${i}_LIBRARY_OPTS})
+    else()
+      # If plural forms don't exist or they equal singular forms
+      if ((NOT DEFINED ${i}_INCLUDE_DIRS AND NOT DEFINED ${i}_LIBRARIES) OR
+          ({i}_INCLUDE_DIR STREQUAL ${i}_INCLUDE_DIRS AND ${i}_LIBRARY STREQUAL ${i}_LIBRARIES))
+        # Singular forms can be used
+        if (DEFINED ${i}_INCLUDE_DIR)
+          list(APPEND includeopts ${i}_INCLUDE_DIR)
+        endif()
+        if (DEFINED ${i}_LIBRARY)
+          list(APPEND libraryopts ${i}_LIBRARY)
+        endif()
+      else()
+        # Oh no, we don't know the option names
+        message(FATAL_ERROR "We couldn't determine config variable names for ${i} includes and libs. Aieeh!")
+      endif()
+    endif()
+  endforeach()
+  
+  if (includeopts)
+    list(REMOVE_DUPLICATES includeopts)
+  endif()
+  
+  if (libraryopts)
+    list(REMOVE_DUPLICATES libraryopts)
+  endif()
+
+  string(REGEX REPLACE ".*[ ;]([^ ;]*(_INCLUDE_DIRS|_LIBRARIES))" "\\1" tmp "${includeopts} ${libraryopts}")
+  if (NOT tmp STREQUAL "${includeopts} ${libraryopts}")
+    message(AUTHOR_WARNING "Plural form ${tmp} found in config options of ${PREFIX}. This works as before but is now deprecated. Please only use singular forms INCLUDE_DIR and LIBRARY, and update your find scripts for LibFindMacros > 2.0 automatic dependency system (most often you can simply remove the PROCESS variables entirely).")
+  endif()
+
+  # Include/library names separated by spaces (notice: not CMake lists)
+  unset(includes)
+  unset(libs)
+
+  # Process all includes and set found false if any are missing
+  foreach (i ${includeopts})
+    list(APPEND configopts ${i})
+    if (NOT "${${i}}" STREQUAL "${i}-NOTFOUND")
+      list(APPEND includes "${${i}}")
+    else()
+      set(found FALSE)
+      set(missing_headers TRUE)
+    endif()
+  endforeach()
+
+  # Process all libraries and set found false if any are missing
+  foreach (i ${libraryopts})
+    list(APPEND configopts ${i})
+    if (NOT "${${i}}" STREQUAL "${i}-NOTFOUND")
+      list(APPEND libs "${${i}}")
+    else()
+      set (found FALSE)
+    endif()
+  endforeach()
+
+  # Version checks
+  if (found AND findver)
+    if (NOT version)
+      message(WARNING "The find module for ${PREFIX} does not provide version information, so we'll just assume that it is OK. Please fix the module or remove package version requirements to get rid of this warning.")
+    elseif (version VERSION_LESS findver OR (exactver AND NOT version VERSION_EQUAL findver))
+      set(found FALSE)
+      set(version_unsuitable TRUE)
+    endif()
+  endif()
+
+  # If all-OK, hide all config options, export variables, print status and exit
+  if (found)
+    foreach (i ${configopts})
+      mark_as_advanced(${i})
+    endforeach()
+    if (NOT quiet)
+      message(STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}")
+      if (LIBFIND_DEBUG)
+        message(STATUS "  ${PREFIX}_DEPENDENCIES=${${PREFIX}_DEPENDENCIES}")
+        message(STATUS "  ${PREFIX}_INCLUDE_OPTS=${includeopts}")
+        message(STATUS "  ${PREFIX}_INCLUDE_DIRS=${includes}")
+        message(STATUS "  ${PREFIX}_LIBRARY_OPTS=${libraryopts}")
+        message(STATUS "  ${PREFIX}_LIBRARIES=${libs}")
+      endif()
+      set (${PREFIX}_INCLUDE_OPTS ${includeopts} PARENT_SCOPE)
+      set (${PREFIX}_LIBRARY_OPTS ${libraryopts} PARENT_SCOPE)
+      set (${PREFIX}_INCLUDE_DIRS ${includes} PARENT_SCOPE)
+      set (${PREFIX}_LIBRARIES ${libs} PARENT_SCOPE)
+      set (${PREFIX}_FOUND TRUE PARENT_SCOPE)
+    endif()
+    return()    
+  endif()
+
+  # Format messages for debug info and the type of error
+  set(vars "Relevant CMake configuration variables:\n")
+  foreach (i ${configopts})
+    mark_as_advanced(CLEAR ${i})
+    set(val ${${i}})
+    if ("${val}" STREQUAL "${i}-NOTFOUND")
+      set (val "<not found>")
+    elseif (val AND NOT EXISTS ${val})
+      set (val "${val}  (does not exist)")
+    else()
+      set(some_files TRUE)
+    endif()
+    set(vars "${vars}  ${i}=${val}\n")
+  endforeach()
+  set(vars "${vars}You may use CMake GUI, cmake -D or ccmake to modify the values. Delete CMakeCache.txt to discard all values and force full re-detection if necessary.\n")
+  if (version_unsuitable)
+    set(msg "${PREFIX} ${${PREFIX}_VERSION} was found but")
+    if (exactver)
+      set(msg "${msg} only version ${findver} is acceptable.")
+    else()
+      set(msg "${msg} version ${findver} is the minimum requirement.")
+    endif()
+  else()
+    if (missing_headers)
+      set(msg "We could not find development headers for ${PREFIX}. Do you have the necessary dev package installed?")
+    elseif (some_files)
+      set(msg "We only found some files of ${PREFIX}, not all of them. Perhaps your installation is incomplete or maybe we just didn't look in the right place?")
+      if(findver)
+        set(msg "${msg} This could also be caused by incompatible version (if it helps, at least ${PREFIX} ${findver} should work).")
+      endif()
+    else()
+      set(msg "We were unable to find package ${PREFIX}.")
+    endif()
+  endif()
+
+  # Fatal error out if REQUIRED
+  if (required)
+    set(msg "REQUIRED PACKAGE NOT FOUND\n${msg} This package is REQUIRED and you need to install it or adjust CMake configuration in order to continue building ${CMAKE_PROJECT_NAME}.")
+    message(FATAL_ERROR "${msg}\n${vars}")
+  endif()
+  # Otherwise just print a nasty warning
+  if (NOT quiet)
+    message(WARNING "WARNING: MISSING PACKAGE\n${msg} This package is NOT REQUIRED and you may ignore this warning but by doing so you may miss some functionality of ${CMAKE_PROJECT_NAME}. \n${vars}")
+  endif()
+endfunction()
Index: toltcl/cmake/modules/MSysMacros.cmake
===================================================================
--- toltcl/cmake/modules/MSysMacros.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/cmake/modules/MSysMacros.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,12 @@
+if( MSYS )
+  get_filename_component( msys_usr $ENV{WD} DIRECTORY )
+  set( MSYS_USR_PATH ${msys_usr} CACHE INTERNAL "" )
+endif( MSYS )
+
+macro( msys_convert_path var path )
+  if( MSYS )
+    string( REGEX REPLACE ^/usr ${MSYS_USR_PATH} ${var} ${path} )
+  else( MSYS )
+    set( ${var} ${path} PARENT_SCOPE )
+  endif( MSYS )
+endmacro( )
Index: toltcl/generic/CMakeLists.txt
===================================================================
--- toltcl/generic/CMakeLists.txt	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/generic/CMakeLists.txt	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,13 @@
+add_library( toltcl SHARED
+  crash.c toltcl.c pool.cpp tclutils.cpp tolaccess.cpp tolsergrp.cpp 
+  toltableset.cpp toltime.cpp
+)
+
+message( "aaaa = ${CMAKE_CURRENT_SOURCE_DIR}" )
+
+include_directories( ${TOL_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
+
+target_link_libraries( toltcl
+  ${TCL_STUB_LIBRARY} ${TOL_LIBRARY} )
+
+install( TARGETS toltcl DESTINATION "${TOLTCL_DEST_DIR}" )
Index: toltcl/generic/tolaccess.cpp
===================================================================
--- toltcl/generic/tolaccess.cpp	(revision 950d323271295380b4385715fd861a43216180ee)
+++ toltcl/generic/tolaccess.cpp	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -745,4 +745,5 @@
     }
     objname = Tcl_GetString(items[1]);
+
     Tcl_UtfToExternalDString(NULL,objname,-1,&dstr);
     syn = gra->FINDVARIABLE(Tcl_DStringValue(&dstr));
@@ -1312,5 +1313,5 @@
   
   int datac;
-  Tcl_Obj ** datav = new ( Tcl_Obj* [ NUM_ARGS ] );
+  Tcl_Obj ** datav = new Tcl_Obj*[ NUM_ARGS ];
 
   // is ok to ask for a list
@@ -1656,9 +1657,5 @@
     tmp = I0.GetText();
     subitems[0] = Tcl_NewStringObj(tmp,-1);
-#if defined(_TOL_FROZEN_)
     value = (*serie)[I0];
-#else
-    value = (*serie)(I0);
-#endif
     if ( value.IsKnown() )
       subitems[1] = Tcl_NewDoubleObj(value.Value());
@@ -2547,5 +2544,5 @@
       printf("message: %s\n", ((BText&)str).Buffer());
       printf("objv[1] : %s\n", Tcl_GetString(objv[1]));
-      printf("%s\n", TT_interp->result);
+      printf("%s\n", Tcl_GetStringResult(TT_interp));
     }
     /* release the objects */
@@ -2602,5 +2599,5 @@
     if (status != TCL_OK) {
       printf("%s -- error in Tcl_EvalObjv:\n", CMD_SERIECHART);
-      printf("%s\n", TT_interp->result);
+      printf("%s\n", Tcl_GetStringResult(TT_interp));
       printf("objv[1] : %s\n", Tcl_GetString(objv[1]));
       printf("objv[2] : %s\n", Tcl_GetString(objv[2]));
Index: toltcl/generic/tolsergrp.cpp
===================================================================
--- toltcl/generic/tolsergrp.cpp	(revision 950d323271295380b4385715fd861a43216180ee)
+++ toltcl/generic/tolsergrp.cpp	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -1899,9 +1899,5 @@
     do {
       iter_cursor = cursors.data[iter];
-#if defined(_TOL_FROZEN_)
       dat = (*(iter_cursor->serie))[cur_date];
-#else
-      dat = (*(iter_cursor->serie))(cur_date);
-#endif
       if (dat.IsKnown())
         iter_cursor->append(idx_dating,dat.Value());
@@ -2137,9 +2133,5 @@
     do {
       iter_cursor = cursors.data[iter];
-#if defined(_TOL_FROZEN_)
       dat = (*(iter_cursor->serie))[cur_date];
-#else
-      dat = (*(iter_cursor->serie))(cur_date);
-#endif
       if (dat.IsKnown())
         iter_cursor->append(idx_dating,dat.Value());
@@ -2266,9 +2258,5 @@
   uts->ReadData();
   for ( i = 0; i < size_t(length); i++ ) {
-#if defined(_TOL_FROZEN_)
     serdata(i) = (*uts)[I0];
-#else
-    serdata(i) = (*uts)(I0); 
-#endif
     I0 += tms;
   }
Index: toltcl/generic/toltableset.cpp
===================================================================
--- toltcl/generic/toltableset.cpp	(revision 950d323271295380b4385715fd861a43216180ee)
+++ toltcl/generic/toltableset.cpp	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -121,5 +121,5 @@
   int AppendUnknown();
   int AppendEmptyReal();
-  int AppendText( char * txt );
+  int AppendText( const char * txt );
   /* prepend functions */
   int PrependReal( Tcl_Interp * interp, double v );
@@ -559,5 +559,5 @@
  */
 
-int Tol_ColumnData::AppendText( char * txt )
+int Tol_ColumnData::AppendText( const char * txt )
 {
 #ifdef _DEBUG_TABLE_
Index: toltcl/generic/toltcl.c
===================================================================
--- toltcl/generic/toltcl.c	(revision 950d323271295380b4385715fd861a43216180ee)
+++ toltcl/generic/toltcl.c	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -183,5 +183,5 @@
       printf("%s in file %s at line %d\n. str_ernno : %s",
 	     reason, file, line, Tol_gsl_strerror(gsl_errno));
-      printf("interp : %s\n", TT_interp->result);
+      printf("interp : %s\n", Tcl_GetStringResult(TT_interp));
     }
   }  
Index: toltcl/generic/toltcl.h
===================================================================
--- toltcl/generic/toltcl.h	(revision 950d323271295380b4385715fd861a43216180ee)
+++ toltcl/generic/toltcl.h	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -27,16 +27,30 @@
 #include <tcl.h>
 
+#if defined(__TOLTCL_MAJOR_VERSION__)
+#define TOLTCL_MAJOR_VERSION 	__TOLTCL_MAJOR_VERSION__
+#else
+#define TOLTCL_MAJOR_VERSION 	3
+#endif
+
+#if defined(__TOLTCL_MINOR_VERSION__)
+#define TOLTCL_MINOR_VERSION 	__TOLTCL_MINOR_VERSION__
+#else
+#define TOLTCL_MINOR_VERSION 	2
+#endif
+
+#define TOLTCL_TO_STRING0( x ) #x
+#define TOLTCL_TO_STRING(  x )  TOLTCL_TO_STRING0( x )
+
+#ifdef PACKAGE_VERSION
+ #define TOLTCL_VERSION PACKAGE_VERSION
+#else
+
+#define TOLTCL_VERSION TOLTCL_TO_STRING( TOLTCL_MAJOR_VERSION ) "." TOLTCL_TO_STRING( TOLTCL_MINOR_VERSION )
+#endif
+
 /*
  * Windows needs to know which symbols to export. Unix does not.
  * BUILD_TOLTCL should be undefined for Unix.
  */
-
-#define TOLTCL_MAJOR_VERSION 	3
-#define TOLTCL_MINOR_VERSION 	2
-#ifdef PACKAGE_VERSION
- #define TOLTCL_VERSION PACKAGE_VERSION
-#else
- #define TOLTCL_VERSION          "3.2"
-#endif
 
 #ifdef BUILD_TOLTCL
Index: toltcl/generic/toltime.cpp
===================================================================
--- toltcl/generic/toltime.cpp	(revision 950d323271295380b4385715fd861a43216180ee)
+++ toltcl/generic/toltime.cpp	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -87,9 +87,5 @@
   int    Minute()     const { return current.Minute(); }
   double         Second()     const { return current.Second(); }
-#if defined(_TOL_FROZEN_)
   int Contain( BDate & d ) { return uts->Contain( d ); }
-#else
-  int Contain( BDate & d ) { return uts->Contain( d, BTRUE ); }
-#endif
 };
 
Index: toltcl/library/CMakeLists.txt
===================================================================
--- toltcl/library/CMakeLists.txt	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/library/CMakeLists.txt	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,12 @@
+get_target_property( TOLTCL_LIB_LOCATION toltcl LOCATION )
+get_filename_component( TOLTCL_LIB_NAME ${TOLTCL_LIB_LOCATION} NAME )
+message( STATUS ${TOLTCL_LIB_NAME} )
+
+configure_file (
+  "${CMAKE_CURRENT_SOURCE_DIR}/pkgIndex.tcl.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/pkgIndex.tcl"
+  )
+
+install( FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgIndex.tcl" toltcl.tcl
+  DESTINATION "${TOLTCL_DEST_DIR}" )
+
Index: toltcl/library/pkgIndex.tcl.in
===================================================================
--- toltcl/library/pkgIndex.tcl.in	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/library/pkgIndex.tcl.in	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,26 @@
+# Tcl package index file, version 1.1
+
+proc LoadToltcl { version dir } {
+  global tcl_platform
+ 
+  set _version [ string map [ list "." "" ] $version ]
+  if {[info exist ::env(USE_TOLTCL_$_version)]} {
+    puts "requested to load Toltcl from $::env(USE_TOLTCL_$_version)"
+    load $::env(USE_TOLTCL_$_version)
+  } else {
+    set suffix [info sharedlibextension]
+    if {$tcl_platform(platform) eq "unix"} {
+      set name libtoltcl${version}[info sharedlibextension]
+    } else  {
+      set name toltcl.dll
+    }
+    load [file join $dir {@TOLTCL_LIB_NAME@}] Toltcl
+  }
+}
+
+package ifneeded Toltcl @TOLTCL_VERSION_MAJOR@.@TOLTCL_VERSION_MINOR@ \
+    [ string map [list %d $dir] {
+      LoadToltcl @TOLTCL_VERSION_MAJOR@.@TOLTCL_VERSION_MINOR@ {%d}
+      source [ file join {%d} toltcl.tcl ]
+    } ]
+
Index: toltcl/linux-i686.toolchain.cmake
===================================================================
--- toltcl/linux-i686.toolchain.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
+++ toltcl/linux-i686.toolchain.cmake	(revision b6e5dacc5786bd372a7967ec32a4af84e34be88e)
@@ -0,0 +1,6 @@
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_VERSION 1)
+set(CMAKE_SYSTEM_PROCESSOR "i686")
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
+set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
