Dmitry Golubovsky uploaded a new version of CMakeVMMaker to project VM Maker: http://source.squeak.org/VMMaker/CMakeVMMaker-golubovsky.142.mcz
==================== Summary ====================
Name: CMakeVMMaker-golubovsky.142 Author: golubovsky Time: 31 December 2011, 10:16:11 pm UUID: a76ea11e-3839-4c69-a3d1-5947855b06b6 Ancestors: CMakeVMMaker-golubovsky.141
Copy to source.squeak.org: will now host here.
=============== Diff against CMakeVMMaker-IgorStasenko.136 ===============
Item was changed: + SystemOrganization addCategory: #'CMakeVMMaker-Android'! SystemOrganization addCategory: #CMakeVMMaker! SystemOrganization addCategory: #'CMakeVMMaker-Unix'! SystemOrganization addCategory: #'CMakeVMMaker-Windows'! SystemOrganization addCategory: #'CMakeVMMaker-MacOS'! SystemOrganization addCategory: #'CMakeVMMaker-IOS'! SystemOrganization addCategory: #'CMakeVMMaker-FreeBSD'!
Item was added: + CMakeVMGenerator subclass: #CMakeAndroidGenerator + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'CMakeVMMaker-Android'! + + !CMakeAndroidGenerator commentStamp: 'golubovsky 7/27/2011 22:49' prior: 0! + This class inherits from CMakeGenerator and provides the same generation facilities as its parent, but output is more adjusted to the Android NDK requirements.!
Item was added: + ----- Method: CMakeAndroidGenerator>>addDefinitions: (in category 'gmake commands') ----- + addDefinitions: aString + output + nextPutAll: ('COG_CFLAGS += ', aString); + cr + !
Item was added: + ----- Method: CMakeAndroidGenerator>>addSubdirectory: (in category 'gmake commands') ----- + addSubdirectory: aDir + + ^ self include: ('$(buildDir)/', aDir, '/', self outputFileName). + !
Item was added: + ----- Method: CMakeAndroidGenerator>>append:with: (in category 'gmake commands') ----- + append: variableName with: aValueString + + output + nextPutAll: (variableName, ' += ', aValueString); + cr + !
Item was added: + ----- Method: CMakeAndroidGenerator>>generate (in category 'code generation') ----- + generate + + "override this method to produce gmake syntax" + + output := String new writeStream. + + self printHeader. + + config setupDirectories: self. + + config preferredIncludes + do: [ :each | self includeDirectories: each ]. + self includeDirectories: self includeDirs. + config standardIncludes + do: [:each | self includeDirectories: each ]. + + self addDefinitions: config compilerFlags. + + config extraVMSettings: self. + + self append: #LOCAL_SRC_FILES with: self sources. + + self processInternalPlugins. + config setExtraTargetProperties: self. + + self saveFile. + !
Item was added: + ----- Method: CMakeAndroidGenerator>>generatePlugin:internal:extraRules: (in category 'plugins') ----- + generatePlugin: aPlugin internal: aBoolean extraRules: aBlock + " this method called back from plugin" + ^ CMakeAndroidPluginGenerator new + generate: aPlugin for: self internal: aBoolean extraRules: aBlock!
Item was added: + ----- Method: CMakeAndroidGenerator>>include: (in category 'gmake commands') ----- + include: aFileName + output + nextPutAll: ('include ', aFileName); + cr + !
Item was added: + ----- Method: CMakeAndroidGenerator>>includeDirectories: (in category 'gmake commands') ----- + includeDirectories: aString + output + nextPutAll: ('COG_INCLUDE_DIRS += ', aString); + cr + !
Item was added: + ----- Method: CMakeAndroidGenerator>>includeDirs (in category 'sources management') ----- + includeDirs + + ^ '-I$(crossDir)/vm -I$(srcVMDir) -I$(targetPlatform)/vm -I$(buildDir)'.!
Item was added: + ----- Method: CMakeAndroidGenerator>>outputFileName (in category 'accessing') ----- + outputFileName + "override this to set the file name to create" + ^ 'cogsources.mk'!
Item was added: + ----- Method: CMakeAndroidGenerator>>printHeader (in category 'submakefile creation') ----- + printHeader + + self puts: '# This is automatically generated file using ', self configurationName, ' on ', + Date current asString, ' ' , Time current asString. + !
Item was added: + ----- Method: CMakeAndroidGenerator>>processInternalPlugins (in category 'plugins') ----- + processInternalPlugins + + | libs | + libs := OrderedCollection new. + + config internalPlugins collect: [:each | | plugin gen | + plugin := Smalltalk at: each. + gen := plugin generateFor: self internal: true. + gen doNotGenerate ifFalse: [ + libs add: plugin moduleName. + self addSubdirectory: plugin moduleName. + ]. + ]. + + self generateExportsH: libs. + !
Item was added: + ----- Method: CMakeAndroidGenerator>>set:to: (in category 'gmake commands') ----- + set: variableName to: aValueString + + output + nextPutAll: (variableName, ' := ', aValueString); + cr + !
Item was added: + ----- Method: CMakeAndroidGenerator>>sources (in category 'accessing') ----- + sources + + self set: #coreSources to: + (self append: '$(srcVMDir)/' toAll: config coreSources). + + self set: #platformVMSources to: + (self append: '$(targetPlatform)/vm/' toAll: config platformSources). + + + self set: #crossVMSources to: + (self append: '$(crossDir)/vm/' toAll: config crossSources). + + self set: #extraSources to: config extraSources. + + ^ '$(coreSources) $(crossVMSources) $(platformVMSources) $(extraSources)'!
Item was added: + CMakePluginGenerator subclass: #CMakeAndroidPluginGenerator + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'CMakeVMMaker-Android'!
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>addCrossSources: (in category 'sources management') ----- + addCrossSources: sources + + ^ self addSources: sources prefixed: '$(pluginCross)/' + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>addDefinitions: (in category 'gmake commands') ----- + addDefinitions: aString + output + nextPutAll: ('COG_CFLAGS += ', aString); + cr + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>addSources:prefixed: (in category 'sources management') ----- + addSources: aFileNames prefixed: aPrefix + + | names | + names := aFileNames inject: '' into: [:res :each | res , aPrefix, each, ' ' ]. + self append: #LOCAL_SRC_FILES with: names. + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>addSubdirectory: (in category 'gmake commands') ----- + addSubdirectory: aDir + + ^ self include: ('$(buildDir)/', aDir, '/', self outputFileName). + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>append:with: (in category 'gmake commands') ----- + append: variableName with: aValueString + + output + nextPutAll: (variableName, ' += ', aValueString); + cr + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>generate (in category 'gmake commands') ----- + generate + + | name | + output := String new writeStream. + + name := plugin moduleName. + self printHeader. + + self + set: #pluginName to: name; + set: #pluginSrc to: '$(srcPluginsDir)/', name; + set: #pluginCross to: '$(crossDir)/plugins/', name; + set: #pluginPlatform to: '$(targetPlatform)/plugins/', name. + + self addDefinitions: '-DSQUEAK_BUILTIN_PLUGIN'. + + self addSources: { name , '.c' } prefixed: '$(pluginSrc)/'. + + self includeDirectories: '-I$(pluginSrc) -I$(pluginCross) -I$(targetPlatform)/plugins/$(pluginName)'. + + self addDefinitions: vmGen config compilerFlags. + + " perform config's configureXYZ: message to apply per-plugin custom rules, if any " + + vmGen config configurePlugin: plugin with: self. + + extraRules ifNotNil: [ extraRules value: self ]. + + vmGen config extraPluginSettings: self. + + self saveFile.!
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>generatePlugin:internal:extraRules: (in category 'plugins') ----- + generatePlugin: aPlugin internal: aBoolean extraRules: aBlock + doNotGenerate := false. + internal := aBoolean. + plugin := aPlugin. + vmGen := CMakeAndroidGenerator. + extraRules := aBlock. + + ^ self generate!
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>include: (in category 'gmake commands') ----- + include: aFileName + output + nextPutAll: ('include ', aFileName); + cr + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>includeDirectories: (in category 'gmake commands') ----- + includeDirectories: aString + output + nextPutAll: ('COG_INCLUDE_DIRS += ', aString); + cr + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>includeDirs (in category 'sources management') ----- + includeDirs + + ^ '-I$(crossDir)/vm -I$(srcVMDir) -I$(targetPlatform)/vm -I$(buildDir)'.!
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>outputFileName (in category 'accessing') ----- + outputFileName + "override this to set the file name to create" + ^ 'cogsources.mk'!
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>printHeader (in category 'submakefile creation') ----- + printHeader + + self puts: '# This is automatically generated file using ', self configurationName, ' on ', + Date current asString, ' ' , Time current asString. + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>processInternalPlugins (in category 'plugins') ----- + processInternalPlugins + + | libs | + libs := OrderedCollection new. + + config internalPlugins collect: [:each | | plugin gen | + plugin := Smalltalk at: each. + gen := plugin generateFor: self internal: true. + gen doNotGenerate ifFalse: [ + libs add: plugin moduleName. + self addSubdirectory: plugin moduleName. + ]. + ]. + + self generateExportsH: libs. + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>set:to: (in category 'gmake commands') ----- + set: variableName to: aValueString + + output + nextPutAll: (variableName, ' := ', aValueString); + cr + !
Item was added: + ----- Method: CMakeAndroidPluginGenerator>>sources (in category 'accessing') ----- + sources + + self set: #coreSources to: + (self append: '$(srcVMDir)/' toAll: config coreSources). + + self set: #platformVMSources to: + (self append: '$(targetPlatform)/vm/' toAll: config platformSources). + + + self set: #crossVMSources to: + (self append: '$(crossDir)/vm/' toAll: config crossSources). + + self set: #extraSources to: config extraSources. + + ^ '$(coreSources) $(crossVMSources) $(platformVMSources) $(extraSources)'!
Item was added: + ----- Method: CMakeGenScripts class>>generateCogMacOS (in category 'as yet unclassified') ----- + generateCogMacOS + " generate sources for Stack Interpreter of Mac OS" + | top | + top := FileDirectory default containingDirectory. + + VMMaker + generate: CoInterpreter + to: (top / 'src') fullName + platformDir: ( top / 'platforms') fullName + excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin + FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin). + + CogMacOSConfig generate. + + !
Item was added: + ----- Method: CMakeGenScripts class>>generateCogSources (in category 'sources generation') ----- + generateCogSources + " self generateCogSources " + + " generate sources for CoInterpreter" + + | top | + + CogRTLOpcodes initialize. + CogIA32Compiler initialize. + + top := FileDirectory default containingDirectory. + + VMMaker + generate: CoInterpreter + and: StackToRegisterMappingCogit + to: (top / 'src') fullName + platformDir: ( top / 'platforms') fullName + excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin + FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin NewsqueakIA32ABIPlugin + NewsqueakIA32ABIPluginAttic). + !
Item was added: + ----- Method: CMakeGenScripts class>>generateCogSources: (in category 'sources generation') ----- + generateCogSources: config + " self generateCogSources " + + " generate sources for CoInterpreter" + + | top src | + + CogRTLOpcodes initialize. + CogIA32Compiler initialize. + + top := config topDir. + src := config srcDir assureExistence fullName. + + VMMaker + generate: CoInterpreter + and: StackToRegisterMappingCogit + to: src + platformDir: ( top / 'platforms') fullName + excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin + FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin NewsqueakIA32ABIPlugin + NewsqueakIA32ABIPluginAttic). + !
Item was added: + ----- Method: CMakeGenScripts class>>generateCogSourcesEmm40 (in category 'sources generation') ----- + generateCogSourcesEmm40 + " self generateCogSourcesEmm40 " + + + " generate sources for CoInterpreter" + + | top | + + CogRTLOpcodes initialize. + CogIA32Compiler initialize. + + top := FileDirectory default containingDirectory. + + VMMaker + generate: CoInterpreter + and: StackToRegisterMappingCogit + to: (top / 'src') fullName + platformDir: ( top / 'platforms') fullName + excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin + FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin NewsqueakIA32ABIPlugin + NewsqueakIA32ABIPluginAttic). + !
Item was added: + ----- Method: CMakeGenScripts class>>generateStackMacOS (in category 'as yet unclassified') ----- + generateStackMacOS + " generate sources for Stack Interpreter of Mac OS" + self generateStackSources. + + StackMacOSConfig generate. + + !
Item was added: + ----- Method: CMakeGenScripts class>>generateStackSources (in category 'sources generation') ----- + generateStackSources + " generate sources for Stack Interpreter of Mac OS" + | top | + top := FileDirectory default containingDirectory. + + VMMaker + generate: StackInterpreter + to: (top / 'src') fullName + platformDir: ( top / 'platforms') fullName + excluding: #(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin + FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin). + + + + !
Item was added: + ----- Method: CMakeVMGenerator>>setupMacros: (in category 'as yet unclassified') ----- + setupMacros: gen + self config cMakeMacros + ifNotNil: [ :macros | gen puts: macros ]!
Item was added: + ----- Method: CPlatformConfig>>cMakeMacros (in category 'accessing') ----- + cMakeMacros + ^nil !
Item was added: + ----- Method: CPlatformConfig>>generateStackSources (in category 'source generation') ----- + generateStackSources + " generate sources for Stack Interpreter" + + StackInterpreter initialize. + + VMMaker + generate: StackInterpreter + to: self srcDir fullName + platformDir: self platformsDir fullName + excluding: #(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin + FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin).!
Item was added: + ----- Method: CogMacOSConfig>>generateSourceFiles (in category 'source files') ----- + generateSourceFiles + + ^ CMakeGenScripts generateCogSources: self!
Item was added: + ----- Method: MacOSConfig>>cMakeMacros (in category 'accessing') ----- + cMakeMacros + ^'macro(add_framework appname fwname) + find_library(FRAMEWORK_${fwname} + NAMES ${fwname} + PATHS ${CMAKE_OSX_SYSROOT}/System/Library + PATH_SUFFIXES Frameworks + NO_DEFAULT_PATH) + if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND) + message(ERROR ": Framework ${fwname} not found") + else() + include_directories(SYSTEM /System/Library/Frameworks/${fwname}.framework/Headers) + target_link_libraries(${appname} ${FRAMEWORK_${fwname}}) + endif() + endmacro(add_framework)' !
Item was added: + CPlatformConfig subclass: #StackEvtAndroidConfig + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'CMakeVMMaker-Android'! + + !StackEvtAndroidConfig commentStamp: 'golubovsky 7/24/2011 22:47' prior: 0! + A class to configure the Event-driven Stack Cog for Android. This configuration does not lead to building an executable; rather it prepares the source tree to be plugged into the jni subdirectory of an Android project.!
Item was added: + ----- Method: StackEvtAndroidConfig>>compilerFlags (in category 'source generation') ----- + compilerFlags + "Compiler flags for Android. Leave empty for now" + ^ ' -DDEBUG=22 '!
Item was added: + ----- Method: StackEvtAndroidConfig>>configH (in category 'source files') ----- + configH + " right now its borrowed directly from unix, but likely will change" + ^ ' + #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 */ + /* #undef HAVE_LIBXEXT */ + #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_SYS_TIME_H 1 + #define TIME_WITH_SYS_TIME 1 + + /* #undef HAVE_SYS_FILIO_H */ + + /* #undef HAVE_SYS_AUDIOIO_H */ + /* #undef HAVE_SUN_AUDIOIO_H */ + + #define HAVE_PTY_H 1 + /* #undef HAVE_UTIL_H */ + /* #undef HAVE_LIBUTIL_H */ + #define HAVE_STROPTS_H 1 + + #define HAVE_GL_GL_H 1 + /* #undef HAVE_OPENGL_GL_H */ + + /* #undef NEED_SUNOS_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 + #define HAVE_ALLOCA_H 1 + + #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 "i686-pc-linux-gnu" + #define VM_HOST_CPU "i686" + /* #undef VM_HOST_VENDOR */ + #define VM_HOST_OS "linux-gnu" + #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 "" + + /* avoid dependencies on glibc2.3 */ + + #define HAVE_FEATURES_H 1 + + #if defined(HAVE_FEATURES_H) + # include "glibc.h" + #endif + + + /* used by UUID plugin: */ + + #define HAVE_UUID_H 1 + + #endif /* __sq_config_h */ + + '!
Item was added: + ----- Method: StackEvtAndroidConfig>>configureFileCopyPlugin: (in category 'plugin extra rules') ----- + configureFileCopyPlugin: maker + "extra rules for DropPlugin" + + maker addPlatformSources: #( 'sqAndroidFileCopyPlugin.c') + !
Item was added: + ----- Method: StackEvtAndroidConfig>>configureFilePlugin: (in category 'plugin extra rules') ----- + configureFilePlugin: maker + "extra rules for FilePlugin" + + super configureFilePlugin: maker. + + maker addPlatformSources: #( 'sqAndroidFile.c')!
Item was added: + ----- Method: StackEvtAndroidConfig>>configureFloatMathPlugin: (in category 'plugin extra rules') ----- + configureFloatMathPlugin: maker + "extra rules for FloatMathPlugin" + + maker addCrossSources: #( + 'acos.c' 'acosh.c' 'asin.c' 'asinh.c' 'atan.c' 'atan2.c' 'atanh.c' + 'copysign.c' 'cos.c' 'cosh.c' 'exp.c' 'expm1.c' 'finite.c' 'fmod.c' + 'hypot.c' 'isnan.c' 'k_cos.c' 'k_rem_pio2.c' 'k_sin.c' 'k_tan.c' 'ldexp.c' + 'log.c' 'log10.c' 'log1p.c' 'modf.c' 'pow.c' 'rem_pio2.c' 'rint.c' + 'scalb.c' 'scalbn.c' 'sin.c' 'sinh.c' 'sqrt.c' 'tan.c' 'tanh.c' ). + + + "according to http://www.netlib.org/fdlibm/readme + it should be compiled with no optimizations" + maker addDefinitions: '-O0'. + + " compile with -D__LITTLE_ENDIAN + This macro is set automatically in fdlibm.h when compiled ith -m32 but + not when compiled with -m64 (Nicolas Cellier) + " + self isLittleEndian ifTrue: [ + maker addDefinitions: '-D__LITTLE_ENDIAN=1' ]. + + maker addDefinitions: '-DNO_ISNAN'. + + + !
Item was added: + ----- Method: StackEvtAndroidConfig>>configureJoystickTabletPlugin: (in category 'plugin extra rules') ----- + configureJoystickTabletPlugin: maker + "extra rules for JoystickTabletPlugin" + + super configureJoystickTabletPlugin: maker. + maker addPlatformSources: + #( 'sqAndroidJoystickTablet.c' ) + !
Item was added: + ----- Method: StackEvtAndroidConfig>>configureSecurityPlugin: (in category 'plugin extra rules') ----- + configureSecurityPlugin: maker + "extra rules for MIDIPlugin" + + super configureSecurityPlugin: maker. + + maker addPlatformSources: #( 'sqAndroidSecurity.c')!
Item was added: + ----- Method: StackEvtAndroidConfig>>configureSocketPlugin: (in category 'plugin extra rules') ----- + configureSocketPlugin: maker + "extra rules for SocketPlugin" + + maker addPlatformSources: #( 'sqAndroidSocket.c')!
Item was added: + ----- Method: StackEvtAndroidConfig>>coreSources (in category 'source files') ----- + coreSources + "files to include from src/vm dir" + + ^ #( + 'gcc3x-interp.c' + )!
Item was added: + ----- Method: StackEvtAndroidConfig>>crossSources (in category 'source files') ----- + crossSources + ^#( + 'sqHeapMap.c' + 'sqNamedPrims.c' + 'sqVirtualMachine.c' + )!
Item was added: + ----- Method: StackEvtAndroidConfig>>defaultExternalPlugins (in category 'plugins') ----- + defaultExternalPlugins + ^ #( + )!
Item was added: + ----- Method: StackEvtAndroidConfig>>defaultInternalPlugins (in category 'plugins') ----- + defaultInternalPlugins + " took from unixbuild/bld/plugins.int" + ^ #( + AndroidPlugin + BitBltSimulation "BitBltPlugin" + BalloonEnginePlugin "B2DPlugin" + BMPReadWriterPlugin + CroquetPlugin + DSAPlugin "DSAPrims" + FFTPlugin + FileCopyPlugin + FilePlugin + FloatArrayPlugin + FloatMathPlugin + JoystickTabletPlugin + JPEGReaderPlugin + LargeIntegersPlugin "LargeIntegers" + Matrix2x3Plugin + RePlugin + SecurityPlugin + JPEGReadWriter2Plugin + SocketPlugin + MiscPrimitivePlugin + DeflatePlugin "ZipPlugin" + )!
Item was added: + ----- Method: StackEvtAndroidConfig>>extraVMSettings: (in category 'source generation') ----- + extraVMSettings: maker + | versionC | + self generateConfigH. + + "add a generated version.c" + + versionC := 'version.c'. + + maker + puts: '$(buildDir)/',versionC, ':' ; + puts: ({Character tab}, '$(platformsDir)/android/config/verstamp ', '$(buildDir)/', versionC,' gcc'); + puts: {Character cr}; + puts: ('LOCAL_SRC_FILES += $(buildDir)/', versionC); + puts: {Character cr}. + . + !
Item was added: + ----- Method: StackEvtAndroidConfig>>fixLineEndsOf: (in category 'utils') ----- + fixLineEndsOf: string + ^ string copyReplaceAll: String cr with: String lf!
Item was added: + ----- Method: StackEvtAndroidConfig>>generate (in category 'source generation') ----- + generate + ^ CMakeAndroidGenerator generate: self + + !
Item was added: + ----- Method: StackEvtAndroidConfig>>generateConfigH (in category 'source files') ----- + generateConfigH + "will fix that later" + self write: self configH toFile: 'config.h'!
Item was added: + ----- Method: StackEvtAndroidConfig>>interpreterClass (in category 'source generation') ----- + interpreterClass + ^ StackEvtAndroidInterpreter!
Item was added: + ----- Method: StackEvtAndroidConfig>>mkFileList:baseDir: (in category 'utils') ----- + mkFileList: anArray baseDir: aDir + "answer the concatenated contents of the array interspersed with backslash-newline sequences" + ^ (anArray collect: [ :s | aDir, s]) inject: '' into: [ :s :n | s , #($), {Character cr}, n ].!
Item was added: + ----- Method: StackEvtAndroidConfig>>outputDir (in category 'directories') ----- + outputDir + + "the directory where built binaries will be stored - for now it is copied from CogFamilyUnixConfig" + ^ outputDir ifNil: [ outputDir := (self buildDir containingDirectory fullName , '/', self outputDirName) ] + !
Item was added: + ----- Method: StackEvtAndroidConfig>>platformName (in category 'source generation') ----- + platformName + ^ 'android'!
Item was added: + ----- Method: StackEvtAndroidConfig>>platformSources (in category 'source files') ----- + platformSources + "files added from platform/android/vm dir " + ^ #( + 'aio.c' + 'debug.c' + 'osExports.c' + 'sqAndroidCharConv.c' + 'sqAndroidExternalPrims.c' + 'sqAndroidEvtBeat.c' + 'sqAndroidEvtMain.c' + 'sqAndroidMemory.c' + 'sqAndroidVMProfile.c' + 'sqAndroidSemaphores.c' + 'sqAndroidSoundNull.c' + 'sqAndroidDisplay.c' + )!
Item was added: + ----- Method: StackEvtAndroidConfig>>prepareForGeneration (in category 'source generation') ----- + prepareForGeneration + + "force using LF on Macs" + CrLfFileStream defaultToLF. + + ^ self prepareForStackVMGeneration + !
Item was added: + ----- Method: StackEvtAndroidConfig>>setupDirectories: (in category 'directories') ----- + setupDirectories: gen + "same logic as the super has, but use gmake syntax instead of cmake" + | dirsInclude | + + " write the directories in separate include file" + dirsInclude := gen captureOutputDuring: [ + gen + set: #topDir to: ('$(ROOT)/', self topDir fullName); + set: #buildDir to: (self buildDir ifNil: ['$(topDir)/build'] ifNotNil: ['$(ROOT)/', self buildDir fullName] ); + set: #platformsDir to: ('$(ROOT)/', self platformsDir); + set: #srcDir to: ('$(ROOT)/', self srcDir); + set: #srcPluginsDir to: (pluginsDir ifNil: [ '$(srcDir)/plugins' ]); + set: #srcVMDir to: '$(srcDir)/vm'; + set: #platformName to: self platformName; + set: #targetPlatform to: '$(platformsDir)/$(platformName)'; + set: #crossDir to: '$(platformsDir)/Cross'; + set: #platformVMDir to: '$(targetPlatform)/vm'. + ]. + + self write: dirsInclude toFile: 'cogdirs.mk' + !
Item was added: + CogUnixConfig subclass: #StackEvtUnixConfig + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'CMakeVMMaker-Unix'! + + !StackEvtUnixConfig commentStamp: 'golubovsky 7/7/2011 22:38' prior: 0! + This is a concrete class which generates an event-driven StackVM for Unix. + + Usage: + StackEvtUnixConfig generateWithSources + + An event-driven Stack VM is an experiment to make VM return to the host process each time it asks for an event. + If there are events to process, the host resumes VM, otherwise VM does not get control until any event is available. + + Fore more information, check the class comments of all the superclasses. + !
Item was added: + ----- Method: StackEvtUnixConfig>>coreSources (in category 'as yet unclassified') ----- + coreSources + "files to include from src/vm dir" + + ^ #( + 'gcc3x-interp.c' + )!
Item was added: + ----- Method: StackEvtUnixConfig>>crossSources (in category 'as yet unclassified') ----- + crossSources + "answer the same set of source files except that sqTicker.c is dropped" + + ^ super crossSources select: [ :file | (file = 'sqTicker.c') not ]. + + !
Item was added: + ----- Method: StackEvtUnixConfig>>executableName (in category 'accessing') ----- + executableName + "the name of the VM executable" + ^ 'EventVM'.!
Item was added: + ----- Method: StackEvtUnixConfig>>interpreterClass (in category 'source generation') ----- + interpreterClass + ^ StackEvtInterpreter!
Item was added: + ----- Method: StackEvtUnixConfig>>platformSources (in category 'as yet unclassified') ----- + platformSources + "answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c, + sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c" + + ^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') + ifTrue: 'sqUnixEvtMain.c' + ifFalse: [(file = 'sqUnixHeartbeat.c') + ifTrue: 'sqUnixEvtBeat.c' + ifFalse: file] + ]. + + !
Item was added: + ----- Method: StackEvtUnixConfig>>prepareForGeneration (in category 'source generation') ----- + prepareForGeneration + + "force using LF on Macs" + CrLfFileStream defaultToLF. + + ^ self prepareForStackVMGeneration + !
Item was added: + StackEvtUnixConfig subclass: #StackEvtUnixDebugConfig + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'CMakeVMMaker-Unix'!
Item was added: + ----- Method: StackEvtUnixDebugConfig>>compilerFlags (in category 'compiler flags') ----- + compilerFlags + + ^ self commonCompilerFlags, ' ' ,self compilerFlagsDebug!
vm-dev@lists.squeakfoundation.org