--- a/ProjectDefinition.st Thu Sep 14 16:49:12 2006 +0200
+++ b/ProjectDefinition.st Thu Sep 14 17:06:41 2006 +0200
@@ -1210,7 +1210,7 @@
!
generateFile:filename
- self fileNamesToGenerate
+ self basicFileNamesToGenerate
pairsDo:[:fn :action |
filename = fn ifTrue:[
^ self perform:action
@@ -1225,7 +1225,7 @@
self error:('File "%1" not appropriate (not generated) for this type of project.'
bindWith:filename)
- "Modified: / 14-09-2006 / 14:22:08 / cg"
+ "Modified: / 14-09-2006 / 16:16:45 / cg"
!
generate_abbrev_dot_stc
@@ -1842,13 +1842,13 @@
!ProjectDefinition class methodsFor:'mappings support'!
generateObjects_make_dot_spec
- |pivateClassesOf classes|
+ |pivateClassesOf sorter classes|
classes := self compiled_classes_common.
pivateClassesOf := IdentityDictionary new.
classes do:[:each | pivateClassesOf at:each put:(each allPrivateClasses)].
- classes topologicalSort:[:a :b |
+ sorter := [:a :b |
"/ a must come before b iff:
"/ b is a subclass of a
"/ b has a private class which is a subclass of a
@@ -1860,7 +1860,7 @@
mustComeBefore := (a isSharedPool and:[(b sharedPools includes: a name)]).
mustComeBefore := mustComeBefore or:[b isSubclassOf:a].
mustComeBefore ifFalse:[
- pivateClassesOfB := pivateClassesOf at:b.
+ pivateClassesOfB := pivateClassesOf at:b ifAbsent:[ #() ].
pivateClassesOfB do:[:eachClassInB |
mustComeBefore := mustComeBefore or:[eachClassInB isSubclassOf:a]
].
@@ -1868,6 +1868,8 @@
mustComeBefore
].
+ classes topologicalSort:sorter.
+
^ String streamContents:[:s |
|putLineForClass sysDepOrNil|
@@ -1886,6 +1888,7 @@
define := OperatingSystem platformDefineForPlatformName:platformID.
prefix := define copyFrom:('-D' size + 1).
depClasses := self compiled_classesForArchitecture:platformID.
+ depClasses topologicalSort:sorter.
depClasses notEmpty ifTrue:[
sysDepOrNil := prefix,'_OBJS'.
s nextPutLine:sysDepOrNil,'= \'.
@@ -1918,7 +1921,7 @@
"
"Created: / 09-08-2006 / 11:24:39 / fm"
- "Modified: / 14-09-2006 / 14:20:21 / cg"
+ "Modified: / 14-09-2006 / 16:21:46 / cg"
! !
!ProjectDefinition class methodsFor:'private'!
@@ -2115,31 +2118,50 @@
!
searchForProjectsWhichProvideHeaderFiles
- |myPackageID requiredPackages|
-
- requiredPackages := Set new.
- myPackageID := self package.
-
- self compiled_classesDo:[:includedClass |
- includedClass allSuperclassesDo:[:eachSuperClass |
- ((eachSuperClass package ~= myPackageID)
- and:[ true "(self moduleOfClass: eachSuperClass) ~= 'stx'" ])
- ifTrue:[
- eachSuperClass package == Project noProjectID ifFalse:[
- requiredPackages add:(eachSuperClass package).
- ]
+ |addPackage myPackageID requiredPackages|
+
+ myPackageID := self package.
+ requiredPackages := Set new.
+
+ addPackage :=
+ [:package |
+ (package ~= myPackageID) ifTrue:[
+ true "(package startsWith:'stx:') not" ifTrue:[
+ package ~= Project noProjectID ifTrue:[
+ requiredPackages add:package.
]
+ ]
]
- ].
- ^ requiredPackages
+ ].
+
+ self compiled_classesDo:[:cls |
+ cls allSuperclassesDo:[:eachSuperClass |
+ addPackage value:(eachSuperClass package)
+ ].
+
+ cls privateClassesDo:[:eachPrivateClass |
+ eachPrivateClass allSuperclassesDo:[:eachSuperClass |
+ eachSuperClass isPrivate ifFalse:[
+ addPackage value:(eachSuperClass package)
+ ].
+ ]
+ ].
+ ].
+
+ self extensionMethodNames pairWiseDo:[:className :selector |
+ |cls|
+ ((cls := Smalltalk classNamed:className) notNil and:[cls isLoaded]) ifTrue:[
+ addPackage value:(cls package)
+ ]
+ ].
+ ^ requiredPackages
"
- self searchForProjectsWhichProvideHeaderFiles
- DapasX_Datenbasis searchForProjectsWhichProvideHeaderFiles
+ stx_libtool searchForProjectsWhichProvideHeaderFiles
"
"Created: / 09-08-2006 / 16:26:37 / fm"
- "Modified: / 14-09-2006 / 15:29:52 / cg"
+ "Modified: / 14-09-2006 / 17:06:34 / cg"
!
searchForSiblingProjects
@@ -2524,7 +2546,7 @@
!ProjectDefinition class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.57 2006-09-14 14:04:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.58 2006-09-14 15:06:41 cg Exp $'
! !
ProjectDefinition initialize!