~ubuntu-branches/ubuntu/precise/sqlite3/precise-updates

« back to all changes in this revision

Viewing changes to tool/mksqlite3h.tcl

  • Committer: Bazaar Package Importer
  • Author(s): Laszlo Boszormenyi (GCS)
  • Date: 2009-12-11 14:34:09 UTC
  • mfrom: (9.1.7 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091211143409-o29fahwmcmyd0vq1
Tags: 3.6.21-2
Run autoreconf to prevent FTBFS with new libtool (closes: #560660).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/tclsh
 
2
#
 
3
# This script constructs the "sqlite3.h" header file from the following
 
4
# sources:
 
5
#
 
6
#   1) The src/sqlite.h.in source file.  This is the template for sqlite3.h.
 
7
#   2) The VERSION file containing the current SQLite version number.
 
8
#   3) The manifest file from the fossil SCM.  This gives use the date.
 
9
#   4) The manifest.uuid file from the fossil SCM.  This gives the SHA1 hash.
 
10
#
 
11
# Run this script by specifying the root directory of the source tree
 
12
# on the command-line.
 
13
 
14
# This script performs processing on src/sqlite.h.in. It:
 
15
#
 
16
#   1) Adds SQLITE_EXTERN in front of the declaration of global variables,
 
17
#   2) Adds SQLITE_API in front of the declaration of API functions,
 
18
#   3) Replaces the string --VERS-- with the current library version, 
 
19
#      formatted as a string (e.g. "3.6.17"), and
 
20
#   4) Replaces the string --VERSION-NUMBER-- with current library version,
 
21
#      formatted as an integer (e.g. "3006017").
 
22
#   5) Replaces the string --SOURCE-ID-- with the date and time and sha1 
 
23
#      hash of the fossil-scm manifest for the source tree.
 
24
#
 
25
# This script outputs to stdout.
 
26
#
 
27
# Example usage:
 
28
#
 
29
#   tclsh mksqlite3h.tcl ../sqlite >sqlite3.h
 
30
#
 
31
 
 
32
 
 
33
# Get the source tree root directory from the command-line
 
34
#
 
35
set TOP [lindex $argv 0]
 
36
 
 
37
# Get the SQLite version number (ex: 3.6.18) from the $TOP/VERSION file.
 
38
#
 
39
set in [open $TOP/VERSION]
 
40
set zVersion [string trim [read $in]]
 
41
close $in
 
42
set nVersion [eval format "%d%03d%03d" [split $zVersion .]]
 
43
 
 
44
# Get the fossil-scm version number from $TOP/manifest.uuid.
 
45
#
 
46
set in [open $TOP/manifest.uuid]
 
47
set zUuid [string trim [read $in]]
 
48
close $in
 
49
 
 
50
# Get the fossil-scm check-in date from the "D" card of $TOP/manifest.
 
51
#
 
52
set in [open $TOP/manifest]
 
53
set zDate {}
 
54
while {![eof $in]} {
 
55
  set line [gets $in]
 
56
  if {[regexp {^D (2.*[0-9])} $line all date]} {
 
57
    set zDate [string map {T { }} $date]
 
58
    break
 
59
  }
 
60
}
 
61
close $in
 
62
 
 
63
# Set up patterns for recognizing API declarations.
 
64
#
 
65
set varpattern {^[a-zA-Z][a-zA-Z_0-9 *]+sqlite3_[_a-zA-Z0-9]+(\[|;| =)}
 
66
set declpattern {^ *[a-zA-Z][a-zA-Z_0-9 ]+ \**sqlite3_[_a-zA-Z0-9]+\(}
 
67
 
 
68
# Process the  src/sqlite.h.in  file.
 
69
#
 
70
set in [open $TOP/src/sqlite.h.in]
 
71
while {![eof $in]} {
 
72
 
 
73
  set line [gets $in]
 
74
 
 
75
  regsub -- --VERS--           $line $zVersion line
 
76
  regsub -- --VERSION-NUMBER-- $line $nVersion line
 
77
  regsub -- --SOURCE-ID--      $line "$zDate $zUuid" line
 
78
 
 
79
  if {[regexp {define SQLITE_EXTERN extern} $line]} {
 
80
    puts $line
 
81
    puts [gets $in]
 
82
    puts ""
 
83
    puts "#ifndef SQLITE_API"
 
84
    puts "# define SQLITE_API"
 
85
    puts "#endif"
 
86
    set line ""
 
87
  }
 
88
 
 
89
  if {([regexp $varpattern $line] && ![regexp {^ *typedef} $line])
 
90
   || ([regexp $declpattern $line])
 
91
  } {
 
92
    set line "SQLITE_API $line"
 
93
  }
 
94
  puts $line
 
95
}
 
96
close $in