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

commits at source.squeak.org commits at source.squeak.org
Tue Jun 10 22:16:00 UTC 2014


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

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

Name: CMakeVMMakerSqueak-tty.43
Author: tty
Time: 10 June 2014, 6:15:54.458 pm
UUID: af66e1e9-4379-4938-98bd-0d4b36fcda1c
Ancestors: CMakeVMMakerSqueak-tty.42

Added SqueakCMakeVMMakerAbstractBuilder query for available build types.

Started (finally!) the actual build configuration construction. 

This auto-generated image is missing B2DPlugin, so I will investigate that and return to the builds

=============== Diff against CMakeVMMakerSqueak-tty.42 ===============

Item was added:
+ ----- Method: Linux32x86Config>>configH (in category 'squeak compatibility') -----
+ configH
+ 	" right now its like  that "
+ 	^ '
+ #ifndef __sq_config_h
+ #define __sq_config_h
+ 
+ /* explicit image width */
+ 
+ #define HAVE_INTERP_H 1
+ 
+ /* package options */
+ 
+ #define USE_X11 1
+ #define USE_X11_GLX 1
+ /* #undef       USE_QUARTZ */
+ /* #undef       USE_QUARTZ_CGL */
+ /* #undef       USE_RFB */
+ 
+ /* libraries */
+ 
+ /* #undef       HAVE_LIBX11 */
+ #define HAVE_LIBXEXT 1
+ #define HAVE_LIBDL 1
+ /* #undef       HAVE_DYLD */
+ /* #undef       HAVE_LIBFFI */
+ /* #undef       HAVE_ICONV */
+ 
+ /* #undef       USE_AUDIO_NONE */
+ /* #undef       USE_AUDIO_SUN */
+ /* #undef       USE_AUDIO_NAS */
+ /* #undef       USE_AUDIO_OSS */
+ /* #undef       USE_AUDIO_MACOSX */
+ /* #undef       OSS_DEVICE */
+ 
+ /* header files */
+ 
+ #define HAVE_UNISTD_H 1
+ /* #undef       NEED_GETHOSTNAME_P */
+ 
+ #define HAVE_DIRENT_H 1
+ /* #undef       HAVE_SYS_NDIR_H */
+ /* #undef       HAVE_SYS_DIR_H */
+ /* #undef       HAVE_NDIR_H */
+ #define HAVE_DLFCN_H 1
+ /* #undef       HAVE_ICONV_H */
+ 
+ #define HAVE_SYS_TIME_H 1
+ #define TIME_WITH_SYS_TIME 1
+ 
+ #define HAVE_SYS_FILIO_H 1
+ 
+ /* #undef       HAVE_SYS_AUDIOIO_H */
+ /* #undef       HAVE_SUN_AUDIOIO_H */
+ 
+ /* #undef       HAVE_PTY_H */
+ /* #undef       HAVE_UTIL_H */
+ #define HAVE_LIBUTIL_H 1
+ /* #undef       HAVE_STROPTS_H */
+ 
+ #define HAVE_GL_GL_H 1
+ /* #undef       HAVE_OPENGL_GL_H */
+ 
+ /* #undef       NEED_SUNOS_H */
+ 
+ 
+ #define HAVE_UUID_H
+ /* system calls/library functions */
+ 
+ #define AT_EXIT atexit
+ 
+ #define HAVE_TZSET 1
+ 
+ #define HAVE_OPENPTY 1
+ /* #undef       HAVE_UNIX98_PTYS */
+ 
+ #define HAVE_SNPRINTF 1
+ /* #undef       HAVE___SNPRINTF */
+ 
+ #define HAVE_MMAP 1
+ 
+ /* #undef       HAVE_DYLD */
+ 
+ #define HAVE_LANGINFO_CODESET 1
+ 
+ #define HAVE_ALLOCA 1
+ /* #undef       HAVE_ALLOCA_H */
+ 
+ #define HAVE_UNSETENV 1
+ 
+ #define HAVE_NANOSLEEP 1
+ 
+ /* widths of primitive types */
+ 
+ #define SIZEOF_INT 4
+ #define SIZEOF_LONG 4
+ #define SIZEOF_LONG_LONG 8
+ #define SIZEOF_VOID_P 4
+ 
+ /* structures */
+ 
+ #define HAVE_TM_GMTOFF 1
+ #define HAVE_TIMEZONE 1
+ 
+ /* typedefs */
+ 
+ /* #undef       size_t */
+ /* #undef       socklen_t */
+ 
+ #define squeakInt64 long long
+ 
+ /* architecture */
+ 
+ #define OS_TYPE "unix"
+ 
+ #define VM_HOST "i386-freebsd8.2"
+ #define VM_HOST_CPU "i386"
+ /* #undef       VM_HOST_VENDOR */
+ #define VM_HOST_OS "freebsd8.2"
+ #define VM_BUILD_STRING "Unix built on "__DATE__ " "__TIME__" Compiler: "__VERSION__
+ 
+ /* #undef       WORDS_BIGENDIAN */
+ /* #undef       DOUBLE_WORD_ALIGNMENT */
+ 
+ /* damage containment */
+ 
+ /* #undef       DARWIN */
+ 
+ #ifdef NEED_SUNOS_H
+ # include "sunos.h"
+ #endif
+ 
+ /* other configured variables */
+ 
+ #define SQ_VERSION "3.9a-7024"
+ #define VM_VERSION "3.9-7"
+ #define VM_MODULE_PREFIX ""
+ /* #undef VM_DLSYM_PREFIX */
+ #define VM_X11DIR "/usr/X11R6/lib"
+ 
+ /* avoid dependencies on glibc2.3 */
+ 
+ /* #undef HAVE_FEATURES_H */
+ 
+ #if defined(HAVE_FEATURES_H)
+ # include "glibc.h"
+ #endif
+ 
+ #endif /* __sq_config_h */
+ 																																																																					
+ 																																																																				'!

Item was changed:
  ----- Method: Linux32x86Config>>defaultExternalPlugins (in category 'plugins') -----
  defaultExternalPlugins
+ " tty 2014.06.10  cut-n-paste from Cog/build.linux32x86/newspeak.cog.spur/build/plugins.ext"
+ 	^ #(B3DAcceleratorPlugin 
+ 		BochsIA32Plugin 
+ 		SqueakFFIPrims 
+ 		SqueakSSL 
+ 		LocalePlugin 
+ 		UnixOSProcessPlugin 
+ 		UUIDPlugin)!
- 	^ #(SqueakSSL	)!

Item was changed:
  ----- Method: Linux32x86Config>>defaultInternalPlugins (in category 'plugins') -----
  defaultInternalPlugins
+ " tty 2014.06.10  cut-n-paste from Cog/build.linux32x86/newspeak.cog.spur/build/plugins.int"
- " cut-n-paste from Cog/build.linux32x86/newspeak.cog.v3/build"
  	^ #(
  		AsynchFilePlugin 
  		BMPReadWriterPlugin 
  		B2DPlugin 
  		BitBltPlugin 
  		DSAPrims 
  		DropPlugin 
  		FileCopyPlugin 
  		FilePlugin 
  		FloatArrayPlugin 
  		FloatMathPlugin 
  		ZipPlugin 
  		JPEGReadWriter2Plugin 
  		JPEGReaderPlugin 
  		LargeIntegers 
  		Matrix2x3Plugin 
  		MiscPrimitivePlugin 
  		IA32ABI 
  		RePlugin 
  		SecurityPlugin 
  		SocketPlugin 
  		SurfacePlugin 
  		UUIDPlugin 
  		UnixOSProcessPlugin 
  		VMProfileLinuxSupportPlugin)!

Item was added:
+ ----- Method: Linux32x86Config>>extraVMSettings: (in category 'squeak compatibility') -----
+ extraVMSettings: maker
+ 	self generateConfigH.
+ 	
+ 	
+ 	"output a fake version.c file"
+ 	
+ 	self write:
+ 'int vm_serial= 1;
+ char *vm_date= "<HERE IS SUPPOSED TO BE THE DATE>";
+ char *cc_version= "<HERE IS SUPPOSED TO BE gcc VERSION>";
+ char *ux_version= "<FAKE FROZEN VERSION FOR DEBUGGING PURPOSES>";
+ '
+ 	toFile: 'version.c'.
+ !

Item was added:
+ ----- Method: Linux32x86Config>>generate (in category 'squeak compatibility') -----
+ generate
+ 	^ CMakeVMGeneratorForSqueak generate: self !

Item was added:
+ ----- Method: Linux32x86Config>>generateConfigH (in category 'squeak compatibility') -----
+ generateConfigH
+ 	"will fix that later"
+ 	self write: self configH toFile: 'config.h'!

Item was changed:
  ----- Method: Linux32x86NewspeakSistaSpurConfig>>excludeFromBuild (in category 'cmake') -----
  excludeFromBuild
  	"over-ride to exclude yourself from a build"
+ 	^true "tty 2014.06.10 not implemented on gnu side"!
- 	^false!

Item was changed:
  ----- Method: Linux32x86NewspeakSistaV3Config>>excludeFromBuild (in category 'cmake') -----
  excludeFromBuild
  	"over-ride to exclude yourself from a build"
+ 	^true "tty 2014.06.10 not implemented on gnu side"!
- 	^false!

Item was changed:
  Object subclass: #SqueakCMakeVMMakerAbstractBuilder
+ 	instanceVariableNames: 'buildTypeAndDirectoryInfo config'
- 	instanceVariableNames: 'buildTypeAndDirectoryInfo'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'CMakeVMMakerSqueak-Builder'!
  SqueakCMakeVMMakerAbstractBuilder class
  	instanceVariableNames: 'default'!
  
+ !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 6/10/2014 12:46' prior: 0!
- !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 6/8/2014 17:21' 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.
- I am a facade to the various Squeak[Platform][WordSize][VM][MemoryManager]Config classes that provide all the functionality.
- I also act as a repository of common information for the various configurations.
- Think of me as lipstick on a pig.
  
+ Usage: 
+ -------------------------Using CMakeVMMakerSqueak-------------------------
+ The easiest way to use this 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.
- Each one of my subclasses manages the CMakeVMMakerSqueak configurations -------->in a specific category<-----. 
- Win32Builder handles the Win32 Smalltalk Category, IOSBuilder handles the Smalltalk IOS category.
- Yes, its a limitation of the design, but so it goes.
  
+ 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 and CMake Configurations---------------
  
+ SqueakLinux32X86Builder configurationsCategory 
+ SqueakLinux32X86Builder buildDirectory 
+ SqueakLinux32X86Builder availableBuilds	 
+ SqueakLinux32X86Builder availableBuildTypesFor:(SqueakLinux32X86Builder availableBuilds at:1)
+ SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackSpurConfig
+ SqueakLinux32X86Builder availableBuildTypesFor: #Linux32x86SqueakStackV3Config
+ SqueakLinux32X86Builder sourceDirectoryFor:(SqueakLinux32X86Builder availableBuilds at:1)
  
+ -------------------------Generating CMake files and/or Source code-------------------------
  
+ SqueakLinux32X86Builder 
+ 	configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: #debug
+ 	generate   "generate only CMake config files"
  
+ SqueakLinux32X86Builder 
+ 	configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType: #debug
+ 	generateWithSources  "generate configurations and invoke VMMaker to generate source code"
  
+ -------------------------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 the build process
+ executable is placed in  /products folder.  (SqueakLinux32X86Builder ouputDirectory)
  
  !
  SqueakCMakeVMMakerAbstractBuilder class
  	instanceVariableNames: 'default'!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>availableBuildTypes (in category 'queries') -----
+ availableBuildTypes
+ 	default ifNil:[default:= self new].
+ 	^default availableBuildTypes.!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>generate (in category 'building') -----
+ generate
+ 	default ifNil:[default:= self new].
+ 	^default  generate!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>generateWithSource (in category 'building') -----
+ generateWithSource
+ 	default ifNil:[default:= self new].
+ 	^default  generateWithSource!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>availableBuildTypes (in category 'queries') -----
+ availableBuildTypes
+ 	^self buildTypeAndDirectoryInfo keys asSortedCollection
+ !

Item was changed:
  ----- Method: SqueakCMakeVMMakerAbstractBuilder>>configureABuildFor:withBuildType: (in category 'building') -----
  configureABuildFor: configSymbol withBuildType: typeSymbol
+ 	| i |
- 	|config i |
  	"Do some sanity checks, then set the internal state of a Configuration for a particular build type. "
  	[
  	((Smalltalk at: configSymbol)  category) =  (self configurationsCategory)  "verify the class is handled by this concrete builder"
  		ifTrue:[	
  				config := (Smalltalk at: configSymbol) new.                              "verify this config can handle this build type."
  				config excludeFromBuild                                                         "has a developer excluded this build manually?"
  					ifTrue:[^self userErrorConfigMarkedAsExcludeFromBuild: configSymbol].
  				i:=config availableBuilds indexOf:typeSymbol                                    
  						ifAbsent:[^self userErrorInvalidBuildType: typeSymbol "this config does not support this build type"
  										forConfiguration: configSymbol 
  										hasTypes: config availableBuilds].
  				config configureForBuildType: typeSymbol.                             "config configure yourself"
+ 				^self]
- 				^config]
  		ifFalse:[^self userErrorInvalidTarget: configSymbol]
  	] ifError:[^'error configureABuildFor: ''', configSymbol].
  
  	^nil.
  	
  
  	!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>generate (in category 'building') -----
+ generate
+ 	(config isKindOf: CPlatformConfig)
+ 		ifTrue:[config generate]
+ 		!

Item was added:
+ ----- Method: SqueakCMakeVMMakerAbstractBuilder>>generateWithSource (in category 'building') -----
+ generateWithSource
+ 	(config isKindOf: CPlatformConfig)
+ 		ifTrue:[config generateWithSource]
+ 		!



More information about the Vm-dev mailing list