[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