Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Side by Side Diff: third_party/sqlite/src/tool/mksqlite3c-noext.tcl

Issue 1610963002: Import SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/tool/mksqlite3c.tcl ('k') | third_party/sqlite/src/tool/mksqlite3h.tcl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/tclsh 1 #!/usr/bin/tclsh
2 # 2 #
3 # To build a single huge source file holding all of SQLite (or at 3 # To build a single huge source file holding all of SQLite (or at
4 # least the core components - the test harness, shell, and TCL 4 # least the core components - the test harness, shell, and TCL
5 # interface are omitted.) first do 5 # interface are omitted.) first do
6 # 6 #
7 # make target_source 7 # make target_source
8 # 8 #
9 # The make target above moves all of the source code files into 9 # The make target above moves all of the source code files into
10 # a subdirectory named "tsrc". (This script expects to find the files 10 # a subdirectory named "tsrc". (This script expects to find the files
11 # there and will not work if they are not found.) There are a few 11 # there and will not work if they are not found.) There are a few
12 # generated C code files that are also added to the tsrc directory. 12 # generated C code files that are also added to the tsrc directory.
13 # For example, the "parse.c" and "parse.h" files to implement the 13 # For example, the "parse.c" and "parse.h" files to implement the
14 # the parser are derived from "parse.y" using lemon. And the 14 # the parser are derived from "parse.y" using lemon. And the
15 # "keywordhash.h" files is generated by a program named "mkkeywordhash". 15 # "keywordhash.h" files is generated by a program named "mkkeywordhash".
16 # 16 #
17 # After the "tsrc" directory has been created and populated, run 17 # After the "tsrc" directory has been created and populated, run
18 # this script: 18 # this script:
19 # 19 #
20 # tclsh mksqlite3c.tcl 20 # tclsh mksqlite3c-noext.tcl
21 # 21 #
22 # The amalgamated SQLite code will be written into sqlite3.c 22 # The amalgamated SQLite code will be written into sqlite3.c
23 # 23 #
24 24
25 # Begin by reading the "sqlite3.h" header file. Extract the version number 25 # Begin by reading the "sqlite3.h" header file. Extract the version number
26 # from in this file. The versioon number is needed to generate the header 26 # from in this file. The version number is needed to generate the header
27 # comment of the amalgamation. 27 # comment of the amalgamation.
28 # 28 #
29 if {[lsearch $argv --nostatic]>=0} { 29 if {[lsearch $argv --nostatic]>=0} {
30 set addstatic 0 30 set addstatic 0
31 } else { 31 } else {
32 set addstatic 1 32 set addstatic 1
33 } 33 }
34 if {[lsearch $argv --linemacros]>=0} { 34 if {[lsearch $argv --linemacros]>=0} {
35 set linemacros 1 35 set linemacros 1
36 } else { 36 } else {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 ** if you want a wrapper to interface SQLite with your choice of programming 73 ** if you want a wrapper to interface SQLite with your choice of programming
74 ** language. The code for the "sqlite3" command-line shell is also in a 74 ** language. The code for the "sqlite3" command-line shell is also in a
75 ** separate file. This file contains only code for the core SQLite library. 75 ** separate file. This file contains only code for the core SQLite library.
76 */ 76 */
77 #define SQLITE_CORE 1 77 #define SQLITE_CORE 1
78 #define SQLITE_AMALGAMATION 1}] 78 #define SQLITE_AMALGAMATION 1}]
79 if {$addstatic} { 79 if {$addstatic} {
80 puts $out \ 80 puts $out \
81 {#ifndef SQLITE_PRIVATE 81 {#ifndef SQLITE_PRIVATE
82 # define SQLITE_PRIVATE static 82 # define SQLITE_PRIVATE static
83 #endif
84 #ifndef SQLITE_API
85 # define SQLITE_API
86 #endif} 83 #endif}
87 } 84 }
88 85
89 # These are the header files used by SQLite. The first time any of these 86 # These are the header files used by SQLite. The first time any of these
90 # files are seen in a #include statement in the C code, include the complete 87 # files are seen in a #include statement in the C code, include the complete
91 # text of the file in-line. The file only needs to be included once. 88 # text of the file in-line. The file only needs to be included once.
92 # 89 #
93 foreach hdr { 90 foreach hdr {
94 btree.h 91 btree.h
95 btreeInt.h 92 btreeInt.h
96 hash.h 93 hash.h
97 hwtime.h 94 hwtime.h
98 keywordhash.h 95 keywordhash.h
96 msvc.h
99 mutex.h 97 mutex.h
100 opcodes.h 98 opcodes.h
101 os_common.h 99 os_common.h
102 os_setup.h 100 os_setup.h
103 os_win.h 101 os_win.h
104 os.h 102 os.h
105 pager.h 103 pager.h
106 parse.h 104 parse.h
107 pcache.h 105 pcache.h
106 pragma.h
108 sqlite3ext.h 107 sqlite3ext.h
109 sqlite3.h 108 sqlite3.h
110 sqliteicu.h 109 sqliteicu.h
111 sqliteInt.h 110 sqliteInt.h
112 sqliteLimit.h 111 sqliteLimit.h
113 vdbe.h 112 vdbe.h
114 vdbeInt.h 113 vdbeInt.h
114 vxworks.h
115 wal.h 115 wal.h
116 whereInt.h
116 } { 117 } {
117 set available_hdr($hdr) 1 118 set available_hdr($hdr) 1
118 } 119 }
119 set available_hdr(sqliteInt.h) 0 120 set available_hdr(sqliteInt.h) 0
120 121
122 # These headers should be copied into the amalgamation without modifying any
123 # of their function declarations or definitions.
124 set varonly_hdr(sqlite3.h) 1
125
126 # These are the functions that accept a variable number of arguments. They
127 # always need to use the "cdecl" calling convention even when another calling
128 # convention (e.g. "stcall") is being used for the rest of the library.
129 set cdecllist {
130 sqlite3_config
131 sqlite3_db_config
132 sqlite3_log
133 sqlite3_mprintf
134 sqlite3_snprintf
135 sqlite3_test_control
136 sqlite3_vtab_config
137 }
138
121 # 78 stars used for comment formatting. 139 # 78 stars used for comment formatting.
122 set s78 \ 140 set s78 \
123 {*****************************************************************************} 141 {*****************************************************************************}
124 142
125 # Insert a comment into the code 143 # Insert a comment into the code
126 # 144 #
127 proc section_comment {text} { 145 proc section_comment {text} {
128 global out s78 146 global out s78
129 set n [string length $text] 147 set n [string length $text]
130 set nstar [expr {60 - $n}] 148 set nstar [expr {60 - $n}]
131 set stars [string range $s78 0 $nstar] 149 set stars [string range $s78 0 $nstar]
132 puts $out "/************** $text $stars/" 150 puts $out "/************** $text $stars/"
133 } 151 }
134 152
135 # Read the source file named $filename and write it into the 153 # Read the source file named $filename and write it into the
136 # sqlite3.c output file. If any #include statements are seen, 154 # sqlite3.c output file. If any #include statements are seen,
137 # process them approprately. 155 # process them appropriately.
138 # 156 #
139 proc copy_file {filename} { 157 proc copy_file {filename} {
140 global seen_hdr available_hdr out addstatic linemacros 158 global seen_hdr available_hdr varonly_hdr cdecllist out addstatic linemacros
141 set ln 0 159 set ln 0
142 set tail [file tail $filename] 160 set tail [file tail $filename]
143 section_comment "Begin file $tail" 161 section_comment "Begin file $tail"
144 if {$linemacros} {puts $out "#line 1 \"$filename\""} 162 if {$linemacros} {puts $out "#line 1 \"$filename\""}
145 set in [open $filename r] 163 set in [open $filename r]
146 set varpattern {^[a-zA-Z][a-zA-Z_0-9 *]+(sqlite3[_a-zA-Z0-9]+)(\[|;| =)} 164 set varpattern {^[a-zA-Z][a-zA-Z_0-9 *]+(sqlite3[_a-zA-Z0-9]+)(\[|;| =)}
147 set declpattern {[a-zA-Z][a-zA-Z_0-9 ]+ \**(sqlite3[_a-zA-Z0-9]+)\(} 165 set declpattern {([a-zA-Z][a-zA-Z_0-9 ]+ \**)(sqlite3[_a-zA-Z0-9]+)(\(.*)}
148 if {[file extension $filename]==".h"} { 166 if {[file extension $filename]==".h"} {
149 set declpattern " *$declpattern" 167 set declpattern " *$declpattern"
150 } 168 }
151 set declpattern ^$declpattern 169 set declpattern ^$declpattern\$
152 while {![eof $in]} { 170 while {![eof $in]} {
153 set line [gets $in] 171 set line [gets $in]
154 incr ln 172 incr ln
155 if {[regexp {^\s*#\s*include\s+["<]([^">]+)[">]} $line all hdr]} { 173 if {[regexp {^\s*#\s*include\s+["<]([^">]+)[">]} $line all hdr]} {
156 if {[info exists available_hdr($hdr)]} { 174 if {[info exists available_hdr($hdr)]} {
157 if {$available_hdr($hdr)} { 175 if {$available_hdr($hdr)} {
158 if {$hdr!="os_common.h" && $hdr!="hwtime.h"} { 176 if {$hdr!="os_common.h" && $hdr!="hwtime.h"} {
159 set available_hdr($hdr) 0 177 set available_hdr($hdr) 0
160 } 178 }
161 section_comment "Include $hdr in the middle of $tail" 179 section_comment "Include $hdr in the middle of $tail"
162 copy_file tsrc/$hdr 180 copy_file tsrc/$hdr
163 section_comment "Continuing where we left off in $tail" 181 section_comment "Continuing where we left off in $tail"
164 if {$linemacros} {puts $out "#line [expr {$ln+1}] \"$filename\""} 182 if {$linemacros} {puts $out "#line [expr {$ln+1}] \"$filename\""}
183 } else {
184 # Comment out the entire line, replacing any nested comment
185 # begin/end markers with the harmless substring "**".
186 puts $out "/* [string map [list /* ** */ **] $line] */"
165 } 187 }
166 } elseif {![info exists seen_hdr($hdr)]} { 188 } elseif {![info exists seen_hdr($hdr)]} {
167 set seen_hdr($hdr) 1 189 if {![regexp {/\*\s+amalgamator:\s+dontcache\s+\*/} $line]} {
190 set seen_hdr($hdr) 1
191 }
192 puts $out $line
193 } elseif {[regexp {/\*\s+amalgamator:\s+keep\s+\*/} $line]} {
194 # This include file must be kept because there was a "keep"
195 # directive inside of a line comment.
168 puts $out $line 196 puts $out $line
169 } else { 197 } else {
170 puts $out "/* $line */" 198 # Comment out the entire line, replacing any nested comment
199 # begin/end markers with the harmless substring "**".
200 puts $out "/* [string map [list /* ** */ **] $line] */"
171 } 201 }
172 } elseif {[regexp {^#ifdef __cplusplus} $line]} { 202 } elseif {[regexp {^#ifdef __cplusplus} $line]} {
173 puts $out "#if 0" 203 puts $out "#if 0"
174 } elseif {!$linemacros && [regexp {^#line} $line]} { 204 } elseif {!$linemacros && [regexp {^#line} $line]} {
175 # Skip #line directives. 205 # Skip #line directives.
176 } elseif {$addstatic && ![regexp {^(static|typedef)} $line]} { 206 } elseif {$addstatic && ![regexp {^(static|typedef)} $line]} {
177 regsub {^SQLITE_API } $line {} line 207 # Skip adding the SQLITE_PRIVATE or SQLITE_API keyword before
178 if {[regexp $declpattern $line all funcname]} { 208 # functions if this header file does not need it.
209 if {![info exists varonly_hdr($tail)]
210 && [regexp $declpattern $line all rettype funcname rest]} {
211 regsub {^SQLITE_API } $line {} line
179 # Add the SQLITE_PRIVATE or SQLITE_API keyword before functions. 212 # Add the SQLITE_PRIVATE or SQLITE_API keyword before functions.
180 # so that linkage can be modified at compile-time. 213 # so that linkage can be modified at compile-time.
181 if {[regexp {^sqlite3_} $funcname]} { 214 if {[regexp {^sqlite3_} $funcname]} {
182 puts $out "SQLITE_API $line" 215 set line SQLITE_API
216 append line " " [string trim $rettype]
217 if {[string index $rettype end] ne "*"} {
218 append line " "
219 }
220 if {[lsearch -exact $cdecllist $funcname] >= 0} {
221 append line SQLITE_CDECL
222 } else {
223 append line SQLITE_STDCALL
224 }
225 append line " " $funcname $rest
226 puts $out $line
183 } else { 227 } else {
184 puts $out "SQLITE_PRIVATE $line" 228 puts $out "SQLITE_PRIVATE $line"
185 } 229 }
186 } elseif {[regexp $varpattern $line all varname]} { 230 } elseif {[regexp $varpattern $line all varname]} {
187 # Add the SQLITE_PRIVATE before variable declarations or 231 # Add the SQLITE_PRIVATE before variable declarations or
188 # definitions for internal use 232 # definitions for internal use
189 if {![regexp {^sqlite3_} $varname]} { 233 regsub {^SQLITE_API } $line {} line
190 regsub {^extern } $line {} line 234 if {![regexp {^sqlite3_} $varname]} {
191 puts $out "SQLITE_PRIVATE $line" 235 regsub {^extern } $line {} line
192 } else { 236 puts $out "SQLITE_PRIVATE $line"
193 if {[regexp {const char sqlite3_version\[\];} $line]} { 237 } else {
194 set line {const char sqlite3_version[] = SQLITE_VERSION;} 238 if {[regexp {const char sqlite3_version\[\];} $line]} {
239 set line {const char sqlite3_version[] = SQLITE_VERSION;}
240 }
241 regsub {^SQLITE_EXTERN } $line {} line
242 puts $out "SQLITE_API $line"
195 } 243 }
196 regsub {^SQLITE_EXTERN } $line {} line
197 puts $out "SQLITE_API $line"
198 }
199 } elseif {[regexp {^(SQLITE_EXTERN )?void \(\*sqlite3IoTrace\)} $line]} { 244 } elseif {[regexp {^(SQLITE_EXTERN )?void \(\*sqlite3IoTrace\)} $line]} {
245 regsub {^SQLITE_API } $line {} line
200 regsub {^SQLITE_EXTERN } $line {} line 246 regsub {^SQLITE_EXTERN } $line {} line
201 puts $out "SQLITE_PRIVATE $line" 247 puts $out $line
202 } elseif {[regexp {^void \(\*sqlite3Os} $line]} { 248 } elseif {[regexp {^void \(\*sqlite3Os} $line]} {
249 regsub {^SQLITE_API } $line {} line
203 puts $out "SQLITE_PRIVATE $line" 250 puts $out "SQLITE_PRIVATE $line"
204 } else { 251 } else {
205 puts $out $line 252 puts $out $line
206 } 253 }
207 } else { 254 } else {
208 puts $out $line 255 puts $out $line
209 } 256 }
210 } 257 }
211 close $in 258 close $in
212 section_comment "End of $tail" 259 section_comment "End of $tail"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 tokenize.c 346 tokenize.c
300 complete.c 347 complete.c
301 348
302 main.c 349 main.c
303 notify.c 350 notify.c
304 } { 351 } {
305 copy_file tsrc/$file 352 copy_file tsrc/$file
306 } 353 }
307 354
308 close $out 355 close $out
OLDNEW
« no previous file with comments | « third_party/sqlite/src/tool/mksqlite3c.tcl ('k') | third_party/sqlite/src/tool/mksqlite3h.tcl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698