| Index: third_party/sqlite/src/tool/split-sqlite3c.tcl
|
| diff --git a/third_party/sqlite/src/tool/split-sqlite3c.tcl b/third_party/sqlite/src/tool/split-sqlite3c.tcl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..287b752828f4157c6ac10b5f85d7dae9576ddd4b
|
| --- /dev/null
|
| +++ b/third_party/sqlite/src/tool/split-sqlite3c.tcl
|
| @@ -0,0 +1,82 @@
|
| +#!/usr/bin/tclsh
|
| +#
|
| +# This script splits the sqlite3.c amalgamated source code files into
|
| +# several smaller files such that no single files is more than a fixed
|
| +# number of lines in length (32k or 64k). Each of the split out files
|
| +# is #include-ed by the master file.
|
| +#
|
| +# Splitting files up this way allows them to be used with older compilers
|
| +# that cannot handle really long source files.
|
| +#
|
| +set MAX 32768 ;# Maximum number of lines per file.
|
| +
|
| +set BEGIN {^/\*+ Begin file ([a-zA-Z0-9_.]+) \*+/}
|
| +set END {^/\*+ End of %s \*+/}
|
| +
|
| +set in [open sqlite3.c]
|
| +set out1 [open sqlite3-all.c w]
|
| +
|
| +# Copy the header from sqlite3.c into sqlite3-all.c
|
| +#
|
| +while {[gets $in line]} {
|
| + if {[regexp $BEGIN $line]} break
|
| + puts $out1 $line
|
| +}
|
| +
|
| +# Gather the complete content of a file into memory. Store the
|
| +# content in $bufout. Store the number of lines is $nout
|
| +#
|
| +proc gather_one_file {firstline bufout nout} {
|
| + regexp $::BEGIN $firstline all filename
|
| + set end [format $::END $filename]
|
| + upvar $bufout buf $nout n
|
| + set buf $firstline\n
|
| + global in
|
| + set n 0
|
| + while {[gets $in line]>=0} {
|
| + incr n
|
| + append buf $line\n
|
| + if {[regexp $end $line]} break
|
| + }
|
| +}
|
| +
|
| +# Write a big chunk of text in to an auxiliary file "sqlite3-NNN.c".
|
| +# Also add an appropriate #include to sqlite3-all.c
|
| +#
|
| +set filecnt 0
|
| +proc write_one_file {content} {
|
| + global filecnt
|
| + incr filecnt
|
| + set out [open sqlite3-$filecnt.c w]
|
| + puts -nonewline $out $content
|
| + close $out
|
| + puts $::out1 "#include \"sqlite3-$filecnt.c\""
|
| +}
|
| +
|
| +# Continue reading input. Store chunks in separate files and add
|
| +# the #includes to the main sqlite3-all.c file as necessary to reference
|
| +# the extra chunks.
|
| +#
|
| +set all {}
|
| +set N 0
|
| +while {[regexp $BEGIN $line]} {
|
| + set buf {}
|
| + set n 0
|
| + gather_one_file $line buf n
|
| + if {$n+$N>=$MAX} {
|
| + write_one_file $all
|
| + set all {}
|
| + set N 0
|
| + }
|
| + append all $buf
|
| + incr N $n
|
| + while {[gets $in line]>=0} {
|
| + if {[regexp $BEGIN $line]} break
|
| + puts $out1 $line
|
| + }
|
| +}
|
| +if {$N>0} {
|
| + write_one_file $all
|
| +}
|
| +close $out1
|
| +close $in
|
|
|