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

commits at source.squeak.org commits at source.squeak.org
Mon Dec 8 16:35:25 UTC 2014


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

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

Name: CMakeVMMakerSqueak-tty.101
Author: tty
Time: 8 December 2014, 11:35:49.985 am
UUID: ed0d7453-ddf2-42e3-ba78-0bd7bf6861b4
Ancestors: CMakeVMMakerSqueak-tty.100

Examined and QA check class comments for all classes.

=============== Diff against CMakeVMMakerSqueak-tty.100 ===============

Item was changed:
  CMakeTemplate subclass: #CMakeAddCustomCommandOutput
  	instanceVariableNames: 'outputs commandsandargs depends implicitdepends workingdir comment verbatim append maindependency'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeAddCustomCommandOutput commentStamp: 'tty 12/8/2014 11:09' prior: 0!
+ cmake --help-command add_custom_command  
- !CMakeAddCustomCommandOutput commentStamp: 'tty 7/15/2014 09:40' prior: 0!
- A CMakeSetTemplate 's contents look like 
  
- 
- 
- I need to be modified to support the multiple targets, outputs, comand/args/implicit_depends as I only support 1 of each because tty is lazy
- 
- from the CMake --help-command add_custom_command  
- 
  add_custom_command
  ------------------
  
  Add a custom build rule to the generated build system.
  
  There are two main signatures for add_custom_command The first
  signature is for adding a custom command to produce an output.
  
  ::
  
   add_custom_command(OUTPUT output1 [output2 ...]
                      COMMAND command1 [ARGS] [args1...]
                      [COMMAND command2 [ARGS] [args2...] ...]
                      [MAIN_DEPENDENCY depend]
                      [DEPENDS [depends...]]
                      [IMPLICIT_DEPENDS <lang1> depend1
                                       [<lang2> depend2] ...]
                      [WORKING_DIRECTORY dir]
                      [COMMENT comment] [VERBATIM] [APPEND])
  
  This defines a command to generate specified OUTPUT file(s).  A target
  created in the same directory (CMakeLists.txt file) that specifies any
  output of the custom command as a source file is given a rule to
  generate the file using the command at build time.  Do not list the
  output in more than one independent target that may build in parallel
  or the two instances of the rule may conflict (instead use
  add_custom_target to drive the command and make the other targets
  depend on that one).  If an output name is a relative path it will be
  interpreted relative to the build tree directory corresponding to the
  current source directory.  Note that MAIN_DEPENDENCY is completely
  optional and is used as a suggestion to visual studio about where to
  hang the custom command.  In makefile terms this creates a new target
  in the following form:
  
  ::
  
   OUTPUT: MAIN_DEPENDENCY DEPENDS
           COMMAND
  
  If more than one command is specified they will be executed in order.
  The optional ARGS argument is for backward compatibility and will be
  ignored.
  
  The second signature adds a custom command to a target such as a
  library or executable.  This is useful for performing an operation
  before or after building the target.  The command becomes part of the
  target and will only execute when the target itself is built.  If the
  target is already built, the command will not execute.
  !

Item was changed:
  CMakeTemplate subclass: #CMakeAddLibrary
  	instanceVariableNames: 'library type sources exclude'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeAddLibrary commentStamp: 'tty 12/8/2014 11:10' prior: 0!
- !CMakeAddLibrary commentStamp: 'tty 7/17/2014 10:47' prior: 0!
  I encapsulate the simplest version of the CMake add_library command.
  
  If you want additional versions, either copy me or enhance me.
  
+ You can see the documentation with
+ cmake --help-command add_library
- You can see the documentation with cmake --help-command add_library
  
  add_library
  -----------
  
  Add a library to the project using the specified source files.
  
  ::
  
   add_library(<name> [STATIC | SHARED | MODULE]
               [EXCLUDE_FROM_ALL]
               source1 [source2 ...])
  
  !

Item was changed:
  CMakeCheckIncludeFile subclass: #CMakeCheckAlloca
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeCheckAlloca commentStamp: 'tty 12/8/2014 10:54' prior: 0!
+ A CMakeCheckAlloca looks like this:
- !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 changed:
  CMakeCheckFunctionExists subclass: #CMakeCheckFunctionAtExitOnExit
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeCheckFunctionAtExitOnExit commentStamp: 'tty 12/8/2014 10:55' prior: 0!
+ A CMakeCheckFunctionAtExitOnExit It looks like this
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckIncludeFile
  	instanceVariableNames: 'include variable path'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeCheckIncludeFile commentStamp: 'tty 12/8/2014 11:10' prior: 0!
+ A CMakeCheckIncludeFile looks something like this:
- !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 changed:
  CMakeCheckLibraryExists subclass: #CMakeCheckLibDL
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeCheckLibDL commentStamp: 'tty 12/8/2014 10:55' prior: 0!
+ A CMakeCheckLibDL looks like this:
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckLibraryExists
  	instanceVariableNames: 'library function location variable'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeCheckLibraryExists commentStamp: 'tty 12/8/2014 11:11' prior: 0!
+ A CMakeCheckLibraryExists is a CMake Command in the CheckLibraryExists Module
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckStructHasMember
  	instanceVariableNames: 'struct member header variable'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeCheckStructHasMember commentStamp: 'tty 12/8/2014 11:11' prior: 0!
+ A CMakeCheckStructHasMember looks like this:
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckTryCompileHaveLangInfoCodeset
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeCheckTryCompileHaveLangInfoCodeset commentStamp: 'tty 12/8/2014 10:55' prior: 0!
+ A CMakeCheckTryCompileHaveLangInfoCodeset  looks like this.
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckTryRunDoubleWordAlignmentOrder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeCheckTryRunDoubleWordAlignmentOrder commentStamp: 'tty 12/8/2014 10:55' prior: 0!
+ A CMakeCheckTryRunDoubleWordAlignmentOrder  looks like this:
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckTypeSize
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeCheckTypeSize commentStamp: 'tty 12/8/2014 11:11' prior: 0!
+ A CMakeCheckTypeSize looks like this:
- !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 changed:
  CMakeTemplate subclass: #CMakeCheckVariableExists
  	instanceVariableNames: 'var variable'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeCheckVariableExists commentStamp: 'tty 12/8/2014 11:11' prior: 0!
+ A CMakeCheckVariableExists looks like this:
- !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 changed:
  CMakeTemplate subclass: #CMakeCommand
  	instanceVariableNames: 'command params'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeCommand commentStamp: 'tty 12/8/2014 11:13' prior: 0!
+ A CMakeCommand  is a generic template for implementing cmake commands if one doesn't exist and you are too lazy to write a template (:
+ cmake --help-command-list
- !CMakeCommand commentStamp: '<historical>' prior: 0!
- A CMakeSetTemplate 's contents look like
  
  
- 	CONFIG_DEFINE (SQ_VERSION)
  
- 
- CONFIG_DEFINE is a Macro Ian Piumarta wrote that looks like this:
- 
- MACRO (CONFIG_DEFINE var)
-   LIST (APPEND config_vars "${var}")
- ENDMACRO (CONFIG_DEFINE var)
- 
- You can see it in CPlatformConfigForSqueak class utilsCMake
- 
  !

Item was changed:
  CMakeTemplate subclass: #CMakeCompilerIsGNUCC
  	instanceVariableNames: 'ifterp elseterm ifmessage elsemessage'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeCompilerIsGNUCC commentStamp: 'tty 12/8/2014 10:56' prior: 0!
+ A CMakeCompilerIsGNUCC looks like this
- !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 changed:
  CMakeTemplate subclass: #CMakeConfigDefine
  	instanceVariableNames: 'variable value'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeConfigDefine commentStamp: 'tty 12/8/2014 11:13' prior: 0!
+ A CMakeConfigDefine 's contents look like
- !CMakeConfigDefine commentStamp: 'tty 7/13/2014 13:41' prior: 0!
- A CMakeSetTemplate 's contents look like
  
  
  	CONFIG_DEFINE (SQ_VERSION)
  
  
  CONFIG_DEFINE is a Macro Ian Piumarta wrote that looks like this:
  
  MACRO (CONFIG_DEFINE var)
    LIST (APPEND config_vars "${var}")
  ENDMACRO (CONFIG_DEFINE var)
  
  You can see it in CPlatformConfigForSqueak class utilsCMake
  
  !

Item was changed:
  CMakeTemplate subclass: #CMakeConfigUnDefine
  	instanceVariableNames: 'variable'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeConfigUnDefine commentStamp: 'tty 12/8/2014 11:14' prior: 0!
+ A CMakeConfigUnDefine looks like
- !CMakeConfigUnDefine commentStamp: 'tty 7/13/2014 13:43' prior: 0!
- A CMakeSetTemplate 's contents look like
  
  
  	CONFIG_DEFINE (SQ_VERSION)
  
  
  CONFIG_UNDEFINE is a Macro defined in  CPlatformConfigForSqueak class utilsCMake
  
  MACRO (CONFIG_UNDEFINE var)
    LIST (REMOVE_ITEM config_vars "${var}")
  ENDMACRO (CONFIG_UNDEFINE var)
  
  
  
  !

Item was changed:
  CMakeTemplate subclass: #CMakeDebug
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeDebug commentStamp: 'tty 12/8/2014 10:56' prior: 0!
+ A CMakeDebug  looks like this: (hack me however you want for your needs)
+ 
+   message("CMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
+   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 changed:
  CMakeTemplate subclass: #CMakeFindPackage
  	instanceVariableNames: 'packagename'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeFindPackage commentStamp: 'tty 12/8/2014 11:15' prior: 0!
+ A CMakeFindPackage can look like this:
- !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 changed:
  CMakeFindPackage subclass: #CMakeFindPackageOpenGL
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeFindPackageOpenGL commentStamp: 'tty 12/8/2014 10:57' prior: 0!
+ A CMakeFindPackageOpenGL  looks like this.
- !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 changed:
  CMakeTemplate subclass: #CMakeHeader
  	instanceVariableNames: 'configurationName'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeHeader commentStamp: 'tty 12/8/2014 10:57' prior: 0!
+ A CMakeHeader looks something like this:.
- !CMakeHeader commentStamp: 'tty 7/14/2014 13:40' prior: 0!
- A CMakeHeader is looks something like this:.
  	# This is automatically generated file using Linux64x86w32BitSqueakCogV3Config on 14 July 2014 1:33:18.378 pm
  
  !

Item was changed:
  CMakeTemplate subclass: #CMakeIfAddDefinitionsElseAddDefinitions
  	instanceVariableNames: 'condition ifdefinitions elsedefinitions'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
  !CMakeIfAddDefinitionsElseAddDefinitions commentStamp: 'tty 12/5/2014 15:20' prior: 0!
  A CMakeIfAddDefinitionsElseAddDefinitions  looks something like this:
  
  if (${WIN32})
  	add_definitions(-Werror-implicit-function-declaration)	
  else(${WIN32})
  	add_definitions(-DNO_ISNAN)
  endif (${WIN32})'.
  
  CPlatformConfig>>configureFloatMathPlugin is the motivation
  CMakePlatformConfigForSqueak>>configureByTemplateFilePlugin is where this is used!

Item was changed:
  CMakeTemplate subclass: #CMakeIfDefinedConfigDefine
  	instanceVariableNames: 'variable'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	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 changed:
  CMakeTemplate subclass: #CMakeIfNotFlagSetConfigDefine
  	instanceVariableNames: 'variable flag'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	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 changed:
  CMakeTemplate subclass: #CMakeIfNotSetConfigDefine
  	instanceVariableNames: 'variable'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeIfNotSetConfigDefine commentStamp: 'tty 12/8/2014 11:19' prior: 0!
+ A CMakeIfNotSetConfigDefine looks something like this:
- !CMakeIfNotSetConfigDefine commentStamp: 'tty 7/13/2014 10:53' prior: 0!
- A CMakeHeaderFilesTemplate looks something like this:
  
+  IF(NOT ', variable ,')
+ 	SET (',variable,' 1)
+   ENDIF(', variable ,')
+  CONFIG_DEFINE(', variable,')'
-   	IF (NOT without-SUGAR)
-  	 SET (SUGAR 1)
- 	ENDIF ()
- 	CONFIG_DEFINE (SUGAR)
  !

Item was changed:
  CMakeTemplate subclass: #CMakeInclude
  	instanceVariableNames: 'file'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeInclude commentStamp: 'tty 12/8/2014 11:20' prior: 0!
+ A CMakeInclude looks like 
+ 
+ INCLUDE(fileName)
- !CMakeInclude commentStamp: 'tty 7/14/2014 10:24' prior: 0!
- A CMakeSetTemplate 's contents look like INCLUDE(fileName)
  !

Item was changed:
  CMakeTemplate subclass: #CMakePluginExternal
  	instanceVariableNames: 'plugindefinitions pluginlinkdirectories pluginincludedirectories bld src cross srcplugins unixvm unixplugins unix crossplugins plugin pluginsources plunklinklibraries plgdir'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCompositeTemplates'!
  
+ !CMakePluginExternal commentStamp: 'tty 12/8/2014 10:43' prior: 0!
+ N.B. I am not used. I am kept for reference should we re-do the plugin configurations during a re-factoring.
+ 
- !CMakePluginExternal commentStamp: 'tty 7/13/2014 19:02' prior: 0!
  A CMakePluginExternal is what Ian Piumarta wrote in trunk/platforms/unix/cmake/PlatformExternal.cmake. 
  
  I .look like this in the original:
  
  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})
  
  INSTALL (TARGETS @plugin@ LIBRARY DESTINATION @plgdir@)!

Item was changed:
  CMakeGenerator subclass: #CMakePluginGeneratorForSqueak
  	instanceVariableNames: 'plugin vmGen internal extraRules doNotGenerate externalDependencies configDotCMake templates'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
+ !CMakePluginGeneratorForSqueak commentStamp: 'tty 12/8/2014 11:28' prior: 0!
- !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 changed:
  CMakeTemplate subclass: #CMakePluginInternal
  	instanceVariableNames: 'plugindefinitions pluginlinkdirectories pluginincludedirectories bld src cross srcplugins unixvm unixplugins unix crossplugins plugin pluginsources'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCompositeTemplates'!
  
+ !CMakePluginInternal commentStamp: 'tty 12/8/2014 10:43' prior: 0!
+ N.B. I am not used. I am kept for reference should we re-do the plugin configurations during a re-factoring.
+ 
- !CMakePluginInternal commentStamp: 'tty 7/13/2014 20:32' prior: 0!
  A CMakePluginInternal is what Ian Piumarta wrote in trunk/platforms/unix/cmake/PlatformInternal.cmake. 
  
  I .look like this in the original:
  
  MESSAGE ("${@plugin at _definitions}")
  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@)
  !

Item was changed:
  CMakeTemplate subclass: #CMakePluginVm
  	instanceVariableNames: 'config definitions module sources includedirectories'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCompositeTemplates'!
  
+ !CMakePluginVm commentStamp: 'tty 12/8/2014 10:44' prior: 0!
+ A CMakePluginVm is a composite template that simplifies outputing vm drivers like vm-display-X11 to a CMakeLists.txt file.
- !CMakePluginVm commentStamp: 'tty 7/17/2014 11:50' prior: 0!
- A CMakeVMDriver is a composite template that simplifies outputing vm drivers like vm-display-X11 to a CMakeLists.txt file.
- I replace the output of pharo's CMakeVMMaker 
  
- CogFamilyUnixConfig addDriver: name sources: aSources generator: cmakeGen externalLibs: extLibs which was invoked like so:
  
+ 
- 	aMaker message: 'addVMDrivers: aMaker'.
- 	 self 
- 		addDriver: 'vm-display-null' 
- 		sources: #( 
- 			'${targetPlatform}/vm-display-null/sqUnixDisplayNull' )
- 		generator: aMaker
- 		externalLibs: #();
  		!

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

Item was changed:
  CMakeTemplate subclass: #CMakeSetConfigDefine
  	instanceVariableNames: 'variable value'
  	classVariableNames: ''
  	poolDictionaries: ''
+ 	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
- 	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeSetConfigDefine commentStamp: 'tty 12/8/2014 11:20' prior: 0!
+ A CMakeSetConfigDefine 's contents look like 
- !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 changed:
  CMakeTemplate subclass: #CMakeSqConfigH
  	instanceVariableNames: 'config templates'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCompositeTemplates'!
  
+ !CMakeSqConfigH commentStamp: 'tty 12/8/2014 10:50' prior: 0!
- !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)
+ 
+ View me with: 
+ Transcript show: ((Linux64x86w32BitSqueakCogV3Config new) configureForBuildType: #build) contentForVmConfigCmake
+ 
  !

Item was changed:
  CMakeGenerator subclass: #CMakeTemplate
  	instanceVariableNames: 'content'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeTemplates'!
  
+ !CMakeTemplate commentStamp: 'tty 12/8/2014 11:08' prior: 0!
+ A CMakeTemplate  is a wrapper for CMake commands, variables and definitions.
- !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.
  
+ N.B. The motivations for this approach are:
+ 
+ 1. I found the Pharo methods  in CMakeGenerator 's (cmake commands protocol) difficult to parse and debug.
+ 2, As I developed it bacame apparent that the key to making this project work is to "THINK IN CMake". 
+ 3. I find the Seaside approach of using Components to generate a web-page is a useful idiom for generating CMake files.
+ 4. Using wrappers for the CMake commands eases re-use and consistency that radically sped up development. 
+ 5. It is easy to add new templates. Just find the CMake construct you want, subclass me, and model it such that its output generates the correct CMake "thing" 
+ 
+ cmake   --help-commands
+ cmake   --help-command
+ cmake   --help-command-list
+ cmake   --help-commands 
+ cmake   --help-module
+ cmake   --help-module-list
+ cmake   --help-modules 
+ cmake   --help-policy 
+ cmake   --help-policy-list 
+ cmake   --help-policies 
+ cmake   --help-property 
+ cmake   --help-property-list 
+ cmake   --help-properties
+ cmake   --help-variable var
+ cmake   --help-variable-list 
+ cmake   --help-variables
+ 
+ 
+ 
+ 
  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 changed:
  CMakeTemplate subclass: #CMakeTestBigEndian
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
  
+ !CMakeTestBigEndian commentStamp: 'tty 12/8/2014 10:57' prior: 0!
+ A CMakeTestBigEndian looks like this:
- !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 changed:
  CMakeVMPlugin subclass: #CMakeVMDisplayCustom
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMDisplayCustom commentStamp: 'tty 12/8/2014 09:32' prior: 0!
+ A CMakeVMDisplayCustom  is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMDisplayFbdev
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMDisplayFbdev commentStamp: 'tty 12/8/2014 09:32' prior: 0!
+ A CMakeVMDisplayFbdev  is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMDisplayNull
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMDisplayNull commentStamp: 'tty 12/8/2014 09:32' prior: 0!
+ A CMakeVMDisplayNull is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMDisplayQuartz
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMDisplayQuartz commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMDisplayQuartz is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMDisplayX11
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMDisplayX11 commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMDisplayX11 is a data-bucket that holds configration information!

Item was changed:
  ----- Method: CMakeVMMakerSqueakDeveloperHelp class>>templates (in category 'pages') -----
  templates
  	^HelpTopic
  		title:'CPlatformConfigForSqueak class templates'
  		contents:
+ 'CMakeVMMakerSqueak utilizes wrapper classes on CMake commands to generate CMake output files like CMakeLists.txt.
+ 
+ Currently the 3 class categories produce output as such:
+ 
+ 1. CMakeVMMakerSqueak-CMakeCompositeTemplates output large CMake structures. The essentially wrap both custom and standard CMake templates.
+ 
+ 2. CMakeVMMakerSqueak-CMakeCustomTemplates typically wrap CMake logic constructs like IF(DEFINED foo;
+ 
+ 3. CMakeVMMakerSqueak-CMakeTemplates are wrappers for specific CMake Commands, properties and variables.
+ cmake --help 
+ cmake --help-command-list
+ cmake --help-property-list
+ cmake --help-variable-list
+ 
+ will give you an idea of what is wrapped. As new templates are introduced, they can be re-used easily, minimizing errors.
+ 
- 'explain:
- utilsCMake
- vmBUildCMake
- vmConfigCMake
- vmConfiIn
- testDouble*
- pluginsCMake
  '!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundALSA
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundALSA commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundALSA is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundCustom
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundCustom commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundCustom is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundMacOSX
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundMacOSX commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundMacOSX is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundNAS
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundNAS commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundNAS is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundNull
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundNull commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundNull is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundOSS
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundOSS commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundOSS is a data-bucket that holds configration information!

Item was changed:
  CMakeVMPlugin subclass: #CMakeVMSoundSun
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-VMPlugins'!
+ 
+ !CMakeVMSoundSun commentStamp: 'tty 12/8/2014 09:33' prior: 0!
+ A CMakeVMSoundSun is a data-bucket that holds configration information!

Item was changed:
  CMakeTemplate subclass: #CMakeVersion
  	instanceVariableNames: 'version'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-CMakeCustomTemplates'!
+ 
+ !CMakeVersion commentStamp: 'tty 12/8/2014 10:58' prior: 0!
+ A CMakeVersion looks like this:
+ 
+   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 changed:
  CPlatformConfig subclass: #CPlatformConfigForSqueak
  	instanceVariableNames: 'buildType generateBuild generateBuildAssert generateBuildAssertITimerHeartbeat generateBuildDebug generateBuildDebugITimerHeartbeat generateBuildDebugMultiThreaded generateBuildIHeartbeatTimer generateBuildMultiThreaded generateBuildMultiThreadedAssert generateBuildMultiThreadedDebug templates enabledebugmessages vmplugins'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  CPlatformConfigForSqueak class
  	instanceVariableNames: 'isAbstractBaseClass'!
  
+ !CPlatformConfigForSqueak commentStamp: 'tty 12/8/2014 11:28' prior: 0!
- !CPlatformConfigForSqueak commentStamp: 'tty 11/28/2014 12:08' prior: 0!
  A CPlatformConfigForSqueak acts as a compatability layer for Squeak and an Abstract Base Class for extended functionality required for the Squeak CMakeVMMaker use-case.
  
  I make (very) heavy use of a specific design pattern for configuring myself and remaining compatible with pharo's CMakeVMMaker.
  The entry point for that pattern is my method 'configureForBuildType: aSymbol' . Each method send in there detects my buildType and routes the send
  to the approriate method for that buildType.
  
  Subclasses of me 'must' configure themselves for each build type per that pattern. 
  However this can be very easy by just returning the base configuration.
  
  Tests are written to verify that this support infrastructure is in place.
  
  I have two important methods.
  
  excludeFromBuild and isAbstractBaseClass.
  
  excludeFromBuild 
  		is used to exclude a configuration from being built by a Builder.
  		is used to exclude a configuration from Testing.
  
  isAbstractBaseClass 
  		is used by configurations that exclude themselves from being built by a Builder BUT need to be included in 		Testing.
  
  										
  excludeFromBuild  | isAbstractBaseClass  | should build  | should test
  	T					    T                            NO                  YES
        T					    F                             NO                   NO
        F					    T                            YES                  YES
        F                                 F                            YES                  YES
  
  
  The use-case is as follows.
  
  An abstract base class contains a lot of functionality that must be implemented and tested for the system to work, but it is not meant to be compiled.
  
  concrete classes of that AbstractBase class can exclude themselves from being built by builders and by doing so are not tested.
  However, once a concrete configuration is enabled to be built, it must pass all tests.
  
  Linux32x86Config is an example of an AbstractBase class that must pass all testing, but is not buildable.
  Its subclass Linux32x86SqueakCogV3Config needs testing, but a developer can toggle 'exclude from build' to hide it from Builders or make it available to them.
  
  Tests make the decision on what configurations to test. Here are some examples.
  	(o excludeFromBuild not) & (configuration isAbstractBaseClass not)  this is a concrete [Lang][VM][MemoryManager][etc] configuration that will be built. No platform classes considered
  	(o excludeFromBuild) & (configuration isAbstractBaseClass not)         This is a concrete [Lang][VM][MemoryManager][etc] configuration that will be NOT built.
  	(o excludeFromBuild not) | (configuration isAbstractBaseClass)          concrete implementation may depend on its [OS][VMWordSize][Processor] AbstractBaseClass for platform level methods. 
  																		   example: Linux32x86Config ccBuild has the '-m32' compiler flag that is common to all builds on that platform
  	(o excludeFromBuild not) & (configuration isAbstractBaseClass)       Not allowed. [OS][VMWordSize][Processor] AbstractBaseClasses should not be built. This is a useful test in its own right.
  	(o excludeFromBuild) & (configuration isAbstractBaseClass)             These are the AbstractBaseClasses. An AbstractBaseClass should always be excluded from a build
  
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  tty.!
  CPlatformConfigForSqueak class
  	instanceVariableNames: 'isAbstractBaseClass'!

Item was changed:
  ----- Method: CPlatformConfigForSqueak>>linkerFlags (in category 'compiling') -----
  linkerFlags
+ 	self flag:'tty'. "Does this need to be ported to the redirect design pattern with linkerFlagsBuild, linkerFlagsDebug etc?"
  	"-Wl -z now define these in your concrete CPlatformConfigForSqueak and feed them to cmakeSharedLinkerFlags"
  	self	subclassResponsibility!

Item was changed:
  SqueakUnixConfig subclass: #Linux32ARMv6Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Linux32ARMv6'!
  
+ !Linux32ARMv6Config commentStamp: 'tty 12/8/2014 11:24' prior: 0!
+ A Linux32ARMv6Config is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
- !Linux32ARMv6Config commentStamp: '<historical>' prior: 0!
- A Linux32x86Config is a Squeak Compatibility Layer between the Pharo code in CMakeVMMaker and CMakeVMakerSqueak.
- 
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
- 
  I am not meant to be built.
  
+ SqueakLinux32ARMv6Builder 
- SqueakLinux32x86Builder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  !

Item was changed:
  SqueakUnixConfig subclass: #Linux32x86Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Linux32x86'!
  
+ !Linux32x86Config commentStamp: 'tty 12/8/2014 11:24' prior: 0!
+ A Linux32x86Config  is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
- !Linux32x86Config commentStamp: 'tty 6/15/2014 14:02' prior: 0!
- A Linux32x86Config is a Squeak Compatibility Layer between the Pharo code in CMakeVMMaker and CMakeVMakerSqueak.
- 
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
- 
- I am not meant to be built.
- 
  SqueakLinux32x86Builder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
+ 
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  !

Item was changed:
  SqueakUnixConfig subclass: #Linux64Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-LinuxX86-64'!
  
+ !Linux64Config commentStamp: 'tty 12/8/2014 11:24' prior: 0!
+ A Linux64Config is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
+ 
- !Linux64Config commentStamp: 'tty 6/15/2014 14:01' prior: 0!
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
  
- I am not meant to be built.
- 
  SqueakLinux32x86_64Builder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  !

Item was changed:
  SqueakUnixConfig subclass: #Linux64x86w32BitConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
  
+ !Linux64x86w32BitConfig commentStamp: 'tty 12/8/2014 11:23' prior: 0!
+ A Linux64x86w32BitConfig is an Abstract base class that provides common information for my subclasses.
- !Linux64x86w32BitConfig commentStamp: 'tty 6/15/2014 13:49' prior: 0!
- I provide base class functionality.
- 
  I am not meant to be built.
  
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ 
  SqueakLinux64x86w32CompatBuilder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
+ 
+ 
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  
  !

Item was changed:
  Linux64x86w32BitConfig subclass: #Linux64x86w32BitSqueakCogV3Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Linux64X86-32BitCompatibility'!
  
+ !Linux64x86w32BitSqueakCogV3Config commentStamp: 'tty 12/8/2014 11:23' prior: 0!
+ I am a configuration for 64 bit Linux with 32 Bit compatability libraries.
+ I have been tested with Slackware64 14.1 which uses /usr/lib for 32 bit compatability  libs and /usr/lib64 for normal libs.
- !Linux64x86w32BitSqueakCogV3Config commentStamp: 'tty 6/15/2014 18:26' prior: 0!
- A slightly modified configuration, which avoids linking with openGL libraries.
  
+ If you have a machine which uses /usr/lib for 64 bit libs and /usr/lib32 for 32 bit compat libs then subclass me and modify (at least) the following methods:
+ 
+ compilerFlags
+ externalLibraries
+ linkFlagsBuild
+ linkerFlags
+ 
+ 
  SqueakLinux64x86w32CompatBuilder 
+ 	configureABuildFor: #Linux64x86w32BitSqueakCogV3Config withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	configureABuildFor: #Linux32x86SqueakCogV3NoGLConfig withBuildType: #build;
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  
  Getting the UUIDPlugin to compile (not work, unfortunately, but compile) required modifying oscogvm/platforms/unix/plugins/acinclude.m4.
  to read: (my Slackware system has <uuid> and uuidgen. then setting the 
  
  # -*- sh -*-
  
  AC_MSG_CHECKING([for UUID support])
  AC_TRY_COMPILE([#include <sys/uuid.h>],[uuid_generatorxyz;],[
    AC_MSG_RESULT(yes)
    AC_CHECK_LIB(uuid, uuid_generator_xyz,LIB_UUID="-luuid" )
  ],[
    AC_MSG_RESULT(no)
    AC_MSG_CHECKING([for UUID support uuid/uuid.h] and uuid_generate)
    AC_TRY_COMPILE([#include <uuid/uuid.h>],[uuid_generate;],[
      AC_MSG_RESULT(yes)
      AC_CHECK_LIB(uuid, uuid_generate, LIB_UUID="-luuid")],[
      AC_MSG_RESULT(no)
        AC_MSG_CHECKING([for UUID support uuid and uuidgen] )
        AC_TRY_COMPILE([#include <uuid.h>],[uuidgen;],[
        AC_MSG_RESULT(yes)
         AC_CHECK_LIB(uuid, uuidgen, LIB_UUID="-luuid" )],[
         AC_MSG_RESULT(no)
          AC_PLUGIN_DISABLE
     ])
   ])
  ])
  
  
  
  
  #define HAVE_UUID_H 1 
  #define HAVE_UUIDGEN 1
  
  fl;ags in my configH method
  
  !

Item was changed:
  SqueakUnixConfig subclass: #SqueakBSDConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-BSD32x86'!
  
+ !SqueakBSDConfig commentStamp: 'tty 12/8/2014 11:26' prior: 0!
+ a SqueakBSDConfig is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
- !SqueakBSDConfig commentStamp: 'tty 6/15/2014 14:12' prior: 0!
- I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  I am not meant to be built.
  
  SqueakBSDx86Builder 
  	configureABuildFor: #MY SUBCLASS NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakBSDx86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakBSDx86Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakBSDx86Builder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  CMThirdpartyLibrary subclass: #SqueakCMThirdpartyLibrary
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Libs'!
  
+ !SqueakCMThirdpartyLibrary commentStamp: 'tty 12/8/2014 11:25' prior: 0!
+ N.B. tty: I have not parsed these in depth as of 2014.12.09
+ 
- !SqueakCMThirdpartyLibrary commentStamp: 'tty 5/26/2014 12:51' prior: 0!
  A SqueakCMThirdpartyLibrary is the root library for copies of classes in CMakeVMMaker-Libs.  
  I replace only the Squeak incompatible methods of my parent
  
  !

Item was changed:
  Object subclass: #SqueakCMakeSourceDistroBuilder
  	instanceVariableNames: 'buildTypeAndDirectoryInfo config'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakCMakeSourceDistroBuilder commentStamp: 'tty 12/8/2014 10:36' prior: 0!
+ A SqueakCMakeSourceDistroBuilder does nothing but serve as a reminder that automating distro packaging would be a "Good Thing"
- !SqueakCMakeSourceDistroBuilder commentStamp: 'tty 6/18/2014 09:56' prior: 0!
- A SqueakCMakeSourceDistroBuilder does nothing.
  
+ There is a need to create Source Packages for the Linux Package maintainers: Ubuntu, Slackware, SunOS, RedHat, Debain..etc
- However, there is a need to create Source Packages for the Linux Package maintainers: Ubuntu, Slackware, SunOS, RedHat, Debain..etc
  
  The CMakeVMMaker Design Pattern (essentially a Visitor pattern kicked off by Builders) would be spot on for this task.
  
+ I will/may address this when I am done with the VMGenerator.
- I will address this when I am done with the VMGenerator.
  
  tty. 2014.06.17!

Item was changed:
  Object subclass: #SqueakCMakeVMMakerAbstractBuilder
  	instanceVariableNames: 'buildTypeAndDirectoryInfo config'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  SqueakCMakeVMMakerAbstractBuilder class
  	instanceVariableNames: 'default'!
  
+ !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 12/8/2014 10:42' prior: 0!
- !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 6/15/2014 13:08' prior: 0!
  I am an abstract base class for various CMakeVMMakerSqueak builders.
  
  I am a singleton.
  I am a facade to the various Squeak[Platform][WordSize][VM][MemoryManager]Config classes
  I provide facilities to query my configurations.
  I use the Visitor pattern in collecting information about my configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
- HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  
  
- Usage: 
- -------------------------Using CMakeVMMakerSqueak-------------------------
- These instructions are duplicated in SqueakCMakeVMMakerAbstractBuilder class comments.
  
- 
- The easiest way to use this tool is to utilize one of the concrete Builders in category CMakeVMMakerSqueak-Builder.
- 
- With a builder, you can query it for information and then invoke it to generate configurations and or source.
- 
- Printing or inspecting the following lines will give you a flavor of a typical work-flow.
- 
- 
- -------------Buildable/non-buildable configurations---------
- SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:false    "buildable configurations"
- SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:true.    "edit that configs 'excludeFromBuild' method to change"
- SqueakCMakeVMMakerAbstractBuilder availableBuildTypes
- -------------------------Querying Builders---------------
- SqueakLinux32X86Builder configurationsCategory 
- SqueakLinux32X86Builder buildDirectory 
- SqueakLinux32X86Builder availableBuilds	 
- SqueakLinux32X86Builder availableBuildTypesFor:(SqueakLinux32X86Builder availableBuilds at:1)
- SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackSpurConfig
- SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackV3Config
- SqueakLinux32X86Builder sourceDirectoryFor:(SqueakLinux32X86Builder availableBuilds at:1)
- 
- -------------------------Invoking Builders-------------------------
- "generate only CMake config files"
- SqueakLinux32X86Builder 
- 	configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: #assertWithHeartbeatTimer;
- 	generate   
- 
- "generate configurations and invoke VMMaker to generate source code"
- SqueakLinux32X86Builder 
- 	configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: #debug;
- 	generateSources  
- 
- -------------------------Compiling Instructions-------------------------
- open a terminal and go to the configurations build directory for that configuration. (SqueakLinux32X86Builder buildDirectory)
- change into the build type subdirectory (build, build.assert, build.debug...etc)
- source build.sh will run 'cmake. make' 
- executable is placed in  /products folder.  (SqueakLinux32X86Builder ouputDirectory)
- 
- 
- ----------------------Editing/Constructing Configurations--------------
- 
- Configurations are organized by category:  OperatingSystem, VM Word Size, Processor . (i.e MacOSX32x86 configurations reside in CMakeVMMakerSqueak-MacOSX32x86a)
- For a OperatingSystem,VM Word Size, Processor, configurations are then organized by Language.VM.MemoryManafger (newswpeak.stack.v3, squeak.sista.spur. squeak.cog.spur, etc)
- 
- IF an existing configuratin exists, you may edit or subclass it. For a Builder to see it, it must remain in the category.
- 
- The flag excludeFromBuild determines wether the builder will build it or not. This flag is set to exclude configurations that are just placeholders.
- 
- If you have a special case for an existing [OS][WordSize][Processor].[lang][vm][mm] configuration just subclass it and provide customizations.
- 
- TODO: Provide typical customizations and how to implement them
- 
- internal/external plugins?
- compiler flags?
- includes?
- 
- 
- 
- 
- ----------------------Improvements needed-------------------------
- 
- The CMakeVMMakerSqueak package has some design hacks because it extends 
- the pharo CMakeVMMaker package without modifying that code base.
- Therefore, things that should have been done by introducing squeak sub-classes in the pharo source tree could not be done.
- 
- The biggest design 'quirk' is the use of the Trait TCPlatformConfigForSqueak to enforce a pseudo abstract base class mechanism.
- The other design 'quirk' are the overrides of methods in CPlatformConfig in pharo's package of incompatible methods. (see protocol squeak-compatibility)
- Because of the existing inheritance tree, the overrides could not happen in one squeak compatibility class, but are implemented
- in several subclasses of CPlatformConfig.
- 
- The Squeak Builders implementation also differs significantly from the pharo implementation.
- The pharo code's 'configForDebug/configForReleaase' has been expanded to support the squeak build needs.
- 
  !
  SqueakCMakeVMMakerAbstractBuilder class
  	instanceVariableNames: 'default'!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakIA32BochsBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakIA32BochsBuilder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakIA32BochsBuilder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  CPlatformConfigForSqueak subclass: #SqueakIA32BochsConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-IA32-Bochs'!
  
+ !SqueakIA32BochsConfig commentStamp: 'tty 12/8/2014 11:25' prior: 0!
- !SqueakIA32BochsConfig commentStamp: 'tty 6/15/2014 14:08' prior: 0!
  N.B. I honestly have no idea how to use this. tty (:
  
+ SqueakIA32BochsConfig is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
+ 
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
  
  I am not meant to be built.
  
  SqueakIA32BochsBuilder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  !

Item was changed:
  SqueakIA32BochsConfig subclass: #SqueakIA32BochsLinuxConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-IA32-Bochs'!
  
+ !SqueakIA32BochsLinuxConfig commentStamp: 'tty 12/8/2014 11:25' prior: 0!
- !SqueakIA32BochsLinuxConfig commentStamp: 'tty 6/15/2014 14:09' prior: 0!
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
  SqueakIA32BochsBuilder 
+ 	configureABuildFor: SqueakIA32BochsLinuxConfig withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	configureABuildFor: #MY NAME HERE withBuildType: #build;
- 	generateSources;
- 	generate.  
  
+ 
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  !

Item was changed:
  SqueakIA32BochsConfig subclass: #SqueakIA32BochsMacOSConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-IA32-Bochs'!
  
+ !SqueakIA32BochsMacOSConfig commentStamp: 'tty 12/8/2014 11:25' prior: 0!
- !SqueakIA32BochsMacOSConfig commentStamp: 'tty 6/15/2014 14:09' prior: 0!
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
  SqueakIA32BochsBuilder 
+ 	configureABuildFor: SqueakIA32BochsMacOSConfig withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	configureABuildFor: #MY NAME HERE withBuildType: #build;
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  !

Item was changed:
  SqueakIA32BochsConfig subclass: #SqueakIA32BochsMacOSXConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-IA32-Bochs'!
  
+ !SqueakIA32BochsMacOSXConfig commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakIA32BochsMacOSXConfig commentStamp: 'tty 6/15/2014 14:09' prior: 0!
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
  SqueakIA32BochsBuilder 
+ 	configureABuildFor: SqueakIA32BochsMacOSXConfig withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	configureABuildFor: #MY NAME HERE withBuildType: #build;
- 	generateSources;
- 	generate.  
  
+ 
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  
  !

Item was changed:
  SqueakIA32BochsConfig subclass: #SqueakIA32BochsWin32Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-IA32-Bochs'!
  
+ !SqueakIA32BochsWin32Config commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakIA32BochsWin32Config commentStamp: 'tty 6/15/2014 14:09' prior: 0!
  I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
  
  SqueakIA32BochsBuilder 
+ 	configureABuildFor: SqueakIA32BochsWin32Config  withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	configureABuildFor: #MY NAME HERE withBuildType: #build;
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
- 
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakIOSBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakIOSBuilder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakIOSBuilder commentStamp: '<historical>' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakMacintoshConfig subclass: #SqueakIOSConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-IOS'!
  
+ !SqueakIOSConfig commentStamp: 'tty 12/8/2014 11:25' prior: 0!
+ tty. I have zero clue what goes into IOS, I am adapted from the Pharo code
- !SqueakIOSConfig commentStamp: 'tty 6/15/2014 13:46' prior: 0!
- tty. This layer is should be merged with it's parent.
  
+ A SqueakIOSConfig is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
- This is an abstract class for all Mac Carbon configurations. It is intended to share code between different concrete implementations. 
  
- It is using a Carbon framework , which eventually will be replaced by Cocoa. (see CocoaIOSConfig and its subclasses).
- 
- 
  I am not meant to be built.
  
+ SqueakIOSBuilder 
- SqueakMacOSBuilder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux32ARMv6Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux32ARMv6Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakLinux32ARMv6Builder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux32x86Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakLinux32x86Builder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux32x86_64Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux32x86_64Builder commentStamp: 'tty 12/8/2014 11:26' prior: 0!
- !SqueakLinux32x86_64Builder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakLinux64x86w32CompatBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakLinux64x86w32CompatBuilder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
- !SqueakLinux64x86w32CompatBuilder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
  
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  !

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakMacOSPowerPCBuilder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakMacOSPowerPCBuilder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
- !SqueakMacOSPowerPCBuilder commentStamp: 'tty 6/7/2014 11:24' prior: 0!
  I am a facade.
  
+ I query, and invoke CMakeVMMakerSqueak configurations.
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
+ !
- I query, and invoke CMakeVMMakerSqueak configurations.!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakMacOSX32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakMacOSX32x86Builder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
- !SqueakMacOSX32x86Builder commentStamp: 'tty 6/7/2014 11:24' prior: 0!
  I am a facade.
  
+ I query, and invoke CMakeVMMakerSqueak configurations.
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
+ !
- I query, and invoke CMakeVMMakerSqueak configurations.!

Item was changed:
  SqueakMacintoshConfig subclass: #SqueakMacOSX32x86Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-MacOSX32x86'!
  
+ !SqueakMacOSX32x86Config commentStamp: 'tty 12/8/2014 11:24' prior: 0!
+ N.B. Don't use me until I am refactored for this platform. tty does not own a Mac.
- !SqueakMacOSX32x86Config commentStamp: 'tty 6/15/2014 13:42' prior: 0!
- tty. Don't use me until I am refactored for this platform
  
+ SqueakMacOSX32x86Config is an Abstract base class that provides common information for my subclasses.
- I am not sure what this does yet. I have put this here to keep a consistent pattern of top level configuration per platform.
- I need to be configured for the job I am advertised to do.
- 
- 
  I am not meant to be built.
  
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ 
  SqueakMacOSX32x86Builder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp!

Item was changed:
  SqueakMacintoshConfig subclass: #SqueakMacOSXPowerPCConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-MacOSPowerPC'!
  
+ !SqueakMacOSXPowerPCConfig commentStamp: 'tty 12/8/2014 11:24' prior: 0!
+ N.B. Don't use me until I am refactored for this platform by somebody who owns a PowerPC. tty.
- !SqueakMacOSXPowerPCConfig commentStamp: 'tty 6/15/2014 13:44' prior: 0!
- tty. Don't use me until I am refactored for this platform
  
+ SqueakMacOSXPowerPCConfig iis an Abstract base class that provides common information for my subclasses.
- I am not sure what this does yet. I have put this here to keep a consistent pattern of top level configuration per platform.
- I need to be configured for the job I am advertised to do.
- 
  I am not meant to be built.
  
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ 
  SqueakMacOSPowerPCBuilder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp!

Item was changed:
  CPlatformConfigForSqueak subclass: #SqueakMacintoshConfig
  	instanceVariableNames: 'resourcesDir'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
+ 
+ !SqueakMacintoshConfig commentStamp: 'tty 12/8/2014 11:28' prior: 0!
+ A SqueakMacintoshConfig is a top level configuration for Mac configuratons.
+ My immediate sub-classes are Abstract Base classes for specific Mac variants.
+ The sub-classes of my Abstract Base Classes are concrete configurations of the form
+ [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ I am not meant to be built.
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakSunOS32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakSunOS32x86Builder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
- !SqueakSunOS32x86Builder commentStamp: 'tty 6/7/2014 11:24' prior: 0!
  I am a facade.
  
+ I query, and invoke CMakeVMMakerSqueak configurations.
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
+ !
- I query, and invoke CMakeVMMakerSqueak configurations.!

Item was changed:
  SqueakUnixConfig subclass: #SqueakSunOS32x86Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-SunOS32x86'!
  
+ !SqueakSunOS32x86Config commentStamp: 'tty 12/8/2014 11:24' prior: 0!
+ A SqueakSunOS32x86Config is an Abstract base class that provides common information for my subclasses.
- !SqueakSunOS32x86Config commentStamp: 'tty 6/15/2014 13:41' prior: 0!
- A SqueakSunOS32x86CogConfig provides common informatin for my subclasses.
- 
  I am not meant to be built.
  
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ 
  SqueakSunOS32x86Builder 
  	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- 	generateSources;
- 	generate.  
  
- HelpBrowser openOn: CMakeVMMakerSqueakEndUserHelp
  HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp!

Item was changed:
  CPlatformConfigForSqueak subclass: #SqueakUnixConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
+ !SqueakUnixConfig commentStamp: 'tty 12/8/2014 11:28' prior: 0!
- !SqueakUnixConfig commentStamp: 'tty 6/17/2014 19:53' prior: 0!
  A SqueakUnixConfig is a top level configuration for *nix configuratons.
+ My immediate sub-classes are Abstract Base classes for specific *nix variants.
+ The sub-classes of my Abstract Base Classes are concrete configurations of the form
+ [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ I am not meant to be built.
+ 
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
  !

Item was changed:
  ----- Method: SqueakUnixConfig>>contentForVmConfigCmake (in category 'cmake configuration') -----
  contentForVmConfigCmake
+ "I am a convenience method for developers who are modifying the templates for generateVMConfigCmake method.
+ 
+ Transcript clear.
+ Transcript show: ((Linux64x86w32BitSqueakCogV3Config new) configureForBuildType: #build) contentForVmConfigCmake
+ ((Linux64x86w32BitSqueakCogV3Config new) configureForBuildType: #build) contentForVmConfigCmake   
+ "
  	|template |
  	template:= CMakeSqConfigH new.
  	template templates: self configIanPiumartasTemplates.
  "	template templates:  self configTemplates."
  	^template contentFor: self!

Item was changed:
  SqueakCMakeVMMakerAbstractBuilder subclass: #SqueakWin32x86Builder
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  
+ !SqueakWin32x86Builder commentStamp: 'tty 12/8/2014 11:27' prior: 0!
- !SqueakWin32x86Builder commentStamp: 'tty 6/7/2014 11:23' prior: 0!
  I am a facade.
  
  I query, and invoke CMakeVMMakerSqueak configurations.
  
+ HelpBrowser openOn: CMakeVMMakerSqueakBuildersHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp.
+ HelpBrowser openOn: CMakeVMMakerSqueakStartHereHelp.
  
  
+ 
+ 
  !

Item was changed:
  SqueakWindowsConfig subclass: #SqueakWin32x86Config
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Win32x86'!
  
+ !SqueakWin32x86Config commentStamp: 'tty 12/8/2014 11:23' prior: 0!
+ SqueakWin32x86Config is an Abstract base class that provides common information for my subclasses.
+ I am not meant to be built.
- !SqueakWin32x86Config commentStamp: 'tty 6/15/2014 13:37' prior: 0!
- N.B. tty.  This class comment is from my pharo parent..
  
+ I configure a VM according to my name's form: [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
- This is an abstract class and it is the root configuration for building all types of Cog VMs on MS-Windows platform.
  
  
+ SqueakWin32x86Builder 
+ 	configureABuildFor: #ONE OF MY SUBCLASSES NAME HERE withBuildType: #build;
+ 	enableMessageTracking: true;
+ 	generateByTemplate.
- What you need to get started:
  
- Download and install Msys, with C/C++ compiler support:
- 	http://www.mingw.org/wiki/msys
- 	
- Download and install Git:
- 	http://code.google.com/p/msysgit/
- 	
  
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
- ///
- Optional: add git to the PATH variable:
- 
- Add path to git for msys:
- Control panel -> System -> System Properies / Advanced  [ Environment Variables ]
- 
- There should be already:
- C:\Program Files\Git\cmd
- 
- add:
- 
- C:\Program Files\Git\bin
- 
- /// For automated builds, add SQUEAKVM environment variable and set it to the full path to squeak executable.
- 
- (Control panel -> System -> System Properies / Advanced  [ Environment Variables ])
- 
- in windows shell you can use it then to run squeak: %SQUEAKVM%  , and in mingw bash shell, use $SQUEAKVM
- 
- /// Install CMake:
- http://www.cmake.org/cmake/resources/software.html
- 
- (during installation, in install options , make sure that you choose to add CMake to PATH)
- 
- 
- Note, to run cmake under msys shell, you have to explicitly specify the msys makefiles generator, because default one is MS:
- 
- cmake . -G"MSYS Makefiles"
- 
- 
- Fore more information, check the class comments of all the superclasses.
  !

Item was changed:
  CPlatformConfigForSqueak subclass: #SqueakWindowsConfig
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak'!
  
+ !SqueakWindowsConfig commentStamp: 'tty 12/8/2014 11:27' prior: 0!
+ A SqueakWindowsConfig is is a top level configuration for MSWindows configuratons.
+ My immediate sub-classes are Abstract Base classes for specific MSWindows variants.
+ The sub-classes of my Abstract Base Classes are concrete configurations of the form
+ [Operating System] [WordSize] [Processor Language][VM MemoryManager][BuildType]Conf
+ I am not meant to be built.
+ 
+ HelpBrowser openOn: CMakeVMMakerSqueakDeveloperHelp
+ 
+ N.B. tty.  below are comments from pharo's CogFamilyWindowsConfig. I have not tested them as of 2014.12.09
+ 
+ What you need to get started:
+ Download and install Msys, with C/C++ compiler support:
+ 	http://www.mingw.org/wiki/msys
+ Download and install Git:
+ 	http://code.google.com/p/msysgit/
+ 
+ ///
+ Optional: add git to the PATH variable:
+ 
+ Add path to git for msys:
+ Control panel -> System -> System Properies / Advanced  [ Environment Variables ]
+ 
+ There should be already:
+ C:\Program Files\Git\cmd
+ 
+ add:
+ 
+ C:\Program Files\Git\bin
+ 
+ /// For automated builds, add SQUEAKVM environment variable and set it to the full path to squeak executable.
+ 
+ (Control panel -> System -> System Properies / Advanced  [ Environment Variables ])
+ 
+ in windows shell you can use it then to run squeak: %SQUEAKVM%  , and in mingw bash shell, use $SQUEAKVM
+ 
+ /// Install CMake:
+ http://www.cmake.org/cmake/resources/software.html
+ 
+ (during installation, in install options , make sure that you choose to add CMake to PATH)
+ 
+ 
+ Note, to run cmake under msys shell, you have to explicitly specify the msys makefiles generator, because default one is MS:
+ 
+ cmake . -G"MSYS Makefiles"
+ 
+ !
- !SqueakWindowsConfig commentStamp: 'tty 6/17/2014 19:54' prior: 0!
- A SqueakWindowsConfig is a top level config for Windows boxes!



More information about the Vm-dev mailing list