Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a script that will break the amalgamation source file up into 4 or 5 smaller source files, each 32K lines or fewer, and a single "sqlite3-all.c" source file that #includes the others. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
5d34e64d4d2398aa9a54fd0a4f1de37c |
User & Date: | drh 2011-04-01 18:12:58.662 |
Context
2011-04-01
| ||
18:39 | Merge the multiplexer enhancements back into the trunk. (check-in: 2c125710cb user: drh tags: trunk) | |
18:12 | Add a script that will break the amalgamation source file up into 4 or 5 smaller source files, each 32K lines or fewer, and a single "sqlite3-all.c" source file that #includes the others. (check-in: 5d34e64d4d user: drh tags: trunk) | |
17:53 | Change analyze7.test so that it works without SQLITE_ENABLE_STAT2 defined. (check-in: 9415201c8a user: dan tags: trunk) | |
Changes
tool/mkopts.tcl became a regular file.
︙ | ︙ |
Changes to tool/mksqlite3c.tcl.
︙ | ︙ | |||
47 48 49 50 51 52 53 | # set out [open sqlite3.c w] set today [clock format [clock seconds] -format "%Y-%m-%d %H:%M:%S UTC" -gmt 1] puts $out [subst \ {/****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite ** version $VERSION. By combining all the individual C code files into this | | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # set out [open sqlite3.c w] set today [clock format [clock seconds] -format "%Y-%m-%d %H:%M:%S UTC" -gmt 1] puts $out [subst \ {/****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite ** version $VERSION. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a single translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements ** of 5% or more are commonly seen when SQLite is compiled as a single ** translation unit. ** ** This file is all you need to compile SQLite. To use SQLite in other ** programs, you need this file and the "sqlite3.h" header file that defines |
︙ | ︙ |
Added tool/split-sqlite3c.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 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 |