Added script to auto-generate version-info on Windows.
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 18 Nov 2008 08:27:13 +0000 (09:27 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 18 Nov 2008 08:27:13 +0000 (09:27 +0100)
src/Makefile.am
src/mk_version.tcl [new file with mode: 0644]

index 354e49d..b27f1fe 100644 (file)
@@ -18,7 +18,7 @@ illdata_DATA=ill9702.asn item-req.asn ill.tcl oclc-ill-req-ext.asn
 EXTRA_DIST=$(tabdata_DATA) $(illdata_DATA) \
  charconv.tcl codetables.xml codetables-iso5426.xml \
  csvtodiag.tcl csvtobib1.tcl csvtosrw.tcl bib1.csv srw.csv \
 EXTRA_DIST=$(tabdata_DATA) $(illdata_DATA) \
  charconv.tcl codetables.xml codetables-iso5426.xml \
  csvtodiag.tcl csvtobib1.tcl csvtosrw.tcl bib1.csv srw.csv \
- csvtosru_update.tcl sru_update.csv \
+ csvtosru_update.tcl sru_update.csv mk_version.tcl \
  oidtoc.tcl oid.csv sc_test.c
 
 YAZCOMP=$(top_srcdir)/util/yaz-asncomp
  oidtoc.tcl oid.csv sc_test.c
 
 YAZCOMP=$(top_srcdir)/util/yaz-asncomp
diff --git a/src/mk_version.tcl b/src/mk_version.tcl
new file mode 100644 (file)
index 0000000..160a918
--- /dev/null
@@ -0,0 +1,76 @@
+#!/usr/bin/tclsh
+
+proc usage {} {
+    puts {mk_version.tcl [-v] configure.ac infile ..}
+    exit 1
+}
+
+set verbose 0
+set l [llength $argv]
+set i 0
+while {$i < $l} {
+    set arg [lindex $argv $i]
+    switch -glob -- $arg {
+        -v {
+            incr verbose
+        }
+        default {
+           if {![info exists conffile]} {
+               set conffile $arg
+           } else {
+               lappend infiles $arg
+           }
+        }
+    }
+    incr i
+}
+if {![info exists infiles]} {
+    puts "mk_version.tcl: missing input file(s)"
+    usage
+}
+
+set f [open $conffile r]
+while {1} {
+    set cnt [gets $f line]
+    if {$cnt < 0} {
+       break
+    }
+    regexp {AC_INIT\([^,]+,\[([0-9.]+)\]} $line s version
+}
+close $f
+
+set maps(VERSION) $version
+
+set c [split $version .]
+
+set versionl [expr ([lindex $c 0] * 256 + [lindex $c 1]) * 256 + [lindex $c 2]]
+set maps(YAZ_VERSION_HEX) [format %x $versionl]
+
+if {[llength $c] == 3} {
+    lappend c 1
+}
+set maps(WIN_FILEVERSION) [join $c ,]
+
+set maps(VERSION_SHA1) {}
+
+foreach x [array names maps] {
+    puts "$x=$maps($x)"
+}
+       
+foreach ifile $infiles {
+    set if [open "${ifile}.in" r]
+    set of [open "${ifile}" w]
+
+    while {1} {
+       set cnt [gets $if line]
+       if {$cnt < 0} {
+           break
+       }
+       foreach x [array names maps] {
+           regsub -all "@$x@" $line $maps($x) line
+       }
+       puts $of $line
+    }
+    close $if
+    close $of
+}