"{ Package: 'stx:libtool2' }"
"{ NameSpace: Tools }"
Object subclass:#ProjectBuilder
instanceVariableNames:'package projectDefinitionClass sourceCodeManager buildDirectory
myWorkingDirectory mySTXTopDirectory myTopDirectory'
classVariableNames:'PreviousBuildDirectory'
poolDictionaries:''
category:'System-Support-Projects'
!
!ProjectBuilder class methodsFor:'accessing'!
previousBuildDirectory
^ PreviousBuildDirectory
!
previousBuildDirectory:something
PreviousBuildDirectory := something.
! !
!ProjectBuilder class methodsFor:'examples'!
!
methodsFor:'examples'
! !
!ProjectBuilder methodsFor:'accessing'!
ileBrowserClass openOnDirectory:builder packageBuildDirectory.
!
buildDirectory:something
buildDirectory := something.
!
kageBuildDirectory.
!
he directoray, where the deployable binary is created (xxxSetup.exe)"
^ buildDirectory / (package asPackageId module) / (package asPackageId directory)
!
'building'
! !
!ProjectBuilder methodsFor:'building'!
"/ intermediate - this will move into a commonly used utility class
"/ (where all the project code support will be collected).
|module directory|
projectDefinitionClass := ProjectDefinition definitionClassForPackage:package.
projectDefinitionClass isNil ifTrue:[
self error:('Missing ProjectDefinition class for "',package asString,'"')
].
"/ ensure that everything is loaded...
projectDefinitionClass loadAsAutoloaded:false.
projectDefinitionClass loadExtensions.
projectDefinitionClass loadAllClassesAsAutoloaded:false.
module := package module.
directory := package directory.
buildDirectory isNil ifTrue:[
buildDirectory := PreviousBuildDirectory ifNil:[ UserPreferences current buildDirectory ].
buildDirectory isNil ifTrue:[
buildDirectory := Filename tempDirectory construct:'stx_build'.
].
].
buildDirectory := buildDirectory asFilename.
"/ self validateBuildDirectoryIsPresent.
PreviousBuildDirectory := buildDirectory.
"/ UserPreferences current localBuild:true
UserPreferences current localBuild ifFalse:[
SourceCodeManager notNil ifTrue:[
sourceCodeManager := SourceCodeManagerUtilities sourceCodeManagerFor:projectDefinitionClass.
]
].
sourceCodeManager := nil.
myTopDirectory :=
Smalltalk packagePath
detect:[:aPath |
(aPath asFilename / 'stx' / 'include') exists
and: [ (aPath asFilename / 'stx' / 'rules') exists ]]
ifNone:nil.
myTopDirectory isNil ifTrue:[
self error:('Cannot figure out my top directory (where stx/include and stx/rules are)')
].
myTopDirectory := myTopDirectory asFilename.
mySTXTopDirectory := myTopDirectory / 'stx'.
self setupBuildDirectory.
self activityNotification:'Generating stc directory...'.
self copySTCDirectoryForBuild.
self activityNotification:'Generating source files...'.
self generateSourceFiles.
self activityNotification:'Generating dlls for linkage...'.
self copyDLLsForLinkage.
self activityNotification:'Generating support files for linkage...'.
self copySupportFilesForLinkage.
self copyStartupFilesFromSmalltalk.
self activityNotification:'Executing make...'.
self makeWithOutputTo:stdOut errorTo:stdErr.
!
buildWithOutputTo:stdOut errorTo:stdErr
"/ intermediate - this will move into a commonly used utility class
"/ (where all the project code support will be collected).
|module directory|
projectDefinitionClass := ProjectDefinition definitionClassForPackage:package.
projectDefinitionClass isNil ifTrue:[
self error:('Missing ProjectDefinition class for "',package asString,'"')
].
"/ ensure that everything is loaded...
projectDefinitionClass loadAsAutoloaded:false.
projectDefinitionClass loadExtensions.
projectDefinitionClass loadAllClassesAsAutoloaded:false.
module := package module.
directory := package directory.
buildDirectory isNil ifTrue:[
buildDirectory := PreviousBuildDirectory ifNil:[ UserPreferences current buildDirectory ].
buildDirectory isNil ifTrue:[
buildDirectory := Filename tempDirectory construct:'stx_build'.
].
].
buildDirectory := buildDirectory asFilename.
"/ self validateBuildDirectoryIsPresent.
PreviousBuildDirectory := buildDirectory.
"/ UserPreferences current localBuild:true
UserPreferences current localBuild ifFalse:[
SourceCodeManager notNil ifTrue:[
sourceCodeManager := SourceCodeManagerUtilities sourceCodeManagerFor:projectDefinitionClass.
]
].
sourceCodeManager := nil.
myTopDirectory :=
Smalltalk packagePath
detect:[:aPath |
(aPath asFilename / 'stx' / 'include') exists
and: [ (aPath asFilename / 'stx' / 'rules') exists ]]
ifNone:nil.
myTopDirectory isNil ifTrue:[
self error:('Cannot figure out my top directory (where stx/include and stx/rules are)')
].
myTopDirectory := myTopDirectory asFilename.
mySTXTopDirectory := myTopDirectory / 'stx'.
self setupBuildDirectory.
self activityNotification:'Generating stc directory...'.
self copySTCDirectoryForBuild.
self activityNotification:'Generating source files...'.
self generateSourceFiles.
self activityNotification:'Generating dlls for linkage...'.
self copyDLLsForLinkage.
self activityNotification:'Generating support files for linkage...'.
self copySupportFilesForLinkage.
self copyStartupFilesFromSmalltalk.
self activityNotification:'Executing make...'.
self makeWithOutputTo:stdOut errorTo:stdErr.
!
lRelativePath).
]
].
!
!
!
!
!
!
!
!
!
!
!
!
!
! !
!ProjectBuilder class methodsFor:'documentation'!
version_CVS
^ '$Header$'
! !