[Vm-dev] VM Maker: CMakeVMMakerSqueak-tty.87.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Jul 13 16:36:37 UTC 2014


Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.87.mcz

==================== Summary ====================

Name: CMakeVMMakerSqueak-tty.87
Author: tty
Time: 13 July 2014, 12:36:50.954 pm
UUID: 6e7d5e30-0da8-4b27-8a71-edb2d6412665
Ancestors: CMakeVMMakerSqueak-tty.86

Re-wrote the config.cmake generation to use 'Cmake Templates' which are smalltalk classes that wrap CMake commands. Think Seaside-For-CMake or  C-Side (heh) where the config.cmake file is created using components that render themselves.

This approach is much cleaner and intuitive than the message based CMake code generation used in the CMakeGenerator cmake commands protocol. Also, it does not supplant it or interfere with it.

Next up is bring in the  platforms/unix/config/config.h.in  layout to replace Ian's config file.

After that is extend this approach to Plugins generation using Ian's existing PluginExternal.cmake  PluginInternal.cmake templates

Once the templating system is in place, then its on to the home stretch and get this puppy done and documented.

=============== Diff against CMakeVMMakerSqueak-tty.86 ===============

Item was changed:
  SystemOrganization addCategory: #CMakeVMMakerSqueak!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Android'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-BSD32x86'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Builder'!
+ SystemOrganization addCategory: #'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ SystemOrganization addCategory: #'CMakeVMMakerSqueak-CMakeTemplates'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Help'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-IA32-Bochs'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-IOS'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Libs'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Linux32ARMv6'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Linux32x86'!
- SystemOrganization addCategory: #'CMakeVMMakerSqueak-LinuxX86-64'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
+ SystemOrganization addCategory: #'CMakeVMMakerSqueak-LinuxX86-64'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-MacOSPowerPC'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-MacOSX32x86'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-SunOS32x86'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Tests'!
  SystemOrganization addCategory: #'CMakeVMMakerSqueak-Win32x86'!

Item was added:
+ CMakeCheckIncludeFile subclass: #CMakeCheckAlloca
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeCheckAlloca commentStamp: 'tty 7/11/2014 17:33' prior: 0!
+ A CMakeCheckAllocaTemplate is a hack that looks like this:
+ 
+ 
+         CHECK_INCLUDE_FILE (alloca.h HAVE_ALLOCA_H)
+         CONFIG_DEFINE (HAVE_ALLOCA_H)
+         IF (HAVE_ALLOCA_H)
+          SET (HAVE_ALLOCA 1)
+         ELSE ()
+           CHECK_FUNCTION_EXISTS (alloca HAVE_ALLOCA)
+         ENDIF ()
+ 
+         CONFIG_DEFINE (HAVE_ALLOCA)
+ !

Item was added:
+ ----- Method: CMakeCheckAlloca>>initialize (in category 'as yet unclassified') -----
+ initialize
+ 	content:='
+   CHECK_INCLUDE_FILE (alloca.h HAVE_ALLOCA_H)
+   CONFIG_DEFINE (HAVE_ALLOCA_H)
+   IF (HAVE_ALLOCA_H)
+     SET (HAVE_ALLOCA 1)
+   ELSE ()
+     CHECK_FUNCTION_EXISTS (alloca HAVE_ALLOCA)
+   ENDIF ()
+   CONFIG_DEFINE (HAVE_ALLOCA)
+ '!

Item was added:
+ CMakeCheckFunctionExists subclass: #CMakeCheckFunctionAtExitOnExit
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeCheckFunctionAtExitOnExit commentStamp: 'tty 7/12/2014 21:16' prior: 0!
+ A CMakeCheckFunctionAtExitOnExitTemplate is a hack that needs to be refactored. It looks like this
+ 
+   CHECK_FUNCTION_EXISTS (atexit           HAVE_ATEXIT)
+   CHECK_FUNCTION_EXISTS (on_exit          HAVE_ON_EXIT)
+   IF (HAVE_ATEXIT)
+      SET (AT_EXIT atexit)
+   ELSEIF (HAVE_ON_EXIT)
+     SET (AT_EXIT on_exit)
+   ENDIF ()
+   CONFIG_DEFINE (AT_EXIT)'!

Item was added:
+ ----- Method: CMakeCheckFunctionAtExitOnExit>>initialize (in category 'as yet unclassified') -----
+ initialize
+ 	content:='
+   CHECK_FUNCTION_EXISTS (atexit           HAVE_ATEXIT)
+   CHECK_FUNCTION_EXISTS (on_exit          HAVE_ON_EXIT)
+   IF (HAVE_ATEXIT)
+      SET (AT_EXIT atexit)
+   ELSEIF (HAVE_ON_EXIT)
+     SET (AT_EXIT on_exit)
+   ENDIF ()
+   CONFIG_DEFINE (AT_EXIT)'!

Item was added:
+ CMakeTemplate subclass: #CMakeCheckFunctionExists
+ 	instanceVariableNames: 'function variable'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeCheckFunctionExists commentStamp: 'tty 7/12/2014 21:25' prior: 0!
+ A CMakeCheckFunctionExistsTemplate looks like this:
+ 
+         CHECK_FUNCTION_EXISTS (atexit           HAVE_ATEXIT)
+ 	  CONFIG_DEFINE(HAVE_ATEXIT)
+ 
+ The addition of the CONFIG_DEFINE is a convenience addition
+ 
+ 
+ My CMake documentation reads...
+ 
+  INCLUDE (CheckFunctionExists) 
+ Usage
+  CHECK_FUNCTION_EXISTS(function variable) 
+ Example
+  CHECK_FUNCTION_EXISTS(madvise HAVE_MADVISE) 
+ 
+ Checks whether the given function exists. This is done by linking a small program, which may not result in undefined references.
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckFunctionExists>>function (in category 'accessing') -----
+ function
+ 
+ 	^ function!

Item was added:
+ ----- Method: CMakeCheckFunctionExists>>function: (in category 'accessing') -----
+ function: fString
+ 	function := fString.
+ 	variable:= 'HAVE_',(function asUppercase).
+ 	self function: function variable: variable.!

Item was added:
+ ----- Method: CMakeCheckFunctionExists>>function:variable: (in category 'accessing') -----
+ function: fString variable: vString
+ 	function := fString.
+ 	variable:= vString.
+ 	content:='
+   CHECK_FUNCTION_EXISTS(', function ,' ', variable,')
+   IF(', variable ,')
+     CONFIG_DEFINE(', variable,')
+   ENDIF(', variable ,')'!

Item was added:
+ ----- Method: CMakeCheckFunctionExists>>initialize (in category 'initialize-release') -----
+ initialize
+ 	function:='function'.
+ 	variable:= 'HAVE_',(function asUppercase).
+ 	content:='
+   CHECK_FUNCTION_EXISTS(', function ,' ', variable,')'!

Item was added:
+ CMakeTemplate subclass: #CMakeCheckIncludeFile
+ 	instanceVariableNames: 'include variable path'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeCheckIncludeFile commentStamp: 'tty 7/12/2014 21:26' prior: 0!
+ A CMakeHeaderFilesTemplate looks something like this:
+ 
+         check_include_file("unistd.h" HAVE_UNISTD_H)
+         if(HAVE_UNISTD_H)
+          CONFIG_DEFINE(HAVE_UNISTD_H)
+         endif()
+ The addition of the CONFIG_DEFINE is a convenience addition
+ from the CMake documentation of
+ 
+ - Check if the include file exists.
+ # CHECK_INCLUDE_FILE(INCLUDE VARIABLE)
+ # - macro which checks the include file exists.
+ #  INCLUDE  - name of include file
+ #  VARIABLE - variable to return result
+ #
+ # an optional third argument is the CFlags to add to the compile line
+ # or you can use CMAKE_REQUIRED_FLAGS
+ #
+ # The following variables may be set before calling this macro to
+ # modify the way the check is run:
+ #
+ #  CMAKE_REQUIRED_FLAGS = string of compile command line flags
+ #  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+ #  CMAKE_REQUIRED_INCLUDES = list of include directories
+ 
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckIncludeFile>>include:variable: (in category 'accessing') -----
+ include: iString variable: vString
+ 	include:=iString.
+ 	variable:=vString.
+ 	self content:'
+   CHECK_INCLUDE_FILE("', include  ,'" ', variable,')
+   IF(', variable ,')
+     CONFIG_DEFINE(', variable,')
+   ENDIF(', variable ,')'
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckIncludeFile>>include:variable:path: (in category 'accessing') -----
+ include: iString variable: vString path: pString
+ 	include:=iString.
+ 	variable:=vString.
+ 	path:= pString.
+ 	self content:'
+   CHECK_INCLUDE_FILE("', include  ,'" ', variable,' ',  path ,')
+   IF(', variable ,')
+     CONFIG_DEFINE(', variable,')
+   ENDIF(', variable ,')'
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckIncludeFile>>initialize (in category 'initialize-release') -----
+ initialize
+ 	include='foo'.
+ 	variable:='bar'.
+ 	path='path'.
+ 	self content:'
+   CHECK_INCLUDE_FILE("', include  ,'" ', variable,' ',  path ,')
+   IF(', variable ,')
+     CONFIG_DEFINE(', variable,')
+   ENDIF(', variable ,')'
+ 
+ !

Item was added:
+ CMakeCheckLibraryExists subclass: #CMakeCheckLibDL
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeCheckLibDL commentStamp: 'tty 7/11/2014 18:30' prior: 0!
+ A CMakeCheckLibDLTemplate needs to be refactored.
+ I look like this:
+ 
+         CHECK_LIBRARY_EXISTS (dl dlopen "" HAVE_LIBDL)
+         IF (HAVE_LIBDL)
+          USE_LIBRARY (dl)
+         ENDIF (HAVE_LIBDL)
+         IF (HAVE_LIBDL)
+          SET (HAVE_DLOPEN 1)
+         ELSE ()
+           CHECK_FUNCTION_EXISTS (dlopen HAVE_DLOPEN)
+         ENDIF (HAVE_LIBDL)!

Item was added:
+ ----- Method: CMakeCheckLibDL>>initialize (in category 'initialize-release') -----
+ initialize
+ 	content:='
+   CHECK_LIBRARY_EXISTS (dl dlopen "" HAVE_LIBDL)
+   IF (HAVE_LIBDL)
+     USE_LIBRARY (dl)
+   ENDIF (HAVE_LIBDL)
+   IF (HAVE_LIBDL)
+     SET (HAVE_DLOPEN 1)
+   ELSE ()
+     CHECK_FUNCTION_EXISTS (dlopen HAVE_DLOPEN)
+   ENDIF (HAVE_LIBDL)
+   CONFIG_DEFINE (HAVE_DLOPEN)
+ '!

Item was added:
+ CMakeTemplate subclass: #CMakeCheckLibraryExists
+ 	instanceVariableNames: 'library function location variable'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeCheckLibraryExists commentStamp: 'tty 7/11/2014 14:30' prior: 0!
+ A CMakeCheckLibraryExistsTemplate is a CMake Command in the CheckLibraryExists Module
+ 
+ http://cmake.org/Wiki/CMake:How_To_Write_Platform_Checks
+ 
+ Module
+  INCLUDE (CheckLibraryExists) 
+ Usage
+  CHECK_LIBRARY_EXISTS(library function location variable) 
+ Example
+  CHECK_LIBRARY_EXISTS(volmgt volmgt_running "" HAVE_VOLMGT) 
+ 
+ Checks whether the given library exists and contains the given function. This is done by linking a small program which uses the function and links to the library. In the location parameter an additional link directory (-Ldir) can be given if required.
+ 
+ example:
+ 
+         CHECK_LIBRARY_EXISTS (dl dlopen "" HAVE_LIBDL)
+         IF (HAVE_LIBDL)
+          CONFIG_DEFINE(HAVE_LIBDL)
+         ENDIF (HAVE_LIBDL)
+ !

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>function (in category 'accessing') -----
+ function
+ 
+ 	^ function!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>function: (in category 'accessing') -----
+ function: anObject
+ 
+ 	function := anObject!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>initialize (in category 'initialize-release') -----
+ initialize
+ 	library:='library'.
+ 	function:='function'.
+ 	location:='-L/location'.
+ 	variable:='HAVE_LIBRARY'.
+ 	content:='
+   CHECK_LIBRARY_EXISTS (', library, ' ', function, '  "', location ,'" ', variable ,')
+   IF (', variable, ')
+       CONFIG_DEFINE(', variable, ')
+    ENDIF (', variable, ')'
+ !

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>library (in category 'accessing') -----
+ library
+ 
+ 	^ library!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>library: (in category 'accessing') -----
+ library: anObject
+ 
+ 	library := anObject!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>library:function:location:variable: (in category 'initialize-release') -----
+ library: lString function: fString location: locString variable: vString
+ 	library:= lString.
+ 	function:=fString.
+ 	location:=locString.
+ 	variable:=vString.
+ 	content:='
+   CHECK_LIBRARY_EXISTS (', library, ' ', function, '  "', location ,'" ', variable ,')
+   IF (', variable, ')
+       CONFIG_DEFINE(', variable, ')
+    ENDIF (', variable, ')'
+ !

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>location (in category 'accessing') -----
+ location
+ 
+ 	^ location!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>location: (in category 'accessing') -----
+ location: anObject
+ 
+ 	location := anObject!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>variable (in category 'accessing') -----
+ variable
+ 
+ 	^ variable!

Item was added:
+ ----- Method: CMakeCheckLibraryExists>>variable: (in category 'accessing') -----
+ variable: anObject
+ 
+ 	variable := anObject!

Item was added:
+ CMakeTemplate subclass: #CMakeCheckStructHasMember
+ 	instanceVariableNames: 'struct member header variable'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeCheckStructHasMember commentStamp: 'tty 7/12/2014 21:45' prior: 0!
+ A CMakeCheckStructHasMemberTemplate looks like this:
+ 
+ 	CHECK_STRUCT_HAS_MEMBER ("struct tm" tm_gmtoff time.h HAVE_TM_GMTOFF)
+ 	CONFIG_DEFINE(HAVE_TM_GMTOFF)
+ 
+ The CONFIG_DEFINE is a convenience additon to the CMake Module
+ 
+ 
+ My CMake Documentation reads:
+ 
+ # - Check if the given struct or class has the specified member variable
+ # CHECK_STRUCT_HAS_MEMBER (STRUCT MEMBER HEADER VARIABLE)
+ #
+ #  STRUCT - the name of the struct or class you are interested in
+ #  MEMBER - the member which existence you want to check
+ #  HEADER - the header(s) where the prototype should be declared
+ #  VARIABLE - variable to store the result
+ #
+ # The following variables may be set before calling this macro to
+ # modify the way the check is run:
+ #
+ #  CMAKE_REQUIRED_FLAGS = string of compile command line flags
+ #  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+ #  CMAKE_REQUIRED_INCLUDES = list of include directories
+ #
+ # Example: CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h HAVE_TIMEVAL_TV_SEC)
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>header (in category 'accessing') -----
+ header
+ 
+ 	^ header!

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>header: (in category 'accessing') -----
+ header: anObject
+ 
+ 	header := anObject!

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>initialize (in category 'initialize-release') -----
+ initialize
+ 	struct:= 'struct'.
+ 	member:= 'member'.
+ 	header := 'header'.
+ 	variable:= 'variable'.
+ 	content:='
+   CHECK_STRUCT_HAS_MEMBER (', struct, ' ', member,' ', header,' ', variable, ')
+   CONFIG_DEFINE(', variable,')'!

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>member (in category 'accessing') -----
+ member
+ 
+ 	^ member!

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>member: (in category 'accessing') -----
+ member: anObject
+ 
+ 	member := anObject!

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>struct:member:header:variable: (in category 'accessing') -----
+ struct: sString member: mString header: hString variable: vString
+ 	struct:= sString.
+ 	member:= mString.
+ 	header := hString.
+ 	variable:= vString.
+ 	content:='
+   CHECK_STRUCT_HAS_MEMBER (', struct, ' ', member,' ', header,' ', variable, ')
+   CONFIG_DEFINE(', variable,')'
+ !

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>variable (in category 'accessing') -----
+ variable
+ 
+ 	^ variable!

Item was added:
+ ----- Method: CMakeCheckStructHasMember>>variable: (in category 'accessing') -----
+ variable: anObject
+ 
+ 	variable := anObject!

Item was added:
+ CMakeTemplate subclass: #CMakeCheckTryCompileHaveLangInfoCodeset
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeCheckTryCompileHaveLangInfoCodeset commentStamp: 'tty 7/11/2014 18:09' prior: 0!
+ A CMakeCheckTryCompileHaveLangInfoCodesetTemplate looks like this.
+ 
+         IF (HAVE_LANGINFO_H)
+          TRY_COMPILE (HAVE_LANGINFO_CODESET ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testLanginfoCodeset.c)
+         ENDIF (HAVE_LANGINFO_H)
+ !

Item was added:
+ ----- Method: CMakeCheckTryCompileHaveLangInfoCodeset>>initialize (in category 'as yet unclassified') -----
+ initialize
+ 	self flag:'tty'. "generalize me http://www.cmake.org/cmake/help/v3.0/command/try_compile.html"
+ 	content:='
+   IF (HAVE_LANGINFO_H)
+     TRY_COMPILE (HAVE_LANGINFO_CODESET ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testLanginfoCodeset.c)
+   ENDIF (HAVE_LANGINFO_H)
+   IF(HAVE_LANGINFO_CODESET)
+ 	CONFIG_DEFINE(HAVE_LANGINFO_CODESET)
+   ENDIF(HAVE_LANGINFO_CODESET)
+ '
+ !

Item was added:
+ CMakeTemplate subclass: #CMakeCheckTryRunDoubleWordAlignmentOrder
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeCheckTryRunDoubleWordAlignmentOrder commentStamp: 'tty 7/11/2014 16:58' prior: 0!
+ A CMakeCheckTypeSizeTemplate looks like this:
+ 
+ 
+         TRY_RUN (DOUBLE_WORD_ALIGNMENT tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordAlignment.c)
+         TRY_RUN (DOUBLE_WORD_ORDER tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordOrder.c)
+ 
+         CONFIG_DEFINE (DOUBLE_WORD_ALIGNMENT)
+         CONFIG_DEFINE (DOUBLE_WORD_ORDER)
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckTryRunDoubleWordAlignmentOrder>>initialize (in category 'initialize-release') -----
+ initialize
+ 	self content:'
+   MESSAGE("Test Double Word")
+   TRY_RUN (DOUBLE_WORD_ALIGNMENT tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordAlignment.c)
+   TRY_RUN (DOUBLE_WORD_ORDER tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordOrder.c)
+   CONFIG_DEFINE (DOUBLE_WORD_ALIGNMENT)
+   CONFIG_DEFINE (DOUBLE_WORD_ORDER)'
+ !

Item was added:
+ CMakeTemplate subclass: #CMakeCheckTypeSize
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeCheckTypeSize commentStamp: 'tty 7/11/2014 16:56' prior: 0!
+ A CMakeCheckTypeSizeTemplate looks like this:
+ 
+   CHECK_TYPE_SIZE (int SIZEOF_INT)
+   CHECK_TYPE_SIZE (long SIZEOF_LONG)
+   CHECK_TYPE_SIZE ("long long" SIZEOF_LONG_LONG)
+   CHECK_TYPE_SIZE ("void *" SIZEOF_VOID_P)
+ 
+   CONFIG_DEFINE (SIZEOF_INT)
+   CONFIG_DEFINE (SIZEOF_LONG)
+   CONFIG_DEFINE (SIZEOF_LONG_LONG)
+   CONFIG_DEFINE (SIZEOF_VOID_P)!

Item was added:
+ ----- Method: CMakeCheckTypeSize>>initialize (in category 'initialize-release') -----
+ initialize
+ 	self content:'
+   MESSAGE("Determine Type Sizes")
+   CHECK_TYPE_SIZE (int SIZEOF_INT)
+   CHECK_TYPE_SIZE (long SIZEOF_LONG)
+   CHECK_TYPE_SIZE ("long long" SIZEOF_LONG_LONG)
+   CHECK_TYPE_SIZE ("void *" SIZEOF_VOID_P)
+ 
+   CONFIG_DEFINE (SIZEOF_INT)
+   CONFIG_DEFINE (SIZEOF_LONG)
+   CONFIG_DEFINE (SIZEOF_LONG_LONG)
+   CONFIG_DEFINE (SIZEOF_VOID_P)'!

Item was added:
+ CMakeTemplate subclass: #CMakeCheckVariableExists
+ 	instanceVariableNames: 'var variable'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeCheckVariableExists commentStamp: 'tty 7/12/2014 21:44' prior: 0!
+ A CMakeCheckVariableExistsTemplate looks like this:
+ 
+ 	CHECK_VARIABLE_EXISTS (timezone	HAVE_TIMEZONE)
+ 
+ My CMake documentation reads...
+ 
+  - Check if the variable exists.
+ #  CHECK_VARIABLE_EXISTS(VAR VARIABLE)
+ #
+ #  VAR      - the name of the variable
+ #  VARIABLE - variable to store the result
+ #
+ # This macro is only for C variables.
+ #
+ # The following variables may be set before calling this macro to
+ # modify the way the check is run:
+ #
+ #  CMAKE_REQUIRED_FLAGS = string of compile command line flags
+ #  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+ #  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+ 
+ 
+ 
+ !

Item was added:
+ ----- Method: CMakeCheckVariableExists>>initialize (in category 'initialize-release') -----
+ initialize
+ 	var:='var'.
+ 	variable:= 'HAVE_',(var asUppercase).
+ 	content:='
+   CHECK_VARIABLE_EXISTS(', var ,' ', variable,')
+   IF(', variable ,')
+     CONFIG_DEFINE(', variable,')
+   ENDIF(', variable ,')'!

Item was added:
+ ----- Method: CMakeCheckVariableExists>>var (in category 'accessing') -----
+ var
+ 
+ 	^ var!

Item was added:
+ ----- Method: CMakeCheckVariableExists>>var: (in category 'accessing') -----
+ var: anObject
+ 
+ 	var := anObject!

Item was added:
+ ----- Method: CMakeCheckVariableExists>>var:variable: (in category 'accessing') -----
+ var: varString variable: vString
+ 	var := varString.
+ 	variable:= vString.
+ 	content:='
+   CHECK_VARIABLE_EXISTS(', var ,' ', variable,')
+   IF(', variable ,')
+     CONFIG_DEFINE(', variable,')
+   ENDIF(', variable ,')'!

Item was added:
+ ----- Method: CMakeCheckVariableExists>>variable (in category 'accessing') -----
+ variable
+ 
+ 	^ variable!

Item was added:
+ ----- Method: CMakeCheckVariableExists>>variable: (in category 'accessing') -----
+ variable: anObject
+ 
+ 	variable := anObject!

Item was added:
+ CMakeTemplate subclass: #CMakeCompilerIsGNUCC
+ 	instanceVariableNames: 'ifterp elseterm ifmessage elsemessage'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeCompilerIsGNUCC commentStamp: 'tty 7/11/2014 13:38' prior: 0!
+ A CMakeCompilerIsGNUCCTemplate is 
+ 
+         IF (CMAKE_COMPILER_IS_GNUCC)
+           SET (interp gnu-interp)
+         ELSE ()
+           SET (interp interp)
+         ENDIF (CMAKE_COMPILER_IS_GNUCC)
+ !

Item was added:
+ ----- Method: CMakeCompilerIsGNUCC>>initialize (in category 'initialize-release') -----
+ initialize
+ 	self content:'
+   IF (CMAKE_COMPILER_IS_GNUCC)
+     SET (interp gnu-interp)
+   ELSE ()
+     SET (interp interp)
+   ENDIF (CMAKE_COMPILER_IS_GNUCC)'!

Item was added:
+ CMakeTemplate subclass: #CMakeConfigDefine
+ 	instanceVariableNames: 'variable value'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeConfigDefine commentStamp: 'tty 7/12/2014 21:09' prior: 0!
+ A CMakeSetTemplate 's contents look like
+ 
+ 
+ 	CONFIG_DEFINE (SQ_VERSION)
+ !

Item was added:
+ ----- Method: CMakeConfigDefine>>initialize (in category 'initialize-release') -----
+ initialize
+ 	variable:='foo'.
+ 	value:='bar'.
+ 	self content:'
+   CONFIG_DEFINE(',variable,' ',value,')'!

Item was added:
+ ----- Method: CMakeConfigDefine>>variable: (in category 'accessing') -----
+ variable: aString 
+ 
+ 	variable := aString.
+ 	value := nil.
+ 	self content:'
+   CONFIG_DEFINE(',variable,')'!

Item was added:
+ ----- Method: CMakeConfigDefine>>variable:value: (in category 'accessing') -----
+ variable: aString value: vString
+ 
+ 	variable := aString.
+ 	value := vString.
+ 	self content:'
+   CONFIG_DEFINE(',variable,' ',value,')'!

Item was added:
+ CMakeTemplate subclass: #CMakeDebug
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!

Item was added:
+ ----- Method: CMakeDebug>>initialize (in category 'initialize-release') -----
+ initialize
+ 	self content:'
+   MESSAGE("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
+   MESSAGE("CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
+   MESSAGE("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
+   MESSAGE("CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
+   MESSAGE("CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
+   GET_DIRECTORY_PROPERTY( DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
+   FOREACH( d ${DirDefs} )
+     MESSAGE( STATUS "Found Define: " ${d} )
+   ENDFOREACH()
+   MESSAGE( STATUS "DirDefs: " ${DirDefs} )'!

Item was added:
+ CMakeTemplate subclass: #CMakeFindPackage
+ 	instanceVariableNames: 'packagename'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeFindPackage commentStamp: 'tty 7/11/2014 15:06' prior: 0!
+ A CMakeFindPackageTemplate can look like this:
+ 
+         FIND_PACKAGE (X11)
+         IF (X11_FOUND)
+          LIST (REMOVE_DUPLICATES X11_INCLUDE_DIR)
+          SET(USE_X11 1)
+          CONFIG_DEFINE(USE_X11)
+         ENDIF ()
+ !

Item was added:
+ ----- Method: CMakeFindPackage>>initialize (in category 'initialize-release') -----
+ initialize
+ 	packagename := 'DUDE'.
+ 	content:='
+   FIND_PACKAGE (', packagename ,')
+   IF (',packagename,'_FOUND)
+     LIST (REMOVE_DUPLICATES ',packagename,'_INCLUDE_DIR)
+     SET(USE_', packagename,' 1)
+     CONFIG_DEFINE(USE_', packagename,')
+   ENDIF (',packagename,'_FOUND)
+ '.!

Item was added:
+ ----- Method: CMakeFindPackage>>packagename (in category 'accessing') -----
+ packagename
+ 
+ 	^ packagename!

Item was added:
+ ----- Method: CMakeFindPackage>>packagename: (in category 'accessing') -----
+ packagename: anObject
+ 	packagename := anObject.
+ 	content:='
+   FIND_PACKAGE (', packagename ,')
+   IF (',packagename,'_FOUND)
+     LIST (REMOVE_DUPLICATES ',packagename,'_INCLUDE_DIR)
+     SET(USE_', packagename,' 1)
+     CONFIG_DEFINE(USE_', packagename,')
+   ENDIF (',packagename,'_FOUND)
+ '.!

Item was added:
+ CMakeFindPackage subclass: #CMakeFindPackageOpenGL
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeFindPackageOpenGL commentStamp: 'tty 7/11/2014 15:17' prior: 0!
+ A CMakeFindPackageOpenGLTemplate  looks like this.
+ 
+ 	message("without-gl = ${without_gl}")
+ 
+         IF (NOT without-gl)
+           FIND_PACKAGE (OpenGL)
+          LIST (REMOVE_DUPLICATES OPENGL_INCLUDE_DIR)
+         ENDIF ()
+ 
+         IF (NOT OPENGL_FOUND)
+           SET (OPENGL_INCLUDE_DIR "")
+         ENDIF ()
+ 
+ 
+ !

Item was added:
+ ----- Method: CMakeFindPackageOpenGL>>initialize (in category 'initialize-release') -----
+ initialize
+ 	content:='	
+   MESSAGE("without-gl = ${without_gl}")
+ 
+   IF (NOT without-gl)
+     FIND_PACKAGE (OpenGL)
+     LIST (REMOVE_DUPLICATES OPENGL_INCLUDE_DIR)
+   ENDIF ()
+   IF (NOT OPENGL_FOUND)
+     SET (OPENGL_INCLUDE_DIR "")
+   ENDIF ()'!

Item was removed:
- CMakeGenerator subclass: #CMakeGeneratorForSqueak
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'CMakeVMMakerSqueak'!
- 
- !CMakeGeneratorForSqueak commentStamp: 'tty 6/20/2014 12:21' prior: 0!
- A CMakeGeneratorForSqueak extends CMakeGenerator to support some Squeak-isms.
- 
- 
- Instance Variables
- !

Item was removed:
- ----- Method: CMakeGeneratorForSqueak>>cC: (in category 'cmake commands') -----
- cC: aString
- 	"do nothing at the moment.
- 	When we start generating config.h, we need to pass it flags as per this line from an mvm
-        CC=''gcc -m32''
- 
- 	This is supported in compilerFlags on pharo cmake, but for ease-of-use for newbies, its best to make things clear with an intention revealing method name
- 
- 	CMakeVMGenerator calls 	self addDefinitions: config compilerFlags.
- "
- 	self flag:'tty'!

Item was removed:
- ----- Method: CMakeGeneratorForSqueak>>cXX: (in category 'cmake commands') -----
- cXX: aString
- 	"do nothing at the moment.
- 	When we start generating config.h, we need to pass it flags as per this line from an mvm
- 	 CXX=''g++ -m32''
- 
- 	This is supported in compilerFlags on pharo cmake, but for ease-of-use for newbies, its best to make things clear with an intention revealing method name
- 
- 	CMakeVMGenerator calls 	self addDefinitions: config compilerFlags.
- "
- 	self flag:'tty'!

Item was removed:
- ----- Method: CMakeGeneratorForSqueak>>configureFlags: (in category 'cmake commands') -----
- configureFlags: aString
- 	"do nothing at the moment.
- 	When we start generating config.h, we need to pass it flags as per this line from an mvm
- 	test -f config.h || ../../../platforms/unix/config/configure \
-  	       --with-src=stacksrc --with-plugins=src/plugins --disable-cogit \
-   	      --without-vm-display-fbdev --without-npsqueak \
- 
- 
- 	if cmake supports a command for doing configs, then 
- 	^self cmd: 'the cmake command here' params: aString
- "
- 	self flag:'tty'!

Item was removed:
- ----- Method: CMakeGeneratorForSqueak>>lDFlags: (in category 'cmake commands') -----
- lDFlags: aString
- 	"do nothing at the moment.
- 	When we start generating config.h, we need to pass it flags as per this line from an mvm
- 	  LDFLAGS=-Wl,-z,now
- 
- 	currently this resides in CPlatformConfig linkFlags. I want to move this to an intention revealing method name
- "
- 	self flag:'tty'!

Item was removed:
- ----- Method: CMakeGeneratorForSqueak>>libs: (in category 'cmake commands') -----
- libs: aString
- 	"do nothing at the moment.
- 	When we start generating config.h, we need to pass it flags as per this line from an mvm
- 
-         LIBS=''-lpthread -luuid -lSM -lICE -ldl -lGL -lpthread -lm -lnsl -lX11'' 
- 
- 	currently this resides in CPlatformConfig linkFlags. I want to move this to an intention revealing method name
- 
- for example, we see it in:
- 	extraPluginSettings: maker
- 		super extraPluginSettings: maker.  
- 		maker set: #linkFlags toString: '${linkFlags} -m32'
- 	
- "
- 	self flag:'tty'!

Item was added:
+ CMakeTemplate subclass: #CMakeIfDefinedConfigDefine
+ 	instanceVariableNames: 'variable'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeIfDefinedConfigDefine commentStamp: 'tty 7/13/2014 10:56' prior: 0!
+ A CMakeHeaderFilesTemplate looks something like this:
+ 
+ 	IF (DEFINED SQ_VI_BYTES_PER_WORD)
+  	 CONFIG_DEFINE (SQ_VI_BYTES_PER_WORD)
+ 	ENDIF (DEFINED SQ_VI_BYTES_PER_WORD)!

Item was added:
+ ----- Method: CMakeIfDefinedConfigDefine>>initialize (in category 'initialize-release') -----
+ initialize
+ 	variable:='bar'.
+ 	self content:'
+   IF(DEFINED ', variable ,')
+ 	 CONFIG_DEFINE(', variable,')
+   ENDIF(DEFINED ', variable ,')'
+ 
+ !

Item was added:
+ ----- Method: CMakeIfDefinedConfigDefine>>variable: (in category 'accessing') -----
+ variable: vString
+ 	variable:=vString.
+ 	self content:'
+   IF(DEFINED ', variable ,')
+ 	 CONFIG_DEFINE(', variable,')
+   ENDIF(DEFINED ', variable ,')'
+ 
+ 	
+ !

Item was added:
+ CMakeTemplate subclass: #CMakeIfNotFlagSetConfigDefine
+ 	instanceVariableNames: 'variable flag'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeIfNotFlagSetConfigDefine commentStamp: 'tty 7/13/2014 11:17' prior: 0!
+ A CMakeIfNotFlagSetConfigDefineTemplate looks like this:
+ 
+         IF (NOT without-SUGAR)
+          SET (SUGAR 1)
+         ENDIF ()
+ 
+         CONFIG_DEFINE (SUGAR)
+ !

Item was added:
+ ----- Method: CMakeIfNotFlagSetConfigDefine>>flag:variable: (in category 'accessing') -----
+ flag: fString variable: vString
+ 	flag:= fString.
+ 	variable:= vString.
+ 	self content:'
+   IF(NOT ', flag ,')
+ 	SET (',variable,' 1)
+   ENDIF(NOT ', flag ,')
+  CONFIG_DEFINE(', variable,')'!

Item was added:
+ ----- Method: CMakeIfNotFlagSetConfigDefine>>initialize (in category 'initialize-release') -----
+ initialize
+ 	flag:='foo'.
+ 	variable:='bar'.
+ 	self content:'
+   IF(NOT ', flag ,')
+ 	SET (',variable,' 1)
+   ENDIF(NOT ', flag ,')
+  CONFIG_DEFINE(', variable,')'!

Item was added:
+ CMakeTemplate subclass: #CMakeIfNotSetConfigDefine
+ 	instanceVariableNames: 'variable'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeIfNotSetConfigDefine commentStamp: 'tty 7/13/2014 10:53' prior: 0!
+ A CMakeHeaderFilesTemplate looks something like this:
+ 
+   	IF (NOT without-SUGAR)
+  	 SET (SUGAR 1)
+ 	ENDIF ()
+ 	CONFIG_DEFINE (SUGAR)
+ !

Item was added:
+ ----- Method: CMakeIfNotSetConfigDefine>>initialize (in category 'initialize-release') -----
+ initialize
+ 	variable:='bar'.
+ 	self content:'
+   IF(NOT ', variable ,')
+ 	SET (',variable,' 1)
+   ENDIF(', variable ,')
+  CONFIG_DEFINE(', variable,')'
+ !

Item was added:
+ ----- Method: CMakeIfNotSetConfigDefine>>variable: (in category 'accessing') -----
+ variable: vString
+ 	variable:=vString.
+ 	self content:'
+   IF(NOT ', variable ,')
+ 	SET (',variable,' 1)
+   ENDIF(', variable ,')
+  CONFIG_DEFINE(', variable,')'
+ 
+ 	
+ !

Item was added:
+ CMakeTemplate subclass: #CMakeMessage
+ 	instanceVariableNames: 'optionalkeyword message'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeMessage commentStamp: 'tty 7/11/2014 13:59' prior: 0!
+ A CMakeMessageTemplate looks like
+ 
+ 	MESSAGE([TYPE] "foo")
+ 
+ from the cmake help
+ make --help-command message
+ cmake version 2.8.12
+   message
+        Display a message to the user.
+ 
+          message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR]
+                  "message to display" ...)
+ 
+        The optional keyword determines the type of message:
+ 
+          (none)         = Important information
+          STATUS         = Incidental information
+          WARNING        = CMake Warning, continue processing
+          AUTHOR_WARNING = CMake Warning (dev), continue processing
+          SEND_ERROR     = CMake Error, continue processing,
+                                        but skip generation
+          FATAL_ERROR    = CMake Error, stop processing and generation
+ 
+        The CMake command-line tool displays STATUS messages on stdout and all
+        other message types on stderr.  The CMake GUI displays all messages in
+        its log area.  The interactive dialogs (ccmake and CMakeSetup) show
+        STATUS messages one at a time on a status line and other messages in
+        interactive pop-up boxes.
+ 
+        CMake Warning and Error message text displays using a simple markup
+        language.  Non-indented text is formatted in line-wrapped paragraphs
+        delimited by newlines.  Indented text is considered pre-formatted.
+ !

Item was added:
+ ----- Method: CMakeMessage>>initialize (in category 'initialize-release') -----
+ initialize
+ 	optionalkeyword:='AUTHOR_WARNING'.
+ 	message := 'Dude!! put your message here'.
+ 	self content:'
+   
+ MESSAGE(', optionalkeyword, ' "', message,'")'!

Item was added:
+ ----- Method: CMakeMessage>>message: (in category 'as yet unclassified') -----
+ message: mString
+ 	self optionalkeyword:'' message:mString.
+ !

Item was added:
+ ----- Method: CMakeMessage>>optionalkeyword:message: (in category 'as yet unclassified') -----
+ optionalkeyword: oString message: mString
+ 	optionalkeyword:=oString.
+ 	message := mString.
+ 	self content:'
+ MESSAGE(', optionalkeyword, ' "', message,'")'!

Item was added:
+ CMakeTemplate subclass: #CMakePluginExternalTemplate
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak'!
+ 
+ !CMakePluginExternalTemplate commentStamp: 'tty 7/11/2014 10:53' prior: 0!
+ An Internal Plugin is configured by CMake using the following template:
+ 
+ ADD_DEFINITIONS (${@plugin at _definitions})
+ LINK_DIRECTORIES (${@plugin at _link_directories})
+ INCLUDE_DIRECTORIES (${@plugin at _include_directories}
+     ${bld}
+     ${src}/vm
+     ${cross}/vm
+     ${src}/plugins/@plugin@
+     ${unix}/vm
+     ${unix}/plugins/@plugin@
+     ${unix}/@plugin@
+     ${cross}/plugins/@plugin@
+ )
+ 
+ ADD_LIBRARY (@plugin@ MODULE @plugin_sources@)
+ 
+ TARGET_LINK_LIBRARIES (@plugin@ ${@plugin at _link_libraries})
+ 
+ 
+ Just fill me in and print my contents!

Item was changed:
+ CMakeGenerator subclass: #CMakePluginGeneratorForSqueak
- CMakeGeneratorForSqueak subclass: #CMakePluginGeneratorForSqueak
  	instanceVariableNames: 'plugin vmGen internal extraRules doNotGenerate externalDependencies configDotCMake'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
  !CMakePluginGeneratorForSqueak commentStamp: 'tty 7/8/2014 12:46' prior: 0!
  A CMakePluginGeneratorForSqueak overides some CMakeVMPluginGenerator methods for squeak compatibility. 
  
  I also add Dictionary for storing a plugins config.cmake file
  
  Instance Variables
  !

Item was added:
+ CMakeTemplate subclass: #CMakePluginInternalTemplate
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak'!
+ 
+ !CMakePluginInternalTemplate commentStamp: 'tty 7/11/2014 10:52' prior: 0!
+ An Internal Plugin is configured by CMake using the following template:
+ 
+ MESSAGE ("${@plugin at _definitions}")
+ MESSAGE ("DUDE")
+ ADD_DEFINITIONS (-DSQUEAK_BUILTIN_PLUGIN=1 ${@plugin at _definitions})
+ LINK_DIRECTORIES (${@plugin at _link_directories})
+ INCLUDE_DIRECTORIES (${@plugin at _include_directories}
+     ${bld}
+     ${src}/vm
+     ${cross}/vm
+     ${src}/plugins/@plugin@
+     ${unix}/vm
+     ${unix}/plugins/@plugin@
+     ${unix}/@plugin@
+     ${cross}/plugins/@plugin@
+ )
+ 
+ ADD_LIBRARY (@plugin@ STATIC @plugin_sources@)
+ 
+ Just fill me in and print me out
+ !

Item was added:
+ CMakeTemplate subclass: #CMakeSet
+ 	instanceVariableNames: 'variable value'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeSet commentStamp: 'tty 7/11/2014 13:26' prior: 0!
+ A CMakeSetTemplate 's contents look like SET(foo "bar")
+ !

Item was added:
+ ----- Method: CMakeSet>>initialize (in category 'initialize-release') -----
+ initialize
+ 	variable:='foo'.
+ 	value:='bar'.
+ 	self content:'
+   SET(',variable,' ',value,')'!

Item was added:
+ ----- Method: CMakeSet>>variable:value: (in category 'accessing') -----
+ variable: aString value: vString
+ 
+ 	variable := aString.
+ 	value := vString.
+ 	self content:'
+   SET(',variable,' ',value,')'!

Item was added:
+ CMakeTemplate subclass: #CMakeSetConfigDefine
+ 	instanceVariableNames: 'variable value'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeSetConfigDefine commentStamp: 'tty 7/12/2014 20:26' prior: 0!
+ A CMakeSetTemplate 's contents look like 
+ 
+ 	SET (VM_X11DIR \"${X11_LIBRARY_DIR}\")
+ 	CONFIG_DEFINE (VM_X11DIR)!

Item was added:
+ ----- Method: CMakeSetConfigDefine>>initialize (in category 'initialize-release') -----
+ initialize
+ 	variable:='foo'.
+ 	value:='bar'.
+ 	self content:'
+   SET(',variable,' ',value,')
+   CONFIG_DEFINE (',variable,')'!

Item was added:
+ ----- Method: CMakeSetConfigDefine>>variable:value: (in category 'accessing') -----
+ variable: aString value: vString
+ 
+ 	variable := aString.
+ 	value := vString.
+ 	self content:'
+   SET(',variable,' ',value,')
+   CONFIG_DEFINE (',variable,')'.
+ !

Item was changed:
+ CMakeGenerator subclass: #CMakeSourceDistroGeneratorForSqueak
- CMakeGeneratorForSqueak subclass: #CMakeSourceDistroGeneratorForSqueak
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
  !CMakeSourceDistroGeneratorForSqueak commentStamp: 'tty 6/18/2014 08:12' prior: 0!
  A CMakeSourceDistroGeneratorForSqueak does nothing at the moment.  Here is why I am here (2014.06.16 vm-dev list):
  
  
  Hi Bert
  Linux distros never package binaries compiled by someone else (*). What they need is a source tar ball that builds cleanly, and a list of dependencies.
  
  hmmmm....
  
  CMakeVMMaker has a CMakePluginGenerator and CMakeVMGenerator; I have a hunch a CMakeSourceDistroGenerator would fit right in.
  
  
  The Design of CMakeVMaker is a big-ole Visitor pattern where configurations visit the Generators. We should be able to have them visit a CMakeSourceDistroGenerator and provide it
  with the relevant information.
  
  I will put in a stub-class for it as a reminder to look at when release 1 of this puppy is ready.
  
  
  cheers.
  
  tty
  !

Item was added:
+ CMakeTemplate subclass: #CMakeSqConfigH
+ 	instanceVariableNames: 'config templates'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeSqConfigH commentStamp: 'tty 7/11/2014 11:05' prior: 0!
+ I am the outermost wrapper on config.cmake
+ 
+ IF (NOT DEFINED __sq_config_h)
+ 	
+ 	rest of config.cmake here
+ 
+ ENDIF (NOT DEFINED __sq_config_h)
+ !

Item was added:
+ ----- Method: CMakeSqConfigH>>config (in category 'accessing') -----
+ config
+ 
+ 	^ config!

Item was added:
+ ----- Method: CMakeSqConfigH>>config: (in category 'accessing') -----
+ config: anObject
+ 
+ 	config := anObject!

Item was added:
+ ----- Method: CMakeSqConfigH>>contentFor (in category 'code generation') -----
+ contentFor
+ "
+ IF (NOT DEFINED __sq_config_h)
+ 	
+ 	rest of config.cmake here
+ 
+ ENDIF (NOT DEFINED __sq_config_h)"
+ 	templates do: [:each | self puts: each content].
+ 	self puts: 'ENDIF (NOT DEFINED __sq_config_h)'.   "close the IF/ENDIF and write"
+ 	^output contents
+ 
+ 	
+ 	!

Item was added:
+ ----- Method: CMakeSqConfigH>>contentFor: (in category 'code generation') -----
+ contentFor: aConfigOrClass
+ 	
+ 	config := aConfigOrClass isBehavior ifTrue: [ aConfigOrClass new ] ifFalse: [aConfigOrClass].
+ 	^ self contentFor!

Item was added:
+ ----- Method: CMakeSqConfigH>>generate (in category 'code generation') -----
+ generate
+ "
+ IF (NOT DEFINED __sq_config_h)
+ 	
+ 	rest of config.cmake here
+ 
+ ENDIF (NOT DEFINED __sq_config_h)"
+ 	templates do: [:each | self puts: each content].
+ 	self puts: 'ENDIF (NOT DEFINED __sq_config_h)'.   "close the IF/ENDIF and write"
+ 	config write: output contents toFile: (self outputFileName)!

Item was added:
+ ----- Method: CMakeSqConfigH>>generate: (in category 'code generation') -----
+ generate: aConfigOrClass
+ 	
+ 	config := aConfigOrClass isBehavior ifTrue: [ aConfigOrClass new ] ifFalse: [aConfigOrClass].
+ 	^ self generate!

Item was added:
+ ----- Method: CMakeSqConfigH>>initialize (in category 'initialize-release') -----
+ initialize
+ " 
+ IF (NOT DEFINED __sq_config_h)
+ 	
+ 	rest of config.cmake here
+ 
+ ENDIF (NOT DEFINED __sq_config_h)"
+ 	templates := OrderedCollection new.
+ 	output := String new writeStream.
+ 	self puts: 'IF (NOT DEFINED __sq_config_h)
+ 
+   SET(__sq_config_h 1)
+   CONFIG_DEFINE(__sq_config_h)
+ '.   !

Item was added:
+ ----- Method: CMakeSqConfigH>>outputFileName (in category 'accessing') -----
+ outputFileName
+ 	^ 'config.cmake'!

Item was added:
+ ----- Method: CMakeSqConfigH>>saveFile (in category 'code generation') -----
+ saveFile
+ 	
+ 	config write: output contents toFile: (self outputFileName).!

Item was added:
+ ----- Method: CMakeSqConfigH>>templates (in category 'accessing') -----
+ templates
+ 
+ 	^ templates!

Item was added:
+ ----- Method: CMakeSqConfigH>>templates: (in category 'accessing') -----
+ templates: anObject
+ 
+ 	templates := anObject!

Item was added:
+ CMakeGenerator subclass: #CMakeTemplate
+ 	instanceVariableNames: 'content'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
+ 
+ !CMakeTemplate commentStamp: 'tty 7/11/2014 13:25' prior: 0!
+ A CMakeTemplate is encapsulates CMake commands, variables and definitions.
+ Generators output my contents into their files.
+ 
+ If you need a custom version of my subclasses, just set 'content: your custom content here' on the appropriate subclass (or on me)	
+ 
+ !

Item was added:
+ ----- Method: CMakeTemplate>>content (in category 'accessing') -----
+ content
+ 
+ 	^ content!

Item was added:
+ ----- Method: CMakeTemplate>>content: (in category 'accessing') -----
+ content: anObject
+ 
+ 	content := anObject!

Item was added:
+ CMakeTemplate subclass: #CMakeTestBigEndian
+ 	instanceVariableNames: ''
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeTestBigEndian commentStamp: 'tty 7/11/2014 15:24' prior: 0!
+ A CMakeTestBigEndianTemplate looks like this:
+ 
+         TEST_BIG_ENDIAN (WORDS_BIGENDIAN)
+         IF (WORDS_BIGENDIAN)
+           SET (MSB_FIRST 1)
+         ELSE ()
+           SET (LSB_FIRST 1)
+         ENDIF ()
+ 
+         CONFIG_DEFINE (WORDS_BIGENDIAN)
+         CONFIG_DEFINE (LSB_FIRST)
+         CONFIG_DEFINE (MSB_FIRST)!

Item was added:
+ ----- Method: CMakeTestBigEndian>>initialize (in category 'initialize-release') -----
+ initialize
+ 	self content:'
+   TEST_BIG_ENDIAN (WORDS_BIGENDIAN)
+   IF (WORDS_BIGENDIAN)
+     SET (MSB_FIRST 1)
+   ELSE ()
+     SET (LSB_FIRST 1)
+   ENDIF (WORDS_BIGENDIAN)
+ 
+   CONFIG_DEFINE (WORDS_BIGENDIAN)
+   CONFIG_DEFINE (LSB_FIRST)
+   CONFIG_DEFINE (MSB_FIRST)'!

Item was changed:
+ CMakeGenerator subclass: #CMakeVMGeneratorForSqueak
- CMakeGeneratorForSqueak subclass: #CMakeVMGeneratorForSqueak
  	instanceVariableNames: 'internalPlugins externalPlugins config'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
  !CMakeVMGeneratorForSqueak commentStamp: 'tty 5/16/2014 15:52' prior: 0!
  A CMakeVMGeneratorForSqueak overides some CMakeVMGenerator methos for squeak compatibility. 
  
  !

Item was changed:
  ----- Method: CMakeVMGeneratorForSqueak>>generate (in category 'code generation') -----
  generate
  	| intPlugins extPlugins |
  	output := String new writeStream.
  	config setGlobalOptions: self.
  
  	self 
  		printHeader;
  		project: config executableName.
  
  	config setGlobalOptionsAfterDetermineSystem: self.
  "I NEED COMPILER FLAGS, DEFINITIONS, LINKS, INCLUDES HERE"
  	config setupDirectories: self.
  
  	self message: '${CMAKE_MODULE_PATH}'.
  	self set: 'CMAKE_CONFIGURATION_TYPES' to: 'Release'.
  
  	config preferredIncludes 	do: [ :each | self includeDirectories: each ].
  	self includeDirectories: self includeDirs.	
  	config standardIncludes 	do: [:each | self includeDirectories: each ].
  
  	self addDefinitions: config compilerFlags.
  
  	config extraVMSettings: self.
  
  	self puts: 'add_executable(' , config executableName, ' ', config executableType, ' ' , self sources , ')'.
- self break.
  	intPlugins := self generatePluginConfigs: config internalPlugins internal: true.
  	extPlugins := self generatePluginConfigs: config externalPlugins internal: false.
  
  	self processThirdpartyLibraries.
  
  	self processPlugins:  intPlugins, extPlugins.
  
  	config setExtraTargetProperties: self.
  
  	self cmd: 'target_link_libraries'
  		params: self moduleName , ' ${LINKLIBS}'.
  
  	config postBuildActions: self.
  
  	self saveFile.
  	self generateBuildScript.!

Item was added:
+ ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>configDotCmake (in category 'pages') -----
+ configDotCmake
+ 	^HelpTopic
+ 		title:'config.cmake'
+ 		contents:
+ 'The config.cmake file is included in CMakeLists.txt. 
+ 
+ It contains CMake code to generate a config.h file on unix systems.
+ 
+ You can view a Configurations config.cmake with this code:
+ 
+ Transcript clear.
+ Transcript show: ((Linux64x86w32BitSqueakCogV3Config new) configureForBuildType: #build) contentForVmConfigCmake
+ 
+ or print it in place with:
+ 
+ ((Linux64x86w32BitSqueakCogV3Config new) configureForBuildType: #build) contentForVmConfigCmake   
+ 
+ The config.cmake file is generated with the usual Builder expressions.
+ 
+ SqueakLinux64x86w32CompatBuilder
+ 	configureA: #Linux64x86w32BitSqueakCogV3Config forBuildType:#build;
+ 	generate.
+ 
+ 
+ A config.cmake is created from CMake Templates (wrappers) in the CmakeVMMakerSqueak-CMakeTemplates  and CmakeVMMakerSqueak-CMakeCustomTemplates categories.
+ 
+ 
+ '!

Item was changed:
  ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>pages (in category 'pages') -----
  pages
+ 	^#(overview prerequisites  terms igorStasenkoDesign  buildersAndConfigs plugins pthreads configDotCmake)!
- 	^#(overview prerequisites  terms igorStasenkoDesign  buildersAndConfigs plugins pthreads)!

Item was added:
+ ----- Method: CMakeVMMakerSqueakUnixConfigTest>>testGenerateVmConfigCmake (in category 'as yet unclassified') -----
+ testGenerateVmConfigCmake
+ 	"config.cmake returns a string"
+ 	#( #SqueakUnixConfig)
+ 		do:[:each | 
+ 			(Smalltalk at:each) 
+ 				allSubclassesDo:[:configuration | | o buildTypes|
+ 					o:= configuration new.
+ 					(o excludeFromBuild not) & (configuration isAbstractBaseClass not)
+ 						ifTrue:[
+ 							buildTypes:=o availableBuildTypes copyWithoutAll:#(#buildNone).
+ 							buildTypes do:[:buildType |
+ 								o configureForBuildType: buildType.
+ 								self shouldnt: [o  generateVmConfigCmake] raise: Error]]]].
+ 
+ 
+ 
+ 
+ 
+ 
+ !

Item was added:
+ CMakeTemplate subclass: #CMakeVersion
+ 	instanceVariableNames: 'version'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!

Item was added:
+ ----- Method: CMakeVersion>>initialize (in category 'as yet unclassified') -----
+ initialize
+ 	self content:'
+   SET (version  \"1.2.3.4\")
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\1" major   ${version})
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\2" minor   ${version})
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\3" patch   ${version})
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\4" release ${version})
+ '!

Item was added:
+ ----- Method: CMakeVersion>>version (in category 'accessing') -----
+ version
+ 
+ 	^ version!

Item was added:
+ ----- Method: CMakeVersion>>version: (in category 'accessing') -----
+ version: anObject
+ 
+ 	version := anObject.
+ 	self content:'
+   SET (version  \"', version, '\")
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\1" major   ${version})
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\2" minor   ${version})
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\3" patch   ${version})
+   STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\4" release ${version})
+ '!

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>generateConfigH (in category 'source generation') -----
- generateConfigH
- 	"	
- 	used to be: 	
- 		self write: self configH toFile: 'config.h'
- "
- 	self subclassResponsibility
- 
- !

Item was removed:
- ----- Method: CPlatformConfigForSqueak>>generateConfigH: (in category 'source generation') -----
- generateConfigH: aBuildType
- 	"self write: self configH toFile: 'config.h'"
- 
- 	|d |
- 	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
- 	d 
- 		at: #build put: [self configHBuild];
- 		at: #buildAssert  put: [self configHBuildAssert];
- 		at: #buildAssertITimerHeartbeat  put: [self configHBuildAssertITimerHeartbeat];
-             at:#buildDebug  put: [self configHBuildDebug];   "located in CMakeVMMaker CPlatformConfig"
- 		at: #buildDebugITimerHeartbeat  put: [self configHBuildDebugITimerHeartbeat ];
- 		at: #buildITimerHeartbeat  put: [self configHBuildITimerHeartbeat];
- 		at: #buildMultiThreaded  put: [self configHBuildMultiThreaded ];
- 		at: #buildMultiThreadedAssert  put: [self configHBuildMultiThreadedAssert];
- 		at: #buildMultiThreadedDebug   put: [self configHBuildMultiThreadedDebug ];
- 		at: #buildNone put:[self configHNoBuildType].
- 
- 
- 	 ^(d at: ( aBuildType)) value
- 
- 
- 
- !

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>generateVmConfigCmake (in category 'source generation') -----
  generateVmConfigCmake
+ 	self subclassResponsibility!
- 	self 
- 		write:  (self class vmConfigCmake)
- 		toFile: 'config.cmake'
- 	!

Item was changed:
  ----- Method: Linux32x86SqueakCogV3Config>>excludeFromBuild (in category 'cmake') -----
  excludeFromBuild
  	"over-ride to exclude yourself from a build or not"
  	^false!

Item was changed:
  ----- Method: Linux64x86w32BitConfig>>setGlobalOptionsAfterDetermineSystemBuild: (in category 'cmake buildType redirects') -----
  setGlobalOptionsAfterDetermineSystemBuild: aMaker
  	"
  	SystemNavigation default browseMethodsWhoseNamesContain: 'setGlobalOptionsAfterDetermineSystemBuild:'"
  	aMaker message: 'setGlobalOptionsAfterDetermineSystemBuild: aMaker'.	
+ 	aMaker puts: ' 
+ 	  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -Wall -m32")
+ 	  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall -m32")
+ 	  SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}  -Wall -m32")
+ 	  SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}  -Wall -m32")
+ 	  SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}  -Wall -m32")
+ 	  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -m32")
+ 	  MESSAGE("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
+ 	  MESSAGE("CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
+ 	  MESSAGE("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
+ 	  MESSAGE("CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
+ 	  MESSAGE("CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
+ 	  GET_DIRECTORY_PROPERTY( DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
+ 	  FOREACH( d ${DirDefs} )
+ 	      MESSAGE( STATUS "Found Define: " ${d} )
+ 	  ENDFOREACH()
+ 	  MESSAGE( STATUS "DirDefs: " ${DirDefs} )'.
  	aMaker  
  		include: 'Utils.cmake';
  	      include: 'Plugins.cmake';
  		include:	'TestBigEndian';
  		include:	'CheckIncludeFile';
  		include:	'CheckLibraryExists';
  		include:	'CheckTypeSize';
  		include:	'CheckFunctionExists';
  		include:	'CheckVariableExists';
  		include:	'CheckStructHasMember';
  		include:	'FindPkgConfig'.
  
  !

Item was changed:
  CPlatformConfigForSqueak subclass: #SqueakUnixConfig
+ 	instanceVariableNames: 'configtemplates'
- 	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
  !SqueakUnixConfig commentStamp: 'tty 6/17/2014 19:53' prior: 0!
  A SqueakUnixConfig is a top level configuration for *nix configuratons.
  !

Item was changed:
  ----- Method: SqueakUnixConfig class>>vmConfigCmake (in category 'nil') -----
  vmConfigCmake
  	"move the CXX_FLAGS out later
  "
  	^'
  
  IF (NOT DEFINED __sq_config_h)
  
- 	  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -Wall -m32")
- 	  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall -m32")
- 	  SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}  -Wall -m32")
- 	  SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}  -Wall -m32")
- 	  SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}  -Wall -m32")
- 	  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -m32")
- 	  MESSAGE("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
- 	  MESSAGE("CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
- 	  MESSAGE("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
- 	  MESSAGE("CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
- 	  MESSAGE("CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
- 	  GET_DIRECTORY_PROPERTY( DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
- 	  FOREACH( d ${DirDefs} )
- 	      MESSAGE( STATUS "Found Define: " ${d} )
- 	  ENDFOREACH()
- 	  MESSAGE( STATUS "DirDefs: " ${DirDefs} )
  
+ 
  	SET(__sq_config_h 1)
  	CONFIG_DEFINE(__sq_config_h)
  
  	SET (OS_TYPE \"unix\")
  	CONFIG_DEFINE (OS_TYPE)
  
  	SET (version  \"1.2.3.4\")
  
  	SET (without_gl "")
  	STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\1" major   ${version})
  	STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\2" minor   ${version})
  	STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\3" patch   ${version})
  	STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\4" release ${version})
  
  
  	IF (CMAKE_COMPILER_IS_GNUCC)
  	  SET (interp gnu-interp)
  	ELSE ()
  	  SET (interp interp)
   	 MESSAGE ("!!!! Cannot optimise interpreter performance for GCC")
  	ENDIF (CMAKE_COMPILER_IS_GNUCC)
  
  #LIBRARIES
  #define HAVE_LANGINFO_CODESET 1
  #define	TIME_WITH_SYS_TIME 1
+ 
- #define	HAVE_LIBDL 1
  	CHECK_LIBRARY_EXISTS (dl dlopen "" HAVE_LIBDL)
  	IF (HAVE_LIBDL)
   	 CONFIG_DEFINE(HAVE_LIBDL)
  	ENDIF (HAVE_LIBDL)
  
  #HEADERS
  	check_include_file("unistd.h" HAVE_UNISTD_H)
  	if(HAVE_UNISTD_H)
  	 CONFIG_DEFINE(HAVE_UNISTD_H)
  	endif()
  
  	check_include_file("dirent.h" HAVE_DIRENT_H)
  	if(HAVE_DIRENT_H)
  	 CONFIG_DEFINE(HAVE_DIRENT_H)
  	endif()
  
  	check_include_file("pty.h" HAVE_PTY_H)
  	if(HAVE_PTY_H)
  	 CONFIG_DEFINE(HAVE_PTY_H)
  	endif()
  
  	check_include_file("stropts.h" HAVE_STROPTS_H)
  	if(HAVE_STROPTS_H)
  	 CONFIG_DEFINE(HAVE_STROPTS_H)
  	endif()
  
  #PACKAGES
  	FIND_PACKAGE (X11)
  	IF (X11_FOUND)
   	 LIST (REMOVE_DUPLICATES X11_INCLUDE_DIR)
  	 SET(USE_X11 1)
  	 CONFIG_DEFINE(USE_X11)
  	ENDIF ()
  
  	message("without-gl = ${without_gl}")
  
  	IF (NOT without-gl)
  	  FIND_PACKAGE (OpenGL)
   	 LIST (REMOVE_DUPLICATES OPENGL_INCLUDE_DIR)
  	ENDIF ()
  
  
  	IF (NOT OPENGL_FOUND)
  	  SET (OPENGL_INCLUDE_DIR "")
  	ENDIF ()
  
  	MESSAGE("OPENGL variables:")
  	 FOREACH (var AGL_FOUND AGL_INCLUDE_DIR AGL_LIBRARIES OPENGL_FOUND OPENGL_INCLUDE_DIR OPENGL_LIBRARIES)
  	    MESSAGE ("${var} = ${${var}}")
  	  ENDFOREACH ()
  
  	TEST_BIG_ENDIAN (WORDS_BIGENDIAN)
  	IF (WORDS_BIGENDIAN)
  	  SET (MSB_FIRST 1)
  	ELSE ()
  	  SET (LSB_FIRST 1)
  	ENDIF ()
  
  	CONFIG_DEFINE (WORDS_BIGENDIAN)
  	CONFIG_DEFINE (LSB_FIRST)
  	CONFIG_DEFINE (MSB_FIRST)
  
  	CHECK_FUNCTION_EXISTS (atexit		HAVE_ATEXIT)
  	CHECK_FUNCTION_EXISTS (on_exit		HAVE_ON_EXIT)
  
  	IF (HAVE_ATEXIT)
  	  SET (AT_EXIT atexit)
  	ELSEIF (HAVE_ON_EXIT)
  	  SET (AT_EXIT on_exit)
  	ENDIF ()
  
  	CONFIG_DEFINE (AT_EXIT)
  
  	MESSAGE("# sqMemoryAccess.h")
  	CHECK_INCLUDE_FILE (interp.h HAVE_INTERP_H -I${srcVMDir})
  	CONFIG_DEFINE (HAVE_INTERP_H)
  
  	CHECK_TYPE_SIZE (int SIZEOF_INT)
  	CHECK_TYPE_SIZE (long SIZEOF_LONG)
  	CHECK_TYPE_SIZE ("long long" SIZEOF_LONG_LONG)
  	CHECK_TYPE_SIZE ("void *" SIZEOF_VOID_P)
  
  	CONFIG_DEFINE (SIZEOF_INT)
  	CONFIG_DEFINE (SIZEOF_LONG)
  	CONFIG_DEFINE (SIZEOF_LONG_LONG)
  	CONFIG_DEFINE (SIZEOF_VOID_P)
  
  	TRY_RUN (DOUBLE_WORD_ALIGNMENT tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordAlignment.c)
  	TRY_RUN (DOUBLE_WORD_ORDER tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordOrder.c)
  
  	CONFIG_DEFINE (DOUBLE_WORD_ALIGNMENT)
  	CONFIG_DEFINE (DOUBLE_WORD_ORDER)
  
  	MESSAGE("# sqPlatformSpecific.h")
  
  	CHECK_INCLUDE_FILE (alloca.h HAVE_ALLOCA_H)
  	CONFIG_DEFINE (HAVE_ALLOCA_H)
  	IF (HAVE_ALLOCA_H)
   	 SET (HAVE_ALLOCA 1)
  	ELSE ()
  	  CHECK_FUNCTION_EXISTS (alloca HAVE_ALLOCA)
  	ENDIF ()
  
  	CONFIG_DEFINE (HAVE_ALLOCA)
  
  	MESSAGE("# aio.c")
  
  	CHECK_INCLUDE_FILE (sys/time.h HAVE_SYS_TIME_H)
  	CHECK_INCLUDE_FILE (sys/filio.h HAVE_SYS_FILIO_H)
  
  	CONFIG_DEFINE (HAVE_SYS_TIME_H)
  	CONFIG_DEFINE (HAVE_SYS_FILIO_H)
  
  	CHECK_FUNCTION_EXISTS (nanosleep HAVE_NANOSLEEP)
  
  	CONFIG_DEFINE (HAVE_NANOSLEEP)
  
  	MESSAGE("# sqUnixCharConv.c")
  
  	CHECK_INCLUDE_FILE (iconv.h HAVE_ICONV_H)
  	CHECK_INCLUDE_FILE (langinfo.h HAVE_LANGINFO_H)
  
  	IF (HAVE_LANGINFO_H)
   	 TRY_COMPILE (HAVE_LANGINFO_CODESET ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testLanginfoCodeset.c)
  	ENDIF (HAVE_LANGINFO_H)
  
  	CHECK_LIBRARY_EXISTS (iconv libiconv_open "" HAVE_LIBICONV)
  	IF (HAVE_LIBICONV)
   	 USE_LIBRARY (iconv)
  	ENDIF (HAVE_LIBICONV)
  
  	CONFIG_DEFINE (HAVE_ICONV_H)
  	CONFIG_DEFINE (HAVE_LANGINFO_CODESET)
  
  	MESSAGE("# sqUnixExternalPrims.c")
  
  	CHECK_INCLUDE_FILE (dlfcn.h HAVE_DLFCN_H)
  
  	CHECK_LIBRARY_EXISTS (dl dlopen "" HAVE_LIBDL)
  	IF (HAVE_LIBDL)
   	 USE_LIBRARY (dl)
  	ENDIF (HAVE_LIBDL)
  	IF (HAVE_LIBDL)
   	 SET (HAVE_DLOPEN 1)
  	ELSE ()
  	  CHECK_FUNCTION_EXISTS (dlopen HAVE_DLOPEN)
  	ENDIF (HAVE_LIBDL)
  
  	CHECK_FUNCTION_EXISTS (_dyld_present HAVE_DYLD)
  	CHECK_FUNCTION_EXISTS (snprintf HAVE_SNPRINTF)
  	CHECK_FUNCTION_EXISTS (__snprintf HAVE___SNPRINTF)
  
  	CONFIG_DEFINE (HAVE_DLFCN_H)
  	CONFIG_DEFINE (HAVE_DLOPEN)
  	CONFIG_DEFINE (HAVE_DYLD)
  	CONFIG_DEFINE (HAVE_SNPRINTF)
  	CONFIG_DEFINE (HAVE___SNPRINTF)
  
  	SET (VM_X11DIR \"${X11_LIBRARY_DIR}\")
  
  	CONFIG_DEFINE (VM_X11DIR)
  
  	SET (VM_MODULE_PREFIX \"${CMAKE_SHARED_MODULE_PREFIX}\")
  
  	CONFIG_DEFINE (VM_MODULE_PREFIX)
  
  	SET (CMAKE_SHARED_MODULE_PREFIX "so.")
  	SET (CMAKE_SHARED_MODULE_SUFFIX "")
  
  	SET (MODULE_PREFIX  \"${CMAKE_SHARED_MODULE_PREFIX}\")
  	SET (MODULE_SUFFIX  \"${CMAKE_SHARED_MODULE_SUFFIX}\")
  	SET (LIBRARY_PREFIX \"${CMAKE_SHARED_LIBRARY_PREFIX}\")
  	SET (LIBRARY_SUFFIX \"${CMAKE_SHARED_LIBRARY_SUFFIX}\")
  
  	CONFIG_DEFINE (MODULE_PREFIX)
  	CONFIG_DEFINE (MODULE_SUFFIX)
  	CONFIG_DEFINE (LIBRARY_PREFIX)
  	CONFIG_DEFINE (LIBRARY_SUFFIX)
  
  	MESSAGE("# sqUnixMain.c")
  
  	SET (VM_BUILD_STRING "\"Unix built on \"__DATE__ \" \"__TIME__\" Compiler: \"__VERSION__")
  
  	CONFIG_DEFINE (VM_BUILD_STRING)
  
  
  	SET (VM_LIBDIR "\"${prefix}/${plgdir}\"")
  
  	CONFIG_DEFINE (VM_LIBDIR)
  
  	SET (VM_HOST        \"${VM_HOST}\")
  	SET (VM_HOST_CPU    \"${VM_HOST_CPU}\")
  	SET (VM_HOST_VENDOR \"${VM_HOST_VENDOR}\")
  	SET (VM_HOST_OS     \"${VM_HOST_OS}\")
  
  	CONFIG_DEFINE (VM_HOST)
  	CONFIG_DEFINE (VM_HOST_CPU)
  	CONFIG_DEFINE (VM_HOST_VENDOR)
  	CONFIG_DEFINE (VM_HOST_OS)
  
  	SET (VM_VERSION_INFO \"${VM_VERSION}${versionsuffix}\")
  	SET (VM_VERSION \"${VM_VERSION}\")
  	SET (PLATFORM_SOURCE_VERSION \"${PLATFORM_SOURCE_VERSION}\")
  
  	CONFIG_DEFINE (VM_VERSION)
  	CONFIG_DEFINE (VM_VERSION_INFO)
  	CONFIG_DEFINE (PLATFORM_SOURCE_VERSION)
  	CONFIG_DEFINE (SQ_VERSION)
  
  	CHECK_FUNCTION_EXISTS (tzset	HAVE_TZSET)
  	CHECK_VARIABLE_EXISTS (timezone	HAVE_TIMEZONE)
  	CHECK_STRUCT_HAS_MEMBER ("struct tm" tm_gmtoff time.h HAVE_TM_GMTOFF)
  
  	CONFIG_DEFINE (HAVE_TZSET)
  	CONFIG_DEFINE (HAVE_TIMEZONE)
  	CONFIG_DEFINE (HAVE_TM_GMTOFF)
  
  	CONFIG_DEFINE (IMAGE_DUMP)
  
  	MESSAGE("# sqUnixMemory.c")
  
  	CHECK_FUNCTION_EXISTS (mmap HAVE_MMAP)
  	CONFIG_DEFINE (HAVE_MMAP)
  
  	MESSAGE("# OLPC")
  
  	IF (NOT without-SUGAR)
   	 SET (SUGAR 1)
  	ENDIF ()
  
  	CONFIG_DEFINE (SUGAR)
  
  	IF (DEFINED SQ_VI_BYTES_PER_WORD)
   	 CONFIG_DEFINE (SQ_VI_BYTES_PER_WORD)
  	ENDIF (DEFINED SQ_VI_BYTES_PER_WORD)
  
  
  
  
  ENDIF (NOT DEFINED __sq_config_h)
  '!

Item was added:
+ ----- Method: SqueakUnixConfig>>configAioC (in category 'cmake configuration') -----
+ configAioC
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'#aio.c');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'sys/time.h' variable:'HAVE_SYS_TIME_H');		
+ 		addLast: ((CMakeCheckIncludeFile new) include:'sys/filio.h' variable:'HAVE_SYS_FILIO_H');		
+ 		addLast:((CMakeCheckFunctionExists new) function: 'nanosleep' variable: 'HAVE_NANOSLEEP').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configCheckIncludeFileTemplates (in category 'cmake configuration') -----
+ configCheckIncludeFileTemplates
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: 'CHECK_INCLUDE_FILES');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'unistd.h' variable:'HAVE_UNISTD_H');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'dirent.h' variable:'HAVE_DIRENT_H');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'pty.h' variable:'HAVE_PTY_H');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'stropts.h' variable:'HAVE_STROPTS_H').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configCheckLibraryExistsTemplates (in category 'cmake configuration') -----
+ configCheckLibraryExistsTemplates
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: 'CHECK_LIBRARY_EXISTS');
+ 		addLast: ((CMakeCheckLibraryExists new) library: 'dl' function: 'dlopen' location:'' variable: 'HAVE_LIBDL' ).
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configFindPackageTemplates (in category 'cmake configuration') -----
+ configFindPackageTemplates
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast: ((CMakeMessage new) message: 'FIND_PACKAGE');
+ 		addLast: ((CMakeFindPackage new) packagename: 'X11');
+ 		addLast: (CMakeFindPackageOpenGL new).
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configOLPC (in category 'cmake configuration') -----
+ configOLPC
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'# OLPC');
+ 		addLast:((CMakeIfNotFlagSetConfigDefine new)  flag: 'without-SUGAR' variable:'SUGAR');
+ 		addLast:((CMakeIfDefinedConfigDefine new)  variable:'SQ_VI_BYTES_PER_WORD').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configPlatformSpecific (in category 'cmake configuration') -----
+ configPlatformSpecific
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'# sqPlatformSpecific.h');
+ 		addLast:(CMakeCheckAlloca new).
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configSqExternalPrims (in category 'cmake configuration') -----
+ configSqExternalPrims
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'#sqUnixExternalPrims.c');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'dlfcn.h' variable:'HAVE_DLFCN_H' );		
+ 		addLast: (CMakeCheckLibDL new);
+ 		addLast:((CMakeCheckFunctionExists new) function:'_dyld_present' variable:'HAVE_DYLD');
+ 		addLast:((CMakeCheckFunctionExists new) function:'snprintf' variable:'HAVE_SNPRINTF');
+ 		addLast:((CMakeCheckFunctionExists new) function:'__snprintf' variable:'HAVE___SNPRINTF');
+ 		addLast:((CMakeSetConfigDefine new) variable: 'VM_X11DIR' value:'\"${X11_LIBRARY_DIR}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable: 'VM_MODULE_PREFIX' value:'\"${CMAKE_SHARED_MODULE_PREFIX}\"');
+ 		addLast:((CMakeSet new) variable:'CMAKE_SHARED_MODULE_PREFIX' value:'so.');
+ 		addLast:((CMakeSet new) variable:'CMAKE_SHARED_MODULE_SUFFIX' value:'');
+ 		addLast:((CMakeSetConfigDefine new) variable:'MODULE_PREFIX' value:'\"${CMAKE_SHARED_MODULE_PREFIX}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'MODULE_SUFFIX' value:'\"${CMAKE_SHARED_MODULE_SUFFIX}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'LIBRARY_PREFIX' value:'\"${CMAKE_SHARED_LIBRARY_PREFIX}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'LIBRARY_SUFFIX' value:'\"${CMAKE_SHARED_LIBRARY_SUFFIX}\"').
+ 
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configSqMemoryAccess (in category 'cmake configuration') -----
+ configSqMemoryAccess
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'#sqMemoryAccess.h');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'interp.h' variable:'HAVE_INTERP_H' path: '-I',(self srcDir pathName));		
+ 		addLast:(CMakeCheckTypeSize new);
+ 		addLast:(CMakeCheckTryRunDoubleWordAlignmentOrder new).
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configSqUnixCharConv (in category 'cmake configuration') -----
+ configSqUnixCharConv
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'#sqUnixCharConv.c');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'iconv.h' variable:'HAVE_ICONV_H' );		
+ 		addLast: ((CMakeCheckIncludeFile new) include:'langinfo.h' variable:'HAVE_LANGINFO_H' );		
+ 		addLast:(CMakeCheckTryCompileHaveLangInfoCodeset new);
+ 		addLast:((CMakeCheckLibraryExists new) library:'iconv' function:'libiconv_open' location:'' variable:'HAVE_LIBICONV').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configSqUnixMMemoryC (in category 'cmake configuration') -----
+ configSqUnixMMemoryC
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'# sqUnixMain.c');
+ 		addLast:((CMakeCheckFunctionExists new) function:'mmap' variable:'HAVE_MMAP').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configSqUnixMainC (in category 'cmake configuration') -----
+ configSqUnixMainC
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'# sqUnixMain.c');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_BUILD_STRING' value:'"\"Unix built on \"__DATE__ \" \"__TIME__\" Compiler: \"__VERSION__"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_LIBDIR' value:'"\"${prefix}/${plgdir}\""');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_HOST' value:'\"${VM_HOST}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_HOST_CPU' value:'\"${VM_HOST_CPU}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_HOST_VENDOR' value:' \"${VM_HOST_VENDOR}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_HOST_OS' value:' \"${VM_HOST_OS}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_VERSION' value: '\"${VM_VERSION}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'VM_VERSION_INFO' value: '\"${VM_VERSION}${versionsuffix}\"');
+ 		addLast:((CMakeSetConfigDefine new) variable:'PLATFORM_SOURCE_VERSION' value: '\"${PLATFORM_SOURCE_VERSION}\"');
+ 		addLast:((CMakeConfigDefine new) variable:'SQ_VERSION');
+ 		addLast:((CMakeCheckFunctionExists new) function:'tzset' variable:'HAVE_TZSET');
+ 		addLast:((CMakeCheckVariableExists new) var:'timezone' variable:'HAVE_TIMEZONE');
+ 		addLast:((CMakeCheckStructHasMember new)struct: '"struct tm"' member: 'tm_gmtoff' header: 'time.h' variable: 'HAVE_TM_GMTOFF');
+ 		addLast:((CMakeConfigDefine new) variable:'IMAGE_DUMP').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configTemplates (in category 'cmake configuration') -----
+ configTemplates
+ 	|templates|
+ 	self flag:'tty'. "fix this version stuff. get ostype from elsewhere.  does the without-gl flag need to be here?"
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'DebugTemplate');
+ 		addLast: (CMakeDebug new);
+ 		addLast:((CMakeMessage new) message:'Global Configs');
+ 		addLast: ((CMakeSetConfigDefine new) variable: 'OS_TYPE' value:'\"unix\"');
+ 		addLast: ((CMakeVersion new) version: '1.2.3.4');
+ 		addLast: ((CMakeSet new) variable:'without-gl' value: ''); 
+ 		addLast: ((CMakeCompilerIsGNUCC new));
+ 		addLast:((CMakeMessage new) message:'Tests');
+ 		addLast:(CMakeTestBigEndian new);
+ 		addLast:(CMakeCheckFunctionAtExitOnExit new);
+ 		addAllLast: self configCheckIncludeFileTemplates;
+ 		addAllLast: self configCheckLibraryExistsTemplates;
+ 		addAllLast: self configFindPackageTemplates;
+ 		addAllLast: self configSqMemoryAccess;
+ 		addAllLast: self configPlatformSpecific;
+ 		addAllLast: self configAioC;
+ 		addAllLast: self configSqUnixCharConv;
+ 		addAllLast: self configSqExternalPrims;
+ 		addAllLast: self configSqUnixMainC;
+ 		addAllLast: self configSqUnixMMemoryC;
+ 		addAllLast: self configOLPC.
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>configsqUnixCharConv (in category 'cmake configuration') -----
+ configsqUnixCharConv
+ 	"holdover from Ian's work"
+ 	|templates|
+ 	templates:= OrderedCollection new.
+ 	templates 
+ 		addLast:((CMakeMessage new) message:'#sqUnixCharConv.c');
+ 		addLast: ((CMakeCheckIncludeFile new) include:'iconv.h' variable:'HAVE_ICONV_H' );		
+ 		addLast: ((CMakeCheckIncludeFile new) include:'langinfo.h' variable:'HAVE_LANGINFO_H' );		
+ 		addLast:(CMakeCheckTryCompileHaveLangInfoCodesetTemplate new);
+ 		addLast:((CMakeCheckLibraryExists new) library:'iconv' function:'libiconv_open' location:'' variable:'HAVE_LIBICONV').
+ 	^ templates!

Item was added:
+ ----- Method: SqueakUnixConfig>>contentForVmConfigCmake (in category 'cmake configuration') -----
+ contentForVmConfigCmake
+ 	|template |
+ 	template:= CMakeSqConfigH new.
+ 	template templates:  self configTemplates.
+ 	^template contentFor: self!

Item was added:
+ ----- Method: SqueakUnixConfig>>generateVmConfigCmake (in category 'cmake configuration') -----
+ generateVmConfigCmake
+ 	|template |
+ 	template:= CMakeSqConfigH new.
+ 	template templates:  self configTemplates.
+ 	template generate: self!



More information about the Vm-dev mailing list