diff options
Diffstat (limited to 'starkit.tcl')
-rw-r--r-- | starkit.tcl | 161 |
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 + |