diff -r 2fbaaa0e8e33 -r 706991dee298 ProjectBuilder.st --- a/ProjectBuilder.st Sat Oct 10 17:59:32 2009 +0200 +++ b/ProjectBuilder.st Sun Oct 11 01:09:42 2009 +0200 @@ -35,6 +35,46 @@ "/ intermediate - this will move into a commonly used utility class "/ (where all the project code support will be collected). + |makeOutput stdOut stdErr lock| + + lock := Semaphore forMutualExclusion. + makeOutput := TextStream on:(Text new:10000). + stdErr := ActorStream new + nextPutBlock:[:char | + lock critical:[ + makeOutput emphasis:{#backgroundColor->Color red. #color->Color white.}. + makeOutput nextPut:char. + makeOutput emphasis:nil. + ] + ]; + nextPutAllBlock:[:char | + lock critical:[ + makeOutput emphasis:{#backgroundColor->Color red. #color->Color white.}. + makeOutput nextPutAll:char. + makeOutput emphasis:nil. + ] + ]. + stdOut := ActorStream new + nextPutBlock:[:char | + lock critical:[ + makeOutput nextPut:char. + ] + ]; + nextPutAllBlock:[:char | + lock critical:[ + makeOutput nextPutAll:char. + ] + ]. + + self buildWithOutputTo:stdOut errorTo:stdErr. + + TextView openWith:makeOutput contents. +! + +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. @@ -87,17 +127,7 @@ self copySupportFilesForLinkage. self copyStartupFilesFromSmalltalk. - OperatingSystem - executeCommand:(ParserFlags makeCommand,' exe') - inputFrom:nil - outputTo:Transcript - errorTo:Transcript - inDirectory:(buildDirectory / module / directory) - onError:[:status| self error:'make failed']. - - "Created: / 09-08-2006 / 18:37:19 / fm" - "Modified: / 09-08-2006 / 19:55:50 / fm" - "Modified: / 22-09-2006 / 17:37:11 / cg" + self makeWithOutputTo:stdOut errorTo:stdErr. ! copyDLLsForLinkage @@ -442,6 +472,29 @@ "/ stx_libbasic2 preRequisitesForBuilding#(#'stx:libbasic') ! +makeWithOutputTo:stdOut errorTo:stdErr + |module directory| + + module := package module. + directory := package directory. + + OperatingSystem + executeCommand:(ParserFlags makeCommand,' exe') + inputFrom:nil + outputTo:stdOut + errorTo:stdErr + inDirectory:(buildDirectory / module / directory) + onError:[:status| self error:'make failed']. + + OperatingSystem + executeCommand:(ParserFlags makeCommand,' setup') + inputFrom:nil + outputTo:stdOut + errorTo:stdErr + inDirectory:(buildDirectory / module / directory) + onError:[:status| self error:'make failed']. +! + setupBuildDirectory buildDirectory exists ifFalse:[ buildDirectory recursiveMakeDirectory.