2522 ! |
2522 ! |
2523 |
2523 |
2524 generateDependencies:whichArchitecture |
2524 generateDependencies:whichArchitecture |
2525 ^ String |
2525 ^ String |
2526 streamContents:[:s | |
2526 streamContents:[:s | |
2527 |classNames classesLoaded classesSorted classNamesSorted putDependencyForClass archClassNames archClassesLoaded putSingleClassDependencyEntry putDependencyForExtensions| |
2527 |classNames classesPresent classesLoaded classesSorted classNamesSorted putDependencyForClass |
|
2528 archClassNames archClassesLoaded |
|
2529 putSingleClassDependencyEntry putDependencyForExtensions| |
2528 |
2530 |
2529 putSingleClassDependencyEntry := [:cls | |
2531 putSingleClassDependencyEntry := [:cls | |
2530 |sclsBaseName| |
2532 |sclsBaseName| |
2531 |
2533 |
2532 s nextPutAll:' $(INCLUDE_TOP)'. |
2534 s nextPutAll:' $(INCLUDE_TOP)'. |
2536 topRelativePathTo:sclsBaseName |
2538 topRelativePathTo:sclsBaseName |
2537 inPackage:cls package |
2539 inPackage:cls package |
2538 architecture:whichArchitecture). |
2540 architecture:whichArchitecture). |
2539 s nextPutAll:'.$(H)'. |
2541 s nextPutAll:'.$(H)'. |
2540 ]. |
2542 ]. |
|
2543 |
2541 putDependencyForClass := [:cls | |
2544 putDependencyForClass := [:cls | |
2542 |clsBaseName already| |
2545 |clsBaseName already| |
2543 |
2546 |
2544 clsBaseName := cls classFilename asFilename withoutSuffix baseName. |
2547 clsBaseName := cls classFilename asFilename withoutSuffix baseName. |
2545 s nextPutAll:'$(OUTDIR)'. |
2548 s nextPutAll:'$(OUTDIR)'. |
2549 s nextPutAll:clsBaseName. |
2552 s nextPutAll:clsBaseName. |
2550 s nextPutAll:'.$(H)'. |
2553 s nextPutAll:'.$(H)'. |
2551 s nextPutAll:': '. |
2554 s nextPutAll:': '. |
2552 s nextPutAll:clsBaseName. |
2555 s nextPutAll:clsBaseName. |
2553 s nextPutAll:'.st'. |
2556 s nextPutAll:'.st'. |
2554 already := Set new. |
2557 cls isLoaded ifTrue:[ |
2555 cls |
2558 already := Set new. |
2556 allSuperclassesDo:[:scls | |
2559 cls |
2557 putSingleClassDependencyEntry value:scls. |
2560 allSuperclassesDo:[:scls | |
2558 already add:scls. |
2561 putSingleClassDependencyEntry value:scls. |
2559 ]. |
2562 already add:scls. |
2560 cls |
2563 ]. |
2561 privateClassesDo:[:eachPrivateClass | |
2564 cls |
2562 eachPrivateClass |
2565 privateClassesDo:[:eachPrivateClass | |
2563 allSuperclassesDo:[:scls | |
2566 eachPrivateClass |
2564 |sclsBaseName| |
2567 allSuperclassesDo:[:scls | |
2565 |
2568 |sclsBaseName| |
2566 scls ~~ cls ifTrue:[ |
2569 |
2567 scls isPrivate ifFalse:[ |
2570 scls ~~ cls ifTrue:[ |
2568 (already includes:scls) ifFalse:[ |
2571 scls isPrivate ifFalse:[ |
2569 putSingleClassDependencyEntry value:scls. |
2572 (already includes:scls) ifFalse:[ |
2570 already add:scls. |
2573 putSingleClassDependencyEntry value:scls. |
|
2574 already add:scls. |
|
2575 ]. |
2571 ]. |
2576 ]. |
2572 ]. |
2577 ]. |
2573 ]. |
2578 ] |
2574 ] |
2579 ]. |
2575 ]. |
2580 ]. |
2576 s nextPutAll:' $(STCHDR)'. |
2581 s nextPutLine:' $(STCHDR)'. |
2577 s cr. |
|
2578 ]. |
2582 ]. |
|
2583 |
2579 putDependencyForExtensions := [ |
2584 putDependencyForExtensions := [ |
2580 |already| |
2585 |already| |
2581 |
2586 |
2582 s nextPutAll:'$(OUTDIR)extensions.$(O): extensions.st'. |
2587 s nextPutAll:'$(OUTDIR)extensions.$(O): extensions.st'. |
2583 already := Set new. |
2588 already := Set new. |
2598 ]. |
2603 ]. |
2599 ]. |
2604 ]. |
2600 ]. |
2605 ]. |
2601 ]. |
2606 ]. |
2602 ]. |
2607 ]. |
2603 s nextPutAll:' $(STCHDR)'. |
2608 s nextPutLine:' $(STCHDR)'. |
2604 s cr. |
|
2605 ]. |
2609 ]. |
|
2610 |
2606 classNames := self compiled_classNames_common. |
2611 classNames := self compiled_classNames_common. |
2607 classesLoaded := classNames |
2612 classesPresent := classNames |
2608 collect:[:className | Smalltalk classNamed:className] |
2613 collect:[:className | Smalltalk classNamed:className] |
2609 thenSelect:[:cls | cls notNil and:[cls isLoaded]]. |
2614 thenSelect:[:cls | cls notNil]. |
|
2615 classesLoaded := classesPresent |
|
2616 select:[:cls | cls isLoaded]. |
2610 |
2617 |
2611 classesSorted := Class classesSortedByLoadOrder:classesLoaded. |
2618 classesSorted := Class classesSortedByLoadOrder:classesLoaded. |
2612 classesSorted do:putDependencyForClass. |
2619 classesSorted do:putDependencyForClass. |
|
2620 (classesPresent select:[:cls | cls isLoaded not]) do:putDependencyForClass. |
|
2621 |
2613 self namesAndAttributesIn:(self additionalClassNamesAndAttributes) |
2622 self namesAndAttributesIn:(self additionalClassNamesAndAttributes) |
2614 do:[:className :attr | |
2623 do:[:className :attr | |
2615 |cls| |
2624 |cls| |
2616 |
2625 |
2617 (attr isEmptyOrNil or:[ (attr includes:#autoload) not ]) ifTrue:[ |
2626 (attr isEmptyOrNil or:[ (attr includes:#autoload) not ]) ifTrue:[ |
2636 stx_libbasic3 generateDependencies:#win32 |
2645 stx_libbasic3 generateDependencies:#win32 |
2637 " |
2646 " |
2638 |
2647 |
2639 "Modified: / 16-08-2006 / 18:52:10 / User" |
2648 "Modified: / 16-08-2006 / 18:52:10 / User" |
2640 "Created: / 14-09-2006 / 12:38:57 / cg" |
2649 "Created: / 14-09-2006 / 12:38:57 / cg" |
2641 "Modified: / 09-10-2006 / 14:23:16 / cg" |
2650 "Modified: / 25-10-2006 / 16:01:13 / cg" |
2642 ! |
2651 ! |
2643 |
2652 |
2644 generateDependencies_unix |
2653 generateDependencies_unix |
2645 ^ self generateDependencies:#unix |
2654 ^ self generateDependencies:#unix |
2646 |
2655 |
3354 |
3363 |
3355 "Created: / 17-08-2006 / 14:46:28 / cg" |
3364 "Created: / 17-08-2006 / 14:46:28 / cg" |
3356 "Modified: / 23-08-2006 / 13:49:27 / cg" |
3365 "Modified: / 23-08-2006 / 13:49:27 / cg" |
3357 ! |
3366 ! |
3358 |
3367 |
|
3368 hasAllClassesFullyLoaded |
|
3369 "return true, if all classes are present and loaded" |
|
3370 |
|
3371 ^ self hasAllClassesLoaded:true |
|
3372 |
|
3373 "Created: / 25-10-2006 / 16:08:25 / cg" |
|
3374 ! |
|
3375 |
3359 hasAllClassesLoaded |
3376 hasAllClassesLoaded |
|
3377 "return true, if all classes are present (athough, some might be autoloaded)" |
|
3378 |
|
3379 ^ self hasAllClassesLoaded:false |
|
3380 |
|
3381 "Modified: / 25-10-2006 / 16:08:11 / cg" |
|
3382 ! |
|
3383 |
|
3384 hasAllClassesLoaded:checkIfFullyLoaded |
3360 |checkLoaded| |
3385 |checkLoaded| |
3361 |
3386 |
3362 checkLoaded := [:eachClassName | |
3387 checkLoaded := [:eachClassName | |
3363 |cls| |
3388 |cls| |
3364 |
3389 |
3365 cls := Smalltalk loadedClassNamed:eachClassName. |
3390 cls := Smalltalk loadedClassNamed:eachClassName. |
3366 (cls isNil "or:[cls isLoaded not]") ifTrue:[ |
3391 (cls isNil "or:[cls isLoaded not]") ifTrue:[ |
3367 Transcript showCR:(self name,' missing class: "',eachClassName,'".'). |
3392 Transcript showCR:(self name,' missing class: "',eachClassName,'".'). |
3368 ^ false |
3393 ^ false |
3369 ]. |
3394 ]. |
|
3395 checkIfFullyLoaded ifTrue:[ |
|
3396 cls isLoaded ifFalse:[ |
|
3397 Transcript showCR:(self name,' unloaded class: "',eachClassName,'".'). |
|
3398 ^ false |
|
3399 ] |
|
3400 ]. |
3370 ]. |
3401 ]. |
3371 |
3402 |
3372 (self classNamesForWhich:[:nm :attr | (attr includes:#autoload) |
3403 (self classNamesForWhich:[:nm :attr | (attr includes:#autoload) |
3373 or:[attr isEmptyOrNil] ]) do:checkLoaded. |
3404 or:[attr isEmptyOrNil] ]) do:checkLoaded. |
3374 (self compiled_classNamesForPlatform:OperatingSystem platformName) do:checkLoaded. |
3405 (self compiled_classNamesForPlatform:OperatingSystem platformName) do:checkLoaded. |
3375 |
3406 |
3376 ^ true. |
3407 ^ true. |
3377 |
3408 |
3378 "Created: / 17-08-2006 / 00:50:01 / cg" |
3409 "Created: / 25-10-2006 / 16:06:05 / cg" |
3379 "Modified: / 25-10-2006 / 00:04:06 / cg" |
|
3380 ! |
3410 ! |
3381 |
3411 |
3382 hasAllExtensionsLoaded |
3412 hasAllExtensionsLoaded |
3383 self extensionMethodNames pairWiseDo:[:className :selector | |
3413 self extensionMethodNames pairWiseDo:[:className :selector | |
3384 |cls| |
3414 |cls| |