aboutsummaryrefslogtreecommitdiff
path: root/starkit.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'starkit.tcl')
-rw-r--r--starkit.tcl161
1 files changed, 161 insertions, 0 deletions
diff --git a/starkit.tcl b/starkit.tcl
new file mode 100644
index 0000000..f163ada
--- /dev/null
+++ b/starkit.tcl
@@ -0,0 +1,161 @@
+#
+# This script is intended to be run in the top directory
+# with: tclsh starkit.tcl.
+# It needs a tclkit and the sdx command as a starkit in the path.
+#
+
+set MAJOR_VERSION
+set MINOR_VERSION
+set PATCHLEVEL
+
+
+#
+# Starkit structure
+#
+# demo.tcl
+# lib
+# tkimg1.3
+# files from the Tkimg starkit
+# TkzincX.Y
+# Copyright
+# demos
+# demos files and sub-directories
+# Linux-x86
+# Tkzinc.so
+# pkgIndex.tcl
+# Windows-x86
+# Tkzinc.dll
+# zincGraphics.tcl
+# zincLogo.tcl
+# zincText.tcl
+# main.tcl
+#
+
+proc Windows-x86-Compile {} {
+ set cwd [pwd]
+ puts "Compiling for Windows $cwd..."
+ cd win
+ if { [catch { exec tclsh package.tcl clean } result] } {
+ puts $result
+ exit
+ }
+ if { [catch { exec tclsh package.tcl subst } result] } {
+ puts $result
+ exit
+ }
+ if { [catch { exec tclsh package.tcl tcl } result] } {
+ puts $result
+ exit
+ }
+ #
+ # Copy the dll in the root dir for updateKit.
+ file copy -force [glob -directory buildtcl Tkzinc*.dll] [file join $cwd Tkzinc.dll]
+
+ cd $cwd
+}
+
+proc Linux-x86-Compile {} {
+}
+
+proc updateKit { TkzincVfs } {
+ global MAJOR_VERSION MINOR_VERSION PATCHLEVEL
+
+ set zincPath [file join $TkzincVfs lib Tkzinc$MAJOR_VERSION.$MINOR_VERSION]
+ set version $MAJOR_VERSION.$MINOR_VERSION.$PATCHLEVEL
+ set winVersion $MAJOR_VERSION$MINOR_VERSION$PATCHLEVEL
+
+ file copy -force [file join starkit demo.tcl] [file join starkit main.tcl] $TkzincVfs
+
+ set zincPath [file join $TkzincVfs lib Tkzinc$MAJOR_VERSION.$MINOR_VERSION]
+ file mkdir $zincPath
+ file copy -force Copyright \
+ [file join library zincGraphics.tcl] \
+ [file join library zincLogo.tcl] \
+ [file join library zincText.tcl] \
+ $zincPath
+
+ set demosPath [file join $zincPath demos]
+ file mkdir $demosPath
+ foreach f [glob -directory demos *.tcl] {
+ file copy -force $f $demosPath
+ }
+ file delete -force [file join $demosPath data] [file join $demosPath images]
+ file copy -force [file join demos zinc-widget] [file join demos data] [file join demos images] $demosPath
+
+ #
+ # Emit a merged pkgIndex.tcl
+ #
+ set fOut [open [file join $zincPath pkgIndex.tcl] w]
+ puts $fOut "proc Platform {} {"
+ puts -nonewline $fOut [info body Platform]
+ puts $fOut "}"
+ set fIn [open [file join library pkgIndex.tcl]]
+ foreach line [split [read $fIn] \n] {
+ if {![regexp {^\s*$|^#} $line]} {
+ puts $fOut $line
+ }
+ }
+ close $fIn
+ puts -nonewline $fOut "package ifneeded Tkzinc $version "
+ puts $fOut {[list load [file join $dir [Platform] Tkzinc[info sharedlibext]]]}
+ close $fOut
+
+ #
+ # Copy the platform dependent libraries
+ #
+ if { [file exists libTkzinc$version.so] } {
+ set platformPath [file join $zincPath Linux-x86]
+ file mkdir $platformPath
+ file copy -force libTkzinc$version.so [file join $platformPath Tkzinc.so]
+ }
+ if { [file exists Tkzinc.dll] } {
+ set platformPath [file join $zincPath Windows-x86]
+ file mkdir $platformPath
+ file copy -force Tkzinc.dll [file join $platformPath Tkzinc.dll]
+ }
+}
+
+
+proc Platform {} {
+ global tcl_platform
+ set plat [lindex $tcl_platform(os) 0]
+ set mach $tcl_platform(machine)
+ switch -glob -- $mach {
+ sun4* { set mach sparc }
+ intel -
+ i*86* { set mach x86 }
+ "Power Macintosh" { set mach ppc }
+ }
+ switch -- $plat {
+ AIX { set mach ppc }
+ HP-UX { set mach hppa }
+ }
+ return "$plat-$mach"
+}
+
+#
+# Build the current platform variant
+[Platform]-Compile
+
+set TkzincVfs Tkzinc.vfs
+set TkzincKit Tkzinc.kit
+
+set cwd [pwd]
+cd ..
+
+if { ! [file exists $TkzincVfs] } {
+ if { [file exists $TkzincKit] } {
+ exec sdx unwrap $TkzincKit
+ } else {
+ puts "Unable to find either Tkzinc.kit or Tkzinc.vfs in .. , giving up."
+ exit
+ }
+}
+cd $cwd
+updateKit [file join .. $TkzincVfs]
+
+puts "Now wrapping the starkit"
+
+cd ..
+exec sdx wrap $TkzincKit
+