#!/usr/bin/tclsh # # Run this script in order to generate a ZIP archive containing various # command-line tools. # # The makefile that invokes this script must first build the following # binaries: # # testfixture -- used to run this script # sqlite3 -- the SQLite CLI # sqldiff -- Program to diff two databases # sqlite3_analyzer -- Space analyzer # sqlite3_rsync -- Remote db sync # switch $tcl_platform(os) { {Windows NT} { set OS win set EXE .exe } Linux { set OS linux set EXE {} } Darwin { set OS osx set EXE {} } default { set OS unknown set EXE {} } } switch $tcl_platform(machine) { arm64 { set ARCH arm64 } x86_64 { set ARCH x64 } amd64 - intel { if {$tcl_platform(pointerSize)==4} { set ARCH x86 } else { set ARCH x64 } } default { set ARCH unk } } set in [open [file join [file dirname [file dirname [info script]]] VERSION]] set vers [read $in] close $in scan $vers %d.%d.%d v1 v2 v3 set v2 [format 3%02d%02d00 $v2 $v3] set name sqlite-tools-$OS-$ARCH-$v2.zip set filelist "sqlite3$EXE sqldiff$EXE sqlite3_analyzer$EXE sqlite3_rsync$EXE" proc make_zip_archive {name filelist} { file delete -force $name puts "fossil test-filezip $name $filelist" if {[catch {exec fossil test-filezip $name {*}$filelist}]} { puts "^--- Unable. Trying again as:" puts "zip $name $filelist" file delete -force $name exec zip $name {*}$filelist } puts "$name: [file size $name] bytes" } make_zip_archive $name $filelist # On Windows, also try to construct a DLL # if {$OS eq "win" && [file exists sqlite3.dll] && [file exists sqlite3.def]} { set name sqlite-dll-win-$ARCH-$v2.zip set filelist [list sqlite3.def sqlite3.dll] make_zip_archive $name $filelist }