[Vm-dev] VM Maker: CMakeVMMaker-GuillermoPolito.207.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Jun 18 07:58:14 UTC 2013


Guillermo Polito uploaded a new version of CMakeVMMaker to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMaker-GuillermoPolito.207.mcz

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

Name: CMakeVMMaker-GuillermoPolito.207
Author: GuillermoPolito
Time: 17 June 2013, 6:36:31.366 pm
UUID: 83aadf49-80c0-4fa6-bb65-9fbefb18f36a
Ancestors: CMakeVMMaker-GuillermoPolito.206

moving to use filesystem

=============== Diff against CMakeVMMaker-IgorStasenko.205 ===============

Item was changed:
- SystemOrganization addCategory: #'CMakeVMMaker-Android'!
  SystemOrganization addCategory: #CMakeVMMaker!
+ SystemOrganization addCategory: #'CMakeVMMaker-Android'!
- SystemOrganization addCategory: #'CMakeVMMaker-Unix'!
- SystemOrganization addCategory: #'CMakeVMMaker-Windows'!
- SystemOrganization addCategory: #'CMakeVMMaker-MacOS'!
- SystemOrganization addCategory: #'CMakeVMMaker-IOS'!
  SystemOrganization addCategory: #'CMakeVMMaker-FreeBSD'!
+ SystemOrganization addCategory: #'CMakeVMMaker-IOS'!
  SystemOrganization addCategory: #'CMakeVMMaker-Libs'!
+ SystemOrganization addCategory: #'CMakeVMMaker-MacOS'!
+ SystemOrganization addCategory: #'CMakeVMMaker-Unix'!
+ SystemOrganization addCategory: #'CMakeVMMaker-Windows'!
- SystemOrganization addCategory: #'CMakeVMMaker-Chipmunk'!

Item was changed:
  ----- Method: CMThirdpartyLibrary>>generateFor: (in category 'generating cmake file') -----
  generateFor: aVMGenerator
  
  	| libDir stream contents |
  	
  	vmGen := aVMGenerator.
  	
  	gen := CMakeGenerator new
  		output: (String new writeStream).
  	
+ 	libDir := (aVMGenerator thirdpartyDir / self canonicalName) ensureDirectory.
- 	libDir := (aVMGenerator thirdpartyDir / self canonicalName) assureExistence.
  
  	stream := String new writeStream.
  	
  	self generate.
  
  	stream nextPutAll: (vmGen config fixLineEndsOf: gen output contents).
  
  	contents := stream contents. 
  	
+ 	(self isFile: (libDir asFileReference / gen outputFileName) fullName hasContents: contents) ifFalse: [
- 	(self isFile: (libDir fullNameFor: gen outputFileName)  hasContents: contents) ifFalse: [
  		"contents changed, update the file. Because fucking cmake will force rebuild everything if we change its modification date
  		without changing its contents"
  		(libDir forceNewFileNamed: gen outputFileName) nextPutAll: contents; close.
  		].
  	
  
  	vmGen addSubdirectory:  vmGen thirdpartyDirName , '/' , self canonicalName.
  	self defineGlobalTargets.
  	!

Item was changed:
  ----- Method: CMakeGenScripts class>>generateCocoaVM (in category 'sources generation') -----
  generateCocoaVM
  	| platformDirectoryName |
+ 	"B3DAcceleratorPlugin"
+ 	"Not using it right now"
+ 	platformDirectoryName := (FileSystem workingDirectory parent / 'platforms') fullName.
+ 	VMMaker default
+ 		platformRootDirectoryName: platformDirectoryName;
+ 		sourceDirectoryName: platformDirectoryName , '/iOS/vm/src';
+ 		internal:
+ 				#(#ADPCMCodecPlugin #B3DEnginePlugin #BalloonEnginePlugin #BitBltSimulation #BMPReadWriterPlugin #ClipboardExtendedPlugin #DeflatePlugin #DSAPlugin #FFIPlugin #FFTPlugin #FilePlugin #FloatArrayPlugin #GeniePlugin #HostWindowPlugin #JPEGReaderPlugin #JPEGReadWriter2Plugin #KlattSynthesizerPlugin #LargeIntegersPlugin #Matrix2x3Plugin #MacMenubarPlugin #MiscPrimitivePlugin #NewsqueakIA32ABIPlugin #ObjectiveCPlugin #RePlugin #SecurityPlugin #SocketPlugin #SoundCodecPlugin #SoundGenerationPlugin #SoundPlugin #StarSqueakPlugin #SurfacePlugin #UUIDPlugin #DropPlugin)
+ 			external: #(#UnixOSProcessPlugin);
- 
- "B3DAcceleratorPlugin" "Not using it right now"
- 
- 	platformDirectoryName := (FileDirectory default 
- 		containingDirectory 
- 			directoryNamed: 'platforms') 
- 				fullName.
- 	VMMaker default 
- 		platformRootDirectoryName:  platformDirectoryName; 
- 		sourceDirectoryName: platformDirectoryName, '/iOS/vm/src';
- 		internal: #(
- 			ADPCMCodecPlugin 
- 			B3DEnginePlugin 
- 			BalloonEnginePlugin
- 			BitBltSimulation 
- 			BMPReadWriterPlugin 
- 			ClipboardExtendedPlugin 
- 			DeflatePlugin 
- 			DSAPlugin 
- 			FFIPlugin 
- 			FFTPlugin 
- 			FilePlugin 
- 			FloatArrayPlugin 
- 			GeniePlugin 
- 			HostWindowPlugin 
- 			JPEGReaderPlugin 
- 			JPEGReadWriter2Plugin 
- 			KlattSynthesizerPlugin 
- 			LargeIntegersPlugin 
- 			Matrix2x3Plugin 
- 			MacMenubarPlugin 
- 			MiscPrimitivePlugin
- 			NewsqueakIA32ABIPlugin 
- 			ObjectiveCPlugin
- 			RePlugin 
- 			SecurityPlugin 
- 			SocketPlugin 
- 			SoundCodecPlugin 
- 			SoundGenerationPlugin 
- 			SoundPlugin 
- 			StarSqueakPlugin 
- 			SurfacePlugin 
- 			UUIDPlugin 
- 			DropPlugin)	
- 		external: #(
- 			UnixOSProcessPlugin);
  		generateMainVM;
+ 		generateExternalPlugins.	"Gnuifier"
+ 	(Gnuifier on: (platformDirectoryName , '/iOS/vm/src/vm') asFileReference pathName) gnuify!
- 		generateExternalPlugins.
- 
- 	"Gnuifier"
- 	(Gnuifier on:((FileDirectory on: platformDirectoryName, '/iOS/vm/src/vm') pathName)) gnuify.	
- !

Item was changed:
  ----- Method: CMakeGenScripts class>>generateCogMacOS (in category 'as yet unclassified') -----
  generateCogMacOS
  	" generate sources for Stack Interpreter of Mac OS"
+ 
  	| top |
+ 	top := FileSystem workingDirectory parent.
- 	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!
- 		platformDir: ( top / 'platforms') fullName
- 		excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin
- 					FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin).
- 						
- 	CogMacOSConfig generate.
- 
- 	!

Item was changed:
  ----- Method: CMakeGenScripts class>>generateCogSources (in category 'sources generation') -----
  generateCogSources
  	" self generateCogSources "
  
  	" generate sources for CoInterpreter"
  
  	| top |
- 	
  	CogRTLOpcodes initialize.
  	CogIA32Compiler initialize.
+ 	top := FileSystem workingDirectory parent.
- 	
- 	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)!
- 		platformDir: ( top / 'platforms') fullName
- 		excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin
- 					FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin NewsqueakIA32ABIPlugin
- 					 NewsqueakIA32ABIPluginAttic).
- !

Item was changed:
  ----- Method: CMakeGenScripts class>>generateCogSourcesEmm40 (in category 'sources generation') -----
  generateCogSourcesEmm40
  	" self generateCogSourcesEmm40 "
  
- 
  	" generate sources for CoInterpreter"
  
  	| top |
- 	
  	CogRTLOpcodes initialize.
  	CogIA32Compiler initialize.
+ 	top := FileSystem workingDirectory parent.
- 	
- 	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)!
- 		platformDir: ( top / 'platforms') fullName
- 		excluding:#(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin
- 					FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin 					ReentrantPPCBEFFIPlugin NewsqueakIA32ABIPlugin
- 					 NewsqueakIA32ABIPluginAttic).
- !

Item was changed:
  ----- Method: CMakeGenScripts class>>generateStackSources (in category 'sources generation') -----
  generateStackSources
  	" generate sources for Stack Interpreter of Mac OS"
+ 
  	| top |
+ 	top := FileSystem workingDirectory parent.
- 	top := FileDirectory default containingDirectory.
- 	
  	VMMaker
  		generate: StackInterpreter
  		to: (top / 'src') fullName
+ 		platformDir: (top / 'platforms') fullName
+ 		excluding:
+ 			#(#BrokenPlugin #IA32ABIPluginSimulator #SlangTestPlugin #TestOSAPlugin #FFIPlugin #ReentrantARMFFIPlugin #ReentrantFFIPlugin #ReentrantPPCBEFFIPlugin)!
- 		platformDir: ( top / 'platforms') fullName
- 		excluding: #(BrokenPlugin IA32ABIPluginSimulator SlangTestPlugin TestOSAPlugin
- 			FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin).
- 			
- 	
- 
- 	!

Item was changed:
  ----- Method: CMakePluginGenerator>>saveFile (in category 'as yet unclassified') -----
  saveFile
  	
+ 	| reference |
+ 	reference := ((vmGen config dirFrom: vmGen buildDir) / plugin moduleName) ensureDirectory; yourself.
+ 	(FileStream forceNewFileNamed: (reference / self outputFileName) fullName)
+ 		nextPutAll: (self config fixLineEndsOf: output contents);
+ 		close.!
- 	(((vmGen config dirFrom: vmGen buildDir) / plugin moduleName) assureExistence forceNewFileNamed: self outputFileName) 
- 		nextPutAll: (self config fixLineEndsOf: output contents); close.
- !

Item was changed:
  ----- Method: CMakeVMGenerator>>generateBuildScript (in category 'build script') -----
  generateBuildScript
  
+ 	(FileStream forceNewFileNamed: (self buildDir / 'build.sh') fullName) nextPutAll: (config fixLineEndsOf: config buildScript); close.
- 	(self buildDir forceNewFileNamed: 'build.sh') nextPutAll: (config fixLineEndsOf: config buildScript); close.
  	!

Item was changed:
  ----- Method: CMakeVMGenerator>>generateExportsH: (in category 'as yet unclassified') -----
  generateExportsH: libs
  	| content |
  	content := String streamContents: [:str |
  	
  		str nextPutAll: '/* This is automatically generated file using CVMMaker on ',
  			Date current asString, ' ' , Time current asString , ' */'; cr.
  		
  		str nextPutAll: 
  'extern sqExport vm_exports[];
  extern sqExport os_exports[];
  '.
  		libs do: [:each | 
  			str nextPutAll: 'extern sqExport ', each ,'_exports [];'; cr ].
  		
  		str cr; nextPutAll: 'sqExport *pluginExports[] = {
  	vm_exports,
  	os_exports,
  '.
  
  		libs do: [:each | 
  			str nextPutAll:  each ,'_exports,'; cr ].
  	
  		str nextPutAll: 'NULL
  };'
  
  	].
  
+ 	(FileStream forceNewFileNamed: (self buildDir /'sqNamedPrims.h') fullName) nextPutAll: (config fixLineEndsOf: content); close.
- 	(self buildDir forceNewFileNamed: 'sqNamedPrims.h') nextPutAll: (config fixLineEndsOf: content); close.
  	!

Item was changed:
  ----- Method: CMakeVMGenerator>>topDir (in category 'accessing') -----
  topDir
  	| dir |
+ 	dir := self config topDir ifNil: [ FileSystem workingDirectory parent ].
+ 	dir isString
+ 		ifTrue: [ ^dir asFileReference ].
- 	dir := self config topDir ifNil: [ FileDirectory default containingDirectory ].
- 	dir isString ifTrue: [^ FileDirectory on: ( FileDirectory fullPathForURI: dir) ].
  	^ dir!

Item was changed:
  ----- Method: CPlatformConfig>>buildDir (in category 'directories') -----
  buildDir
  	
+ 	^ buildDir ifNil: [ buildDir := (self topDir / self buildDirName) ensureDirectory; yourself ].
- 	^ buildDir ifNil: [ buildDir := (self topDir / self buildDirName) assureExistence ].
  !

Item was changed:
  ----- Method: CPlatformConfig>>dirFrom: (in category 'utils') -----
  dirFrom: aStringOrDir
+ 	^ aStringOrDir isString
+ 		ifTrue: [ aStringOrDir asFileReference ]
+ 		ifFalse: [ aStringOrDir ]!
- 	
- 	^ aStringOrDir isString ifTrue: [
- 		FileDirectory on: ( FileDirectory fullPathForURI: aStringOrDir)] 
- 	ifFalse: [ aStringOrDir ]!

Item was changed:
  ----- Method: CPlatformConfig>>setupDirectories: (in category 'directories') -----
  setupDirectories: gen
  	| dirsInclude |
  
  	" write the directories in separate include file"
  	dirsInclude := gen captureOutputDuring: [
  		gen
  			set: #topDir toString: (self topDir fullName); 
  			set: #buildDir toString: (self buildDir ifNil: ['${topDir}/build'] ifNotNil: [self buildDir fullName] );
  			set: #thirdpartyDir toString: '${buildDir}/thirdParty';
  			set: #platformsDir toString: self platformsDir;
  			set: #srcDir toString: self srcDir;
  			set: #srcPluginsDir toString: (pluginsDir ifNil: [ '${srcDir}/plugins' ]);
  			set: #srcVMDir toString: '${srcDir}/vm';
  			set: #platformName toString: self platformName;
  			set: #targetPlatform to: '${platformsDir}/${platformName}';
  			set: #crossDir toString: '${platformsDir}/Cross';
  			set: #platformVMDir toString: '${targetPlatform}/vm';
+ 			set: #outputDir toString: self outputDir fullName.
- 			set: #outputDir toString: self outputDir.
  	].
  
  	self write: dirsInclude toFile: 'directories.cmake'.
  	
  	gen include: 'directories.cmake'.
  !

Item was changed:
  ----- Method: CPlatformConfig>>topDir (in category 'directories') -----
  topDir
+ 	^ topDir ifNil: [ topDir := FileSystem workingDirectory parent ]!
- 	
- 	^ topDir ifNil: [ topDir := FileDirectory default containingDirectory ].
- !

Item was changed:
  ----- Method: CPlatformConfig>>topDir: (in category 'directories') -----
  topDir: pathString
+ 	topDir := pathString asFileReference.
+ 	topDir assureExistence!
- 
- 	topDir :=
- 		FileDirectory on: (FileDirectory fullPathForURI: pathString).
- 	topDir assureExistence.!

Item was changed:
  ----- Method: CPlatformConfig>>validateSourcesPresent (in category 'source generation') -----
  validateSourcesPresent
  	| sources |
+ 	sources := Smalltalk openSources: SmalltalkImage current sourcesName forImage: SmalltalkImage current imageName.
- 	sources := FileDirectory openSources: SmalltalkImage current sourcesName forImage: SmalltalkImage current imageName.
  	
  	((sources == nil or: [sources atEnd])
  			and: [ SmalltalkImage current checkSourcesFileAvailability])
  		ifTrue: [
  		self error: 'VM source code cannot be generated without .sources file'.
  	]		!

Item was changed:
  ----- Method: CPlatformConfig>>write:toFile: (in category 'directories') -----
  write: aContents toFile: aFileName
- 
  	"write a file to current output directory (buildDir).
  	use line end convention appropriate for config platform"
- 	
  
  	| bldDir |
- 	
  	bldDir := self buildDir.
+ 	bldDir isString
+ 		ifTrue: [ bldDir := bldDir asFileReference ].
+ 	bldDir ensureDirectory.
+ 	FileStream
+ 		forceNewFileNamed: (bldDir / aFileName) fullName
+ 		do: [ :stream | stream nextPutAll: (self fixLineEndsOf: aContents) ]!
- 	
-  	bldDir isString ifTrue: [ bldDir := FileDirectory on: (FileDirectory fullPathForURI: bldDir) ].
- 	bldDir assureExistence.
- 	
- 	bldDir forceNewFileNamed: aFileName 
- 		do: [:stream | stream nextPutAll: (self fixLineEndsOf: aContents) ].!

Item was changed:
  ----- Method: CocoaIOSConfig>>extraPluginSettings: (in category 'plugin extra rules') -----
  extraPluginSettings: maker	
  	maker set: 'CMAKE_OSX_ARCHITECTURES' to: 'i386'.
  	
  	maker 
  		setTargetProperty: 'COMPILE_FLAGS' 
  		to: '"-include \"', (self buildDir / self prefixHeaderFileName) fullName, '\""'.  
  
  	maker isExternal ifTrue: [
  		"copy result to results dir "
  		
+ 		maker set: 'LIBRARY_OUTPUT_PATH' toString: self outputDir fullName.
+ 		maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir fullName.
- 		maker set: 'LIBRARY_OUTPUT_PATH' toString: self outputDir.
- 		maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir.
  		maker puts: 'list(APPEND linkFlags "-undefined dynamic_lookup")' ].
  	
  	"maker addXCodeProperty: 'GCC_VERSION' value: '4.3'."
  	maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/' , self executableName , '_Prefix.pch'.
  	
  !

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig>>setExtraTargetProperties: (in category 'settings') -----
  setExtraTargetProperties: maker
  	| plist |
  
  	maker addFrameworks: self frameworks.
  
  	" generated and add Info.plist file "
  	plist := self plistFile.
  
+ 	(FileStream forceNewFileNamed: (maker buildDir / 'Info.plist') fullName) 
- 	(maker buildDir forceNewFileNamed: 'Info.plist') 
  		nextPutAll: plist; 
  		close.
  
  	maker 
  		addProperty: 'MACOSX_BUNDLE_INFO_PLIST' 
  		value: '${buildDir}/Info.plist'.  
  
+ 	(FileStream forceNewFileNamed: (maker buildDir / self prefixHeaderFileName) fullName )
- 	(maker buildDir forceNewFileNamed: self prefixHeaderFileName) 
  		nextPutAll: self precompiledHeaders;
  		close.
  	maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/', self prefixHeaderFileName.
  
  	maker 
  		addXCodeProperty: 'PER_ARCH_CFLAGS_i386' value: '-DLSB_FIRST -mfpmath=sse -finline-functions  -fno-cse-follow-jumps -fno-gcse -mtune=prescott -march=pentium-m -falign-functions=16'.
  		
  	"maker 
  		addXCodeProperty: 'GCC_VERSION' value: '4.3'."
  
  	maker 
  		cmd: 'set_target_properties' 
  		params: self executableName, ' PROPERTIES COMPILE_FLAGS "-include \"', (self buildDir / self prefixHeaderFileName) fullName, '\""'. 
  		
  "	maker set: 'CMAKE_C_COMPILER' to: '/usr/bin/gcc-4.2'.
  	maker set: 'CMAKE_CXX_COMPILER' to: '/usr/bin/g++-4.2'.		
  "
+ 	maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir fullName.
+ 	maker set: 'RUNTIME_OUTPUT_DIRECTORY' toString: self outputDir fullName.!
- 	maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir.
- 	maker set: 'RUNTIME_OUTPUT_DIRECTORY' toString: self outputDir.!

Item was changed:
  ----- Method: MacOSConfig>>outputDir (in category 'accessing') -----
  outputDir
  
  	"the directory where built binaries will be stored"
+ 	^ outputDir ifNil: [ outputDir := (self buildDir parent / self outputDirName) ]
- 	^ outputDir ifNil: [ outputDir := (self buildDir containingDirectory fullName , '/', self outputDirName) ]
  	!



More information about the Vm-dev mailing list