--- a/ProjectBuilder.st Sat Oct 10 16:26:51 2009 +0200
+++ b/ProjectBuilder.st Sat Oct 10 17:57:31 2009 +0200
@@ -81,11 +81,11 @@
mySTXTopDirectory := myTopDirectory / 'stx'.
self setupBuildDirectory.
-self halt.
self copySTCDirectoryForBuild.
self generateSourceFiles.
- self generateDLLsForLinkage.
-self halt.
+ self copyDLLsForLinkage.
+ self copySupportFilesForLinkage.
+ self copyStartupFilesFromSmalltalk.
OperatingSystem
executeCommand:(ParserFlags makeCommand,' exe')
@@ -100,6 +100,46 @@
"Modified: / 22-09-2006 / 17:37:11 / cg"
!
+copyDLLsForLinkage
+ |targetBuildDir|
+
+ targetBuildDir := buildDirectory / package module / package directory.
+
+ (projectDefinitionClass allPreRequisites)
+ do:[:eachPackageToFileout |
+ |packageId packageDef packageModule packageDirectory packageTargetDir
+ dllSource dllSourceDir libraryName dllRelativePath|
+
+ packageId := eachPackageToFileout asPackageId.
+ packageModule := packageId module.
+ packageDirectory := packageId directory.
+ packageTargetDir := (buildDirectory / packageModule / packageDirectory) recursiveMakeDirectory.
+
+ packageDef := packageId projectDefinitionClass.
+ libraryName := packageDef libraryName.
+
+ "/ mhmh - take them from my tree or from the projects/smalltalk execution directory ??
+ dllSourceDir := myTopDirectory / packageModule / packageDirectory.
+ OperatingSystem isMSWINDOWSlike ifTrue:[
+"/ dllRelativePath := 'objvc','/',(libraryName,'.dll').
+"/ (dllSourceDir / dllRelativePath) exists
+ false ifFalse:[
+ dllRelativePath := 'objbc','/',(libraryName,'.dll').
+ ]
+ ] ifFalse:[
+ dllRelativePath := libraryName,'.so'.
+ ].
+ ((packageTargetDir / dllRelativePath) exists
+ and:[ (dllSourceDir / dllRelativePath) fileSize = (packageTargetDir / dllRelativePath) fileSize
+ and:[ (dllSourceDir / dllRelativePath) modificationTime < (packageTargetDir / dllRelativePath) modificationTime
+ "/ and:[ (dllSourceDir / dllRelativePath) sameContentsAs:(packageTargetDir / dllRelativePath) ]
+ ]]) ifFalse:[
+ (packageTargetDir / dllRelativePath) directory recursiveMakeDirectory.
+ (dllSourceDir / dllRelativePath) copyTo:(packageTargetDir / dllRelativePath).
+ ]
+ ].
+!
+
copyDirectory:relativepath
"/ need rules in stx
((Smalltalk projectDirectoryForPackage:'stx') asFilename construct:relativepath)
@@ -126,6 +166,22 @@
self activityNotification:nil
!
+copyResourcesForPackage:aPackage
+ |module directory|
+
+ module := aPackage asPackageId module.
+ directory := aPackage asPackageId directory.
+
+ (myTopDirectory / module / directory / 'resources' ) exists ifTrue:[
+ (myTopDirectory / module / directory / 'resources' )
+ recursiveCopyTo:(buildDirectory / module / directory)
+ ].
+ (myTopDirectory / module / directory / 'styles' ) exists ifTrue:[
+ (myTopDirectory / module / directory / 'styles' )
+ recursiveCopyTo:(buildDirectory / module / directory)
+ ].
+!
+
copySTCDirectoryForBuild
|targetDir stc files|
@@ -152,6 +208,53 @@
self activityNotification:nil
!
+copyStartupFilesFromSmalltalk
+ (buildDirectory / 'stx' / 'projects/smalltalk' ) exists ifFalse:[
+ (buildDirectory / 'stx' / 'projects/smalltalk' ) recursiveMakeDirectory.
+ ].
+
+ #( 'keyboard.rc' 'keyboardMacros.rc' 'display.rc' 'd_win32.rc'
+ 'host.rc' 'h_win32.rc'
+ ) do:[:fn |
+ (myTopDirectory / 'stx' / 'projects/smalltalk' / fn)
+ copyTo: (buildDirectory / 'stx' / 'projects/smalltalk' / fn)
+ ]
+!
+
+copySupportFilesForLinkage
+ |files|
+
+ OperatingSystem isMSWINDOWSlike ifTrue:[
+ files := #(
+ 'support/win32/borland/cs3245.dll'
+ 'support/win32/X11.dll'
+ 'support/win32/Xext.dll'
+ 'librun/librun.dll'
+ 'libbc/librun.lib'
+ 'libbc/cs32i.lib'
+ 'librun/genDate.exe'
+ 'librun/main.c'
+ ).
+ ] ifFalse:[
+ files := #(
+ 'librun/genDate'
+ 'librun/main.c'
+ 'librun/librun.so'
+ )
+ ].
+
+ files do:[:dllRelativePath |
+ ((buildDirectory / 'stx' / dllRelativePath) exists
+ and:[ (mySTXTopDirectory / dllRelativePath) fileSize = (buildDirectory / 'stx' / dllRelativePath) fileSize
+ and:[ (mySTXTopDirectory / dllRelativePath) modificationTime < (buildDirectory / 'stx' / dllRelativePath) modificationTime
+ "/ and:[ (mySTXTopDirectory / dllRelativePath) sameContentsAs:(targetBuildDir / dllRelativePath) ]
+ ]]) ifFalse:[
+ (buildDirectory / 'stx' / dllRelativePath) directory recursiveMakeDirectory.
+ (mySTXTopDirectory / dllRelativePath) copyTo:(buildDirectory / 'stx' / dllRelativePath).
+ ]
+ ].
+!
+
createHeaderFileFor:aClass in:packageTargetDir
|instVarList classInstVarList classVarList bindings superclassFilename
template file newContents oldContents|
@@ -214,47 +317,6 @@
].
!
-generateDLLsForLinkage
- |targetBuildDir|
-
- targetBuildDir := buildDirectory / package module / package directory.
-
- "/ generate header files...
- (projectDefinitionClass allPreRequisites)
- do:[:eachPackageToFileout |
- |packageId packageDef packageModule packageDirectory packageTargetDir
- dllSource dllSourceDir libraryName dllRelativePath|
-
- packageId := eachPackageToFileout asPackageId.
- packageModule := packageId module.
- packageDirectory := packageId directory.
- packageTargetDir := (buildDirectory / packageModule / packageDirectory) recursiveMakeDirectory.
-
- packageDef := packageId projectDefinitionClass.
- libraryName := packageDef libraryName.
-
- "/ mhmh - take them from my tree or from the projects/smalltalk execution directory ??
- dllSourceDir := myTopDirectory / packageModule / packageDirectory.
- OperatingSystem isMSWINDOWSlike ifTrue:[
-"/ dllRelativePath := 'objvc','/',(libraryName,'.dll').
-"/ (dllSourceDir / dllRelativePath) exists
- false ifFalse:[
- dllRelativePath := 'objbc','/',(libraryName,'.dll').
- ]
- ] ifFalse:[
- dllRelativePath := libraryName,'.so'.
- ].
- ((dllSourceDir / dllRelativePath) exists
- and:[ (dllSourceDir / dllRelativePath) fileSize = (packageTargetDir / dllRelativePath) fileSize
- and:[ (dllSourceDir / dllRelativePath) modificationTime < (packageTargetDir / dllRelativePath) modificationTime
- "/ and:[ (dllSourceDir / dllRelativePath) sameContentsAs:(packageTargetDir / dllRelativePath) ]
- ]]) ifFalse:[
- (packageTargetDir / dllRelativePath) directory recursiveMakeDirectory.
- (dllSourceDir / dllRelativePath) copyTo:(packageTargetDir / dllRelativePath).
- ]
- ].
-!
-
generateSourceFiles
sourceCodeManager notNil ifTrue:[
"/ check out / generate files there
@@ -351,7 +413,6 @@
(packageTargetDir / fileName) contents:fileContents.
].
].
-self halt.
].
"/ generate header files in prerequisite packages...
@@ -370,11 +431,12 @@
|cls|
cls := Smalltalk classNamed:eachClassName.
- self assert:cls isLoaded.
+ "/ self assert:cls isLoaded.
cls isLoaded ifTrue:[
self createHeaderFileFor:cls in:packageTargetDir
].
].
+ self copyResourcesForPackage:eachPackageToFileout.
].
"/ stx_libbasic2 preRequisitesForBuilding#(#'stx:libbasic')