Ignore hmac read during Btree file copy
[sqlcipher.git] / Makefile.msc
blob23c5b17f086588be0a95c25b57453748ede69b6e
2 # nmake Makefile for SQLite
5 # The toplevel directory of the source tree.  This is the directory
6 # that contains this "Makefile.msc".
8 TOP = .
10 # Set this non-0 to create and use the SQLite amalgamation file.
12 !IFNDEF USE_AMALGAMATION
13 USE_AMALGAMATION = 1
14 !ENDIF
16 # Set this non-0 to use the International Components for Unicode (ICU).
18 !IFNDEF USE_ICU
19 USE_ICU = 0
20 !ENDIF
22 # Set this non-0 to dynamically link to the MSVC runtime library.
24 !IFNDEF USE_CRT_DLL
25 USE_CRT_DLL = 0
26 !ENDIF
28 # Set this non-0 to attempt setting the native compiler automatically
29 # for cross-compiling the command line tools needed during the compilation
30 # process.
32 !IFNDEF XCOMPILE
33 XCOMPILE = 0
34 !ENDIF
36 # Set this non-0 to use the native libraries paths for cross-compiling
37 # the command line tools needed during the compilation process.
39 !IFNDEF USE_NATIVE_LIBPATHS
40 USE_NATIVE_LIBPATHS = 0
41 !ENDIF
43 # Set this 0 to skip the compiling and embedding of version resources.
45 !IFNDEF USE_RC
46 USE_RC = 1
47 !ENDIF
49 # Set this non-0 to compile binaries suitable for the WinRT environment.
50 # This setting does not apply to any binaries that require Tcl to operate
51 # properly (i.e. the text fixture, etc).
53 !IFNDEF FOR_WINRT
54 FOR_WINRT = 0
55 !ENDIF
57 # Set this non-0 to skip attempting to look for and/or link with the Tcl
58 # runtime library.
60 !IFNDEF NO_TCL
61 NO_TCL = 0
62 !ENDIF
64 # Set this to non-0 to create and use PDBs.
66 !IFNDEF SYMBOLS
67 SYMBOLS = 1
68 !ENDIF
70 # Set this to non-0 to use the SQLite debugging heap subsystem.
72 !IFNDEF MEMDEBUG
73 MEMDEBUG = 0
74 !ENDIF
76 # Set this to non-0 to use the Win32 native heap subsystem.
78 !IFNDEF WIN32HEAP
79 WIN32HEAP = 0
80 !ENDIF
82 # Set this to one of the following values to enable various debugging
83 # features.  Each level includes the debugging options from the previous
84 # levels.  Currently, the recognized values for DEBUG are:
86 # 0 == NDEBUG: Disables assert() and other runtime diagnostics.
87 # 1 == Disables NDEBUG and all optimizations and then enables PDBs.
88 # 2 == SQLITE_DEBUG: Enables various diagnostics messages and code.
89 # 3 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call.
90 # 4 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros.
91 # 5 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros.
93 !IFNDEF DEBUG
94 DEBUG = 0
95 !ENDIF
97 # Check for the predefined command macro CC.  This should point to the compiler
98 # binary for the target platform.  If it is not defined, simply define it to
99 # the legacy default value 'cl.exe'.
101 !IFNDEF CC
102 CC = cl.exe
103 !ENDIF
105 # Check for the command macro LD.  This should point to the linker binary for
106 # the target platform.  If it is not defined, simply define it to the legacy
107 # default value 'link.exe'.
109 !IFNDEF LD
110 LD = link.exe
111 !ENDIF
113 # Check for the predefined command macro RC.  This should point to the resource
114 # compiler binary for the target platform.  If it is not defined, simply define
115 # it to the legacy default value 'rc.exe'.
117 !IFNDEF RC
118 RC = rc.exe
119 !ENDIF
121 # Check for the command macro NCC.  This should point to the compiler binary
122 # for the platform the compilation process is taking place on.  If it is not
123 # defined, simply define it to have the same value as the CC macro.  When
124 # cross-compiling, it is suggested that this macro be modified via the command
125 # line (since nmake itself does not provide a built-in method to guess it).
126 # For example, to use the x86 compiler when cross-compiling for x64, a command
127 # line similar to the following could be used (all on one line):
129 #     nmake /f Makefile.msc sqlite3.dll
130 #           XCOMPILE=1 USE_NATIVE_LIBPATHS=1
132 # Alternatively, the full path and file name to the compiler binary for the
133 # platform the compilation process is taking place may be specified (all on
134 # one line):
136 #     nmake /f Makefile.msc sqlite3.dll
137 #           "NCC=""%VCINSTALLDIR%\bin\cl.exe"""
138 #           USE_NATIVE_LIBPATHS=1
140 !IFDEF NCC
141 NCC = $(NCC:\\=\)
142 !ELSEIF $(XCOMPILE)!=0
143 NCC = "$(VCINSTALLDIR)\bin\cl.exe"
144 NCC = $(NCC:\\=\)
145 !ELSE
146 NCC = $(CC)
147 !ENDIF
149 # Check for the MSVC runtime library path macro.  Othertise, this
150 # value will default to the 'lib' directory underneath the MSVC
151 # installation directory.
153 !IFNDEF NCRTLIBPATH
154 NCRTLIBPATH = $(VCINSTALLDIR)\lib
155 !ENDIF
157 NCRTLIBPATH = $(NCRTLIBPATH:\\=\)
159 # Check for the Platform SDK library path macro.  Othertise, this
160 # value will default to the 'lib' directory underneath the Windows
161 # SDK installation directory (the environment variable used appears
162 # to be available when using Visual C++ 2008 or later via the
163 # command line).
165 !IFNDEF NSDKLIBPATH
166 NSDKLIBPATH = $(WINDOWSSDKDIR)\lib
167 !ENDIF
169 NSDKLIBPATH = $(NSDKLIBPATH:\\=\)
171 # C compiler and options for use in building executables that
172 # will run on the platform that is doing the build.
174 BCC = $(NCC) -W3
176 # Check if the native library paths should be used when compiling
177 # the command line tools used during the compilation process.  If
178 # so, set the necessary macro now.
180 !IF $(USE_NATIVE_LIBPATHS)!=0
181 NLTLIBPATHS = "/LIBPATH:$(NCRTLIBPATH)" "/LIBPATH:$(NSDKLIBPATH)"
182 !ENDIF
184 # C compiler and options for use in building executables that
185 # will run on the target platform.  (BCC and TCC are usually the
186 # same unless your are cross-compiling.)
188 TCC = $(CC) -W3 -DSQLITE_OS_WIN=1 -I$(TOP) -I$(TOP)\src -fp:precise
189 RCC = $(RC) -DSQLITE_OS_WIN=1 -I$(TOP) -I$(TOP)\src
191 # When compiling the library for use in the WinRT environment,
192 # the following compile-time options must be used as well to
193 # disable use of Win32 APIs that are not available and to enable
194 # use of Win32 APIs that are specific to Windows 8 and/or WinRT.
196 !IF $(FOR_WINRT)!=0
197 TCC = $(TCC) -DSQLITE_OS_WINRT=1
198 RCC = $(RCC) -DSQLITE_OS_WINRT=1
199 TCC = $(TCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP
200 RCC = $(RCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP
201 !ENDIF
203 # Also, we need to dynamically link to the correct MSVC runtime
204 # when compiling for WinRT (e.g. debug or release) OR if the
205 # USE_CRT_DLL option is set to force dynamically linking to the
206 # MSVC runtime library.
208 !IF $(FOR_WINRT)!=0 || $(USE_CRT_DLL)!=0
209 !IF $(DEBUG)>0
210 TCC = $(TCC) -MDd
211 BCC = $(BCC) -MDd
212 !ELSE
213 TCC = $(TCC) -MD
214 BCC = $(BCC) -MD
215 !ENDIF
216 !ELSE
217 !IF $(DEBUG)>0
218 TCC = $(TCC) -MTd
219 BCC = $(BCC) -MTd
220 !ELSE
221 TCC = $(TCC) -MT
222 BCC = $(BCC) -MT
223 !ENDIF
224 !ENDIF
226 # The mksqlite3c.tcl and mksqlite3h.tcl scripts will pull in
227 # any extension header files by default.  For non-amalgamation
228 # builds, we need to make sure the compiler can find these.
230 !IF $(USE_AMALGAMATION)==0
231 TCC = $(TCC) -I$(TOP)\ext\fts3
232 RCC = $(RCC) -I$(TOP)\ext\fts3
233 TCC = $(TCC) -I$(TOP)\ext\rtree
234 RCC = $(RCC) -I$(TOP)\ext\rtree
235 !ENDIF
237 # Define -DNDEBUG to compile without debugging (i.e., for production usage)
238 # Omitting the define will cause extra debugging code to be inserted and
239 # includes extra comments when "EXPLAIN stmt" is used.
241 !IF $(DEBUG)==0
242 TCC = $(TCC) -DNDEBUG
243 BCC = $(BCC) -DNDEBUG
244 RCC = $(RCC) -DNDEBUG
245 !ENDIF
247 !IF $(DEBUG)>1
248 TCC = $(TCC) -DSQLITE_DEBUG
249 RCC = $(RCC) -DSQLITE_DEBUG
250 !ENDIF
252 !IF $(DEBUG)>3
253 TCC = $(TCC) -DSQLITE_DEBUG_OS_TRACE=1
254 RCC = $(RCC) -DSQLITE_DEBUG_OS_TRACE=1
255 !ENDIF
257 !IF $(DEBUG)>4
258 TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE
259 RCC = $(RCC) -DSQLITE_ENABLE_IOTRACE
260 !ENDIF
263 # Prevent warnings about "insecure" MSVC runtime library functions
264 # being used.
266 TCC = $(TCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS
267 BCC = $(BCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS
268 RCC = $(RCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS
271 # Prevent warnings about "deprecated" POSIX functions being used.
273 TCC = $(TCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS
274 BCC = $(BCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS
275 RCC = $(RCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS
278 # Use the SQLite debugging heap subsystem?
280 !IF $(MEMDEBUG)!=0
281 TCC = $(TCC) -DSQLITE_MEMDEBUG=1
282 RCC = $(RCC) -DSQLITE_MEMDEBUG=1
285 # Use native Win32 heap subsystem instead of malloc/free?
287 !ELSEIF $(WIN32HEAP)!=0
288 TCC = $(TCC) -DSQLITE_WIN32_MALLOC=1
289 RCC = $(RCC) -DSQLITE_WIN32_MALLOC=1
292 # Validate the heap on every call into the native Win32 heap subsystem?
294 !IF $(DEBUG)>2
295 TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1
296 RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1
297 !ENDIF
298 !ENDIF
300 # The locations of the Tcl header and library files.  Also, the library that
301 # non-stubs enabled programs using Tcl must link against.  These variables
302 # (TCLINCDIR, TCLLIBDIR, and LIBTCL) may be overridden via the environment
303 # prior to running nmake in order to match the actual installed location and
304 # version on this machine.
306 !IFNDEF TCLINCDIR
307 TCLINCDIR = c:\tcl\include
308 !ENDIF
310 !IFNDEF TCLLIBDIR
311 TCLLIBDIR = c:\tcl\lib
312 !ENDIF
314 !IFNDEF LIBTCL
315 LIBTCL = tcl85.lib
316 !ENDIF
318 # The locations of the ICU header and library files.  These variables
319 # (ICUINCDIR, ICULIBDIR, and LIBICU) may be overridden via the environment
320 # prior to running nmake in order to match the actual installed location on
321 # this machine.
323 !IFNDEF ICUINCDIR
324 ICUINCDIR = c:\icu\include
325 !ENDIF
327 !IFNDEF ICULIBDIR
328 ICULIBDIR = c:\icu\lib
329 !ENDIF
331 !IFNDEF LIBICU
332 LIBICU = icuuc.lib icuin.lib
333 !ENDIF
335 # This is the command to use for tclsh - normally just "tclsh", but we may
336 # know the specific version we want to use.  This variable (TCLSH_CMD) may be
337 # overridden via the environment prior to running nmake in order to select a
338 # specific Tcl shell to use.
340 !IFNDEF TCLSH_CMD
341 TCLSH_CMD = tclsh85
342 !ENDIF
344 # Compiler options needed for programs that use the readline() library.
346 READLINE_FLAGS = -DHAVE_READLINE=0
348 # The library that programs using readline() must link against.
350 LIBREADLINE =
352 # Should the database engine be compiled threadsafe
354 TCC = $(TCC) -DSQLITE_THREADSAFE=1
355 RCC = $(RCC) -DSQLITE_THREADSAFE=1
357 # Do threads override each others locks by default (1), or do we test (-1)
359 TCC = $(TCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1
360 RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1
362 # Any target libraries which libsqlite must be linked against
364 !IFNDEF TLIBS
365 TLIBS =
366 !ENDIF
368 # Flags controlling use of the in memory btree implementation
370 # SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to
371 # default to file, 2 to default to memory, and 3 to force temporary
372 # tables to always be in memory.
374 TCC = $(TCC) -DSQLITE_TEMP_STORE=1
375 RCC = $(RCC) -DSQLITE_TEMP_STORE=1
377 # Enable/disable loadable extensions, and other optional features
378 # based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*).
379 # The same set of OMIT and ENABLE flags should be passed to the
380 # LEMON parser generator and the mkkeywordhash tool as well.
382 # BEGIN standard options
383 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1
384 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1
385 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1
386 # END standard options
388 # BEGIN required Windows option
389 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100
390 # END required Windows option
392 TCC = $(TCC) $(OPT_FEATURE_FLAGS)
393 RCC = $(RCC) $(OPT_FEATURE_FLAGS)
395 # Add in any optional parameters specified on the make commane line
396 # ie.  make "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1".
397 TCC = $(TCC) $(OPTS)
398 RCC = $(RCC) $(OPTS)
400 # If symbols are enabled, enable PDBs.
401 # If debugging is enabled, disable all optimizations and enable PDBs.
402 !IF $(DEBUG)>0
403 TCC = $(TCC) -Od -D_DEBUG
404 BCC = $(BCC) -Od -D_DEBUG
405 RCC = $(RCC) -D_DEBUG
406 !ELSE
407 TCC = $(TCC) -O2
408 BCC = $(BCC) -O2
409 !ENDIF
411 !IF $(DEBUG)>0 || $(SYMBOLS)!=0
412 TCC = $(TCC) -Zi
413 BCC = $(BCC) -Zi
414 !ENDIF
416 # If ICU support is enabled, add the compiler options for it.
417 !IF $(USE_ICU)!=0
418 TCC = $(TCC) -DSQLITE_ENABLE_ICU=1
419 RCC = $(RCC) -DSQLITE_ENABLE_ICU=1
420 TCC = $(TCC) -I$(TOP)\ext\icu
421 RCC = $(RCC) -I$(TOP)\ext\icu
422 TCC = $(TCC) -I$(ICUINCDIR)
423 RCC = $(RCC) -I$(ICUINCDIR)
424 !ENDIF
426 # Command line prefixes for compiling code, compiling resources,
427 # linking, etc.
428 LTCOMPILE = $(TCC) -Fo$@
429 LTRCOMPILE = $(RCC) -r
430 LTLIB = lib.exe
431 LTLINK = $(TCC) -Fe$@
433 # If a platform was set, force the linker to target that.
434 # Note that the vcvars*.bat family of batch files typically
435 # set this for you.  Otherwise, the linker will attempt
436 # to deduce the binary type based on the object files.
437 !IFDEF PLATFORM
438 LTLINKOPTS = /MACHINE:$(PLATFORM)
439 LTLIBOPTS = /MACHINE:$(PLATFORM)
440 !ENDIF
442 # When compiling for use in the WinRT environment, the following
443 # linker option must be used to mark the executable as runnable
444 # only in the context of an application container.
446 !IF $(FOR_WINRT)!=0
447 LTLINKOPTS = $(LTLINKOPTS) /APPCONTAINER
448 !ENDIF
450 # If either debugging or symbols are enabled, enable PDBs.
451 !IF $(DEBUG)>0 || $(SYMBOLS)!=0
452 LDFLAGS = /DEBUG
453 !ENDIF
455 # Start with the Tcl related linker options.
456 !IF $(NO_TCL)==0
457 LTLIBPATHS = /LIBPATH:$(TCLLIBDIR)
458 LTLIBS = $(LIBTCL)
459 !ENDIF
461 # If ICU support is enabled, add the linker options for it.
462 !IF $(USE_ICU)!=0
463 LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR)
464 LTLIBS = $(LTLIBS) $(LIBICU)
465 !ENDIF
467 # nawk compatible awk.
468 NAWK = gawk.exe
470 # You should not have to change anything below this line
471 ###############################################################################
473 # Object files for the SQLite library (non-amalgamation).
475 LIBOBJS0 = vdbe.lo parse.lo alter.lo analyze.lo attach.lo auth.lo \
476          backup.lo bitvec.lo btmutex.lo btree.lo build.lo \
477          callback.lo complete.lo ctime.lo date.lo delete.lo \
478          expr.lo fault.lo fkey.lo \
479          fts3.lo fts3_aux.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo \
480          fts3_porter.lo fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo \
481          fts3_tokenize_vtab.lo fts3_unicode.lo fts3_unicode2.lo fts3_write.lo \
482          func.lo global.lo hash.lo \
483          icu.lo insert.lo journal.lo legacy.lo loadext.lo \
484          main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \
485          memjournal.lo \
486          mutex.lo mutex_noop.lo mutex_unix.lo mutex_w32.lo \
487          notify.lo opcodes.lo os.lo os_unix.lo os_win.lo \
488          pager.lo pcache.lo pcache1.lo pragma.lo prepare.lo printf.lo \
489          random.lo resolve.lo rowset.lo rtree.lo select.lo status.lo \
490          table.lo tokenize.lo trigger.lo \
491          update.lo util.lo vacuum.lo \
492          vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbemem.lo vdbesort.lo \
493          vdbetrace.lo wal.lo walker.lo where.lo utf.lo vtab.lo
495 # Object files for the amalgamation.
497 LIBOBJS1 = sqlite3.lo
499 # Determine the real value of LIBOBJ based on the 'configure' script
501 !IF $(USE_AMALGAMATION)==0
502 LIBOBJ = $(LIBOBJS0)
503 !ELSE
504 LIBOBJ = $(LIBOBJS1)
505 !ENDIF
507 # Determine if embedded resource compilation and usage are enabled.
509 !IF $(USE_RC)!=0
510 LIBRESOBJS = sqlite3res.lo
511 !ELSE
512 LIBRESOBJS =
513 !ENDIF
515 # All of the source code files.
517 SRC = \
518   $(TOP)\src\alter.c \
519   $(TOP)\src\analyze.c \
520   $(TOP)\src\attach.c \
521   $(TOP)\src\auth.c \
522   $(TOP)\src\backup.c \
523   $(TOP)\src\bitvec.c \
524   $(TOP)\src\btmutex.c \
525   $(TOP)\src\btree.c \
526   $(TOP)\src\btree.h \
527   $(TOP)\src\btreeInt.h \
528   $(TOP)\src\build.c \
529   $(TOP)\src\callback.c \
530   $(TOP)\src\complete.c \
531   $(TOP)\src\ctime.c \
532   $(TOP)\src\date.c \
533   $(TOP)\src\delete.c \
534   $(TOP)\src\expr.c \
535   $(TOP)\src\fault.c \
536   $(TOP)\src\fkey.c \
537   $(TOP)\src\func.c \
538   $(TOP)\src\global.c \
539   $(TOP)\src\hash.c \
540   $(TOP)\src\hash.h \
541   $(TOP)\src\hwtime.h \
542   $(TOP)\src\insert.c \
543   $(TOP)\src\journal.c \
544   $(TOP)\src\legacy.c \
545   $(TOP)\src\loadext.c \
546   $(TOP)\src\main.c \
547   $(TOP)\src\malloc.c \
548   $(TOP)\src\mem0.c \
549   $(TOP)\src\mem1.c \
550   $(TOP)\src\mem2.c \
551   $(TOP)\src\mem3.c \
552   $(TOP)\src\mem5.c \
553   $(TOP)\src\memjournal.c \
554   $(TOP)\src\mutex.c \
555   $(TOP)\src\mutex.h \
556   $(TOP)\src\mutex_noop.c \
557   $(TOP)\src\mutex_unix.c \
558   $(TOP)\src\mutex_w32.c \
559   $(TOP)\src\notify.c \
560   $(TOP)\src\os.c \
561   $(TOP)\src\os.h \
562   $(TOP)\src\os_common.h \
563   $(TOP)\src\os_unix.c \
564   $(TOP)\src\os_win.c \
565   $(TOP)\src\pager.c \
566   $(TOP)\src\pager.h \
567   $(TOP)\src\parse.y \
568   $(TOP)\src\pcache.c \
569   $(TOP)\src\pcache.h \
570   $(TOP)\src\pcache1.c \
571   $(TOP)\src\pragma.c \
572   $(TOP)\src\prepare.c \
573   $(TOP)\src\printf.c \
574   $(TOP)\src\random.c \
575   $(TOP)\src\resolve.c \
576   $(TOP)\src\rowset.c \
577   $(TOP)\src\select.c \
578   $(TOP)\src\status.c \
579   $(TOP)\src\shell.c \
580   $(TOP)\src\sqlite.h.in \
581   $(TOP)\src\sqlite3ext.h \
582   $(TOP)\src\sqliteInt.h \
583   $(TOP)\src\sqliteLimit.h \
584   $(TOP)\src\table.c \
585   $(TOP)\src\tclsqlite.c \
586   $(TOP)\src\tokenize.c \
587   $(TOP)\src\trigger.c \
588   $(TOP)\src\utf.c \
589   $(TOP)\src\update.c \
590   $(TOP)\src\util.c \
591   $(TOP)\src\vacuum.c \
592   $(TOP)\src\vdbe.c \
593   $(TOP)\src\vdbe.h \
594   $(TOP)\src\vdbeapi.c \
595   $(TOP)\src\vdbeaux.c \
596   $(TOP)\src\vdbeblob.c \
597   $(TOP)\src\vdbemem.c \
598   $(TOP)\src\vdbesort.c \
599   $(TOP)\src\vdbetrace.c \
600   $(TOP)\src\vdbeInt.h \
601   $(TOP)\src\vtab.c \
602   $(TOP)\src\wal.c \
603   $(TOP)\src\wal.h \
604   $(TOP)\src\walker.c \
605   $(TOP)\src\where.c
607 # Source code for extensions
609 SRC = $(SRC) \
610   $(TOP)\ext\fts1\fts1.c \
611   $(TOP)\ext\fts1\fts1.h \
612   $(TOP)\ext\fts1\fts1_hash.c \
613   $(TOP)\ext\fts1\fts1_hash.h \
614   $(TOP)\ext\fts1\fts1_porter.c \
615   $(TOP)\ext\fts1\fts1_tokenizer.h \
616   $(TOP)\ext\fts1\fts1_tokenizer1.c
617 SRC = $(SRC) \
618   $(TOP)\ext\fts2\fts2.c \
619   $(TOP)\ext\fts2\fts2.h \
620   $(TOP)\ext\fts2\fts2_hash.c \
621   $(TOP)\ext\fts2\fts2_hash.h \
622   $(TOP)\ext\fts2\fts2_icu.c \
623   $(TOP)\ext\fts2\fts2_porter.c \
624   $(TOP)\ext\fts2\fts2_tokenizer.h \
625   $(TOP)\ext\fts2\fts2_tokenizer.c \
626   $(TOP)\ext\fts2\fts2_tokenizer1.c
627 SRC = $(SRC) \
628   $(TOP)\ext\fts3\fts3.c \
629   $(TOP)\ext\fts3\fts3.h \
630   $(TOP)\ext\fts3\fts3Int.h \
631   $(TOP)\ext\fts3\fts3_aux.c \
632   $(TOP)\ext\fts3\fts3_expr.c \
633   $(TOP)\ext\fts3\fts3_hash.c \
634   $(TOP)\ext\fts3\fts3_hash.h \
635   $(TOP)\ext\fts3\fts3_icu.c \
636   $(TOP)\ext\fts3\fts3_porter.c \
637   $(TOP)\ext\fts3\fts3_snippet.c \
638   $(TOP)\ext\fts3\fts3_tokenizer.h \
639   $(TOP)\ext\fts3\fts3_tokenizer.c \
640   $(TOP)\ext\fts3\fts3_tokenizer1.c \
641   $(TOP)\ext\fts3\fts3_tokenize_vtab.c \
642   $(TOP)\ext\fts3\fts3_unicode.c \
643   $(TOP)\ext\fts3\fts3_unicode2.c \
644   $(TOP)\ext\fts3\fts3_write.c
645 SRC = $(SRC) \
646   $(TOP)\ext\icu\sqliteicu.h \
647   $(TOP)\ext\icu\icu.c
648 SRC = $(SRC) \
649   $(TOP)\ext\rtree\rtree.h \
650   $(TOP)\ext\rtree\rtree.c
653 # Generated source code files
655 SRC = $(SRC) \
656   keywordhash.h \
657   opcodes.c \
658   opcodes.h \
659   parse.c \
660   parse.h \
661   sqlite3.h
663 # Source code to the test files.
665 TESTSRC = \
666   $(TOP)\src\test1.c \
667   $(TOP)\src\test2.c \
668   $(TOP)\src\test3.c \
669   $(TOP)\src\test4.c \
670   $(TOP)\src\test5.c \
671   $(TOP)\src\test6.c \
672   $(TOP)\src\test7.c \
673   $(TOP)\src\test8.c \
674   $(TOP)\src\test9.c \
675   $(TOP)\src\test_autoext.c \
676   $(TOP)\src\test_async.c \
677   $(TOP)\src\test_backup.c \
678   $(TOP)\src\test_btree.c \
679   $(TOP)\src\test_config.c \
680   $(TOP)\src\test_demovfs.c \
681   $(TOP)\src\test_devsym.c \
682   $(TOP)\src\test_fs.c \
683   $(TOP)\src\test_func.c \
684   $(TOP)\src\test_hexio.c \
685   $(TOP)\src\test_init.c \
686   $(TOP)\src\test_intarray.c \
687   $(TOP)\src\test_journal.c \
688   $(TOP)\src\test_malloc.c \
689   $(TOP)\src\test_multiplex.c \
690   $(TOP)\src\test_mutex.c \
691   $(TOP)\src\test_onefile.c \
692   $(TOP)\src\test_osinst.c \
693   $(TOP)\src\test_pcache.c \
694   $(TOP)\src\test_quota.c \
695   $(TOP)\src\test_rtree.c \
696   $(TOP)\src\test_schema.c \
697   $(TOP)\src\test_server.c \
698   $(TOP)\src\test_superlock.c \
699   $(TOP)\src\test_syscall.c \
700   $(TOP)\src\test_stat.c \
701   $(TOP)\src\test_tclvar.c \
702   $(TOP)\src\test_thread.c \
703   $(TOP)\src\test_vfs.c \
704   $(TOP)\src\test_wsd.c \
705   $(TOP)\ext\fts3\fts3_term.c \
706   $(TOP)\ext\fts3\fts3_test.c
708 # Statically linked extensions
710 TESTEXT = \
711   $(TOP)\ext\misc\amatch.c \
712   $(TOP)\ext\misc\closure.c \
713   $(TOP)\ext\misc\fuzzer.c \
714   $(TOP)\ext\misc\ieee754.c \
715   $(TOP)\ext\misc\nextchar.c \
716   $(TOP)\ext\misc\percentile.c \
717   $(TOP)\ext\misc\regexp.c \
718   $(TOP)\ext\misc\spellfix.c \
719   $(TOP)\ext\misc\wholenumber.c
722 # Source code to the library files needed by the test fixture
724 TESTSRC2 = \
725   $(TOP)\src\attach.c \
726   $(TOP)\src\backup.c \
727   $(TOP)\src\bitvec.c \
728   $(TOP)\src\btree.c \
729   $(TOP)\src\build.c \
730   $(TOP)\src\ctime.c \
731   $(TOP)\src\date.c \
732   $(TOP)\src\expr.c \
733   $(TOP)\src\func.c \
734   $(TOP)\src\insert.c \
735   $(TOP)\src\wal.c \
736   $(TOP)\src\main.c \
737   $(TOP)\src\mem5.c \
738   $(TOP)\src\os.c \
739   $(TOP)\src\os_unix.c \
740   $(TOP)\src\os_win.c \
741   $(TOP)\src\pager.c \
742   $(TOP)\src\pragma.c \
743   $(TOP)\src\prepare.c \
744   $(TOP)\src\printf.c \
745   $(TOP)\src\random.c \
746   $(TOP)\src\pcache.c \
747   $(TOP)\src\pcache1.c \
748   $(TOP)\src\select.c \
749   $(TOP)\src\tokenize.c \
750   $(TOP)\src\utf.c \
751   $(TOP)\src\util.c \
752   $(TOP)\src\vdbeapi.c \
753   $(TOP)\src\vdbeaux.c \
754   $(TOP)\src\vdbe.c \
755   $(TOP)\src\vdbemem.c \
756   $(TOP)\src\vdbesort.c \
757   $(TOP)\src\vdbetrace.c \
758   $(TOP)\src\where.c \
759   parse.c \
760   $(TOP)\ext\fts3\fts3.c \
761   $(TOP)\ext\fts3\fts3_aux.c \
762   $(TOP)\ext\fts3\fts3_expr.c \
763   $(TOP)\ext\fts3\fts3_tokenizer.c \
764   $(TOP)\ext\fts3\fts3_tokenize_vtab.c \
765   $(TOP)\ext\fts3\fts3_unicode.c \
766   $(TOP)\ext\fts3\fts3_unicode2.c \
767   $(TOP)\ext\fts3\fts3_write.c \
768   $(TOP)\ext\async\sqlite3async.c
770 # Header files used by all library source files.
772 HDR = \
773    $(TOP)\src\btree.h \
774    $(TOP)\src\btreeInt.h \
775    $(TOP)\src\hash.h \
776    $(TOP)\src\hwtime.h \
777    keywordhash.h \
778    $(TOP)\src\mutex.h \
779    opcodes.h \
780    $(TOP)\src\os.h \
781    $(TOP)\src\os_common.h \
782    $(TOP)\src\pager.h \
783    $(TOP)\src\pcache.h \
784    parse.h \
785    sqlite3.h \
786    $(TOP)\src\sqlite3ext.h \
787    $(TOP)\src\sqliteInt.h \
788    $(TOP)\src\sqliteLimit.h \
789    $(TOP)\src\vdbe.h \
790    $(TOP)\src\vdbeInt.h
792 # Header files used by extensions
794 EXTHDR = $(EXTHDR) \
795   $(TOP)\ext\fts1\fts1.h \
796   $(TOP)\ext\fts1\fts1_hash.h \
797   $(TOP)\ext\fts1\fts1_tokenizer.h
798 EXTHDR = $(EXTHDR) \
799   $(TOP)\ext\fts2\fts2.h \
800   $(TOP)\ext\fts2\fts2_hash.h \
801   $(TOP)\ext\fts2\fts2_tokenizer.h
802 EXTHDR = $(EXTHDR) \
803   $(TOP)\ext\fts3\fts3.h \
804   $(TOP)\ext\fts3\fts3Int.h \
805   $(TOP)\ext\fts3\fts3_hash.h \
806   $(TOP)\ext\fts3\fts3_tokenizer.h
807 EXTHDR = $(EXTHDR) \
808   $(TOP)\ext\rtree\rtree.h
809 EXTHDR = $(EXTHDR) \
810   $(TOP)\ext\icu\sqliteicu.h
811 EXTHDR = $(EXTHDR) \
812   $(TOP)\ext\rtree\sqlite3rtree.h
814 # This is the default Makefile target.  The objects listed here
815 # are what get build when you type just "make" with no arguments.
817 all:    dll libsqlite3.lib sqlite3.exe libtclsqlite3.lib
819 libsqlite3.lib: $(LIBOBJ)
820         $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS)
822 libtclsqlite3.lib:      tclsqlite.lo libsqlite3.lib
823         $(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCL:tcl=tclstub) $(TLIBS)
825 sqlite3.exe:    $(TOP)\src\shell.c libsqlite3.lib $(LIBRESOBJS) sqlite3.h
826         $(LTLINK) $(READLINE_FLAGS) \
827                 $(TOP)\src\shell.c \
828                 /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS)
830 mptester.exe:   $(TOP)\mptest\mptest.c libsqlite3.lib $(LIBRESOBJS) sqlite3.h
831         $(LTLINK) $(TOP)\mptest\mptest.c \
832                 /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS)
834 # This target creates a directory named "tsrc" and fills it with
835 # copies of all of the C source code and header files needed to
836 # build on the target system.  Some of the C source code and header
837 # files are automatically generated.  This target takes care of
838 # all that automatic generation.
840 .target_source: $(SRC) $(TOP)\tool\vdbe-compress.tcl
841         -rmdir /S/Q tsrc
842         -mkdir tsrc
843         for %i in ($(SRC)) do copy /Y %i tsrc
844         del /Q tsrc\sqlite.h.in tsrc\parse.y
845         $(TCLSH_CMD) $(TOP)\tool\vdbe-compress.tcl < tsrc\vdbe.c > vdbe.new
846         move vdbe.new tsrc\vdbe.c
847         echo > .target_source
849 sqlite3.c:      .target_source $(TOP)\tool\mksqlite3c.tcl
850         $(TCLSH_CMD) $(TOP)\tool\mksqlite3c.tcl
851         copy tsrc\shell.c .
852         copy tsrc\sqlite3ext.h .
854 sqlite3-all.c:  sqlite3.c $(TOP)\tool\split-sqlite3c.tcl
855         $(TCLSH_CMD) $(TOP)\tool\split-sqlite3c.tcl
857 # Rule to build the amalgamation
859 sqlite3.lo:     sqlite3.c
860         $(LTCOMPILE) -c sqlite3.c
862 # Rules to build the LEMON compiler generator
864 lempar.c:       $(TOP)\src\lempar.c
865         copy $(TOP)\src\lempar.c .
867 lemon.exe:      $(TOP)\tool\lemon.c lempar.c
868         $(BCC) -Daccess=_access -Fe$@ $(TOP)\tool\lemon.c /link $(NLTLIBPATHS)
870 # Rules to build individual *.lo files from generated *.c files. This
871 # applies to:
873 #     parse.lo
874 #     opcodes.lo
876 parse.lo:       parse.c $(HDR)
877         $(LTCOMPILE) -c parse.c
879 opcodes.lo:     opcodes.c
880         $(LTCOMPILE) -c opcodes.c
882 # Rule to build the Win32 resources object file.
884 !IF $(USE_RC)!=0
885 $(LIBRESOBJS):  $(TOP)\src\sqlite3.rc $(HDR)
886         echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h
887         for /F %%V in ('type "$(TOP)\VERSION"') do ( \
888                 echo #define SQLITE_RESOURCE_VERSION %%V \
889                         | $(NAWK) "/.*/ { gsub(/[.]/,\",\");print }" >> sqlite3rc.h \
890         )
891         echo #endif >> sqlite3rc.h
892         $(LTRCOMPILE) -fo $(LIBRESOBJS) $(TOP)\src\sqlite3.rc
893 !ENDIF
895 # Rules to build individual *.lo files from files in the src directory.
897 alter.lo:       $(TOP)\src\alter.c $(HDR)
898         $(LTCOMPILE) -c $(TOP)\src\alter.c
900 analyze.lo:     $(TOP)\src\analyze.c $(HDR)
901         $(LTCOMPILE) -c $(TOP)\src\analyze.c
903 attach.lo:      $(TOP)\src\attach.c $(HDR)
904         $(LTCOMPILE) -c $(TOP)\src\attach.c
906 auth.lo:        $(TOP)\src\auth.c $(HDR)
907         $(LTCOMPILE) -c $(TOP)\src\auth.c
909 backup.lo:      $(TOP)\src\backup.c $(HDR)
910         $(LTCOMPILE) -c $(TOP)\src\backup.c
912 bitvec.lo:      $(TOP)\src\bitvec.c $(HDR)
913         $(LTCOMPILE) -c $(TOP)\src\bitvec.c
915 btmutex.lo:     $(TOP)\src\btmutex.c $(HDR)
916         $(LTCOMPILE) -c $(TOP)\src\btmutex.c
918 btree.lo:       $(TOP)\src\btree.c $(HDR) $(TOP)\src\pager.h
919         $(LTCOMPILE) -c $(TOP)\src\btree.c
921 build.lo:       $(TOP)\src\build.c $(HDR)
922         $(LTCOMPILE) -c $(TOP)\src\build.c
924 callback.lo:    $(TOP)\src\callback.c $(HDR)
925         $(LTCOMPILE) -c $(TOP)\src\callback.c
927 complete.lo:    $(TOP)\src\complete.c $(HDR)
928         $(LTCOMPILE) -c $(TOP)\src\complete.c
930 ctime.lo:       $(TOP)\src\ctime.c $(HDR)
931         $(LTCOMPILE) -c $(TOP)\src\ctime.c
933 date.lo:        $(TOP)\src\date.c $(HDR)
934         $(LTCOMPILE) -c $(TOP)\src\date.c
936 delete.lo:      $(TOP)\src\delete.c $(HDR)
937         $(LTCOMPILE) -c $(TOP)\src\delete.c
939 expr.lo:        $(TOP)\src\expr.c $(HDR)
940         $(LTCOMPILE) -c $(TOP)\src\expr.c
942 fault.lo:       $(TOP)\src\fault.c $(HDR)
943         $(LTCOMPILE) -c $(TOP)\src\fault.c
945 fkey.lo:        $(TOP)\src\fkey.c $(HDR)
946         $(LTCOMPILE) -c $(TOP)\src\fkey.c
948 func.lo:        $(TOP)\src\func.c $(HDR)
949         $(LTCOMPILE) -c $(TOP)\src\func.c
951 global.lo:      $(TOP)\src\global.c $(HDR)
952         $(LTCOMPILE) -c $(TOP)\src\global.c
954 hash.lo:        $(TOP)\src\hash.c $(HDR)
955         $(LTCOMPILE) -c $(TOP)\src\hash.c
957 insert.lo:      $(TOP)\src\insert.c $(HDR)
958         $(LTCOMPILE) -c $(TOP)\src\insert.c
960 journal.lo:     $(TOP)\src\journal.c $(HDR)
961         $(LTCOMPILE) -c $(TOP)\src\journal.c
963 legacy.lo:      $(TOP)\src\legacy.c $(HDR)
964         $(LTCOMPILE) -c $(TOP)\src\legacy.c
966 loadext.lo:     $(TOP)\src\loadext.c $(HDR)
967         $(LTCOMPILE) -c $(TOP)\src\loadext.c
969 main.lo:        $(TOP)\src\main.c $(HDR)
970         $(LTCOMPILE) -c $(TOP)\src\main.c
972 malloc.lo:      $(TOP)\src\malloc.c $(HDR)
973         $(LTCOMPILE) -c $(TOP)\src\malloc.c
975 mem0.lo:        $(TOP)\src\mem0.c $(HDR)
976         $(LTCOMPILE) -c $(TOP)\src\mem0.c
978 mem1.lo:        $(TOP)\src\mem1.c $(HDR)
979         $(LTCOMPILE) -c $(TOP)\src\mem1.c
981 mem2.lo:        $(TOP)\src\mem2.c $(HDR)
982         $(LTCOMPILE) -c $(TOP)\src\mem2.c
984 mem3.lo:        $(TOP)\src\mem3.c $(HDR)
985         $(LTCOMPILE) -c $(TOP)\src\mem3.c
987 mem5.lo:        $(TOP)\src\mem5.c $(HDR)
988         $(LTCOMPILE) -c $(TOP)\src\mem5.c
990 memjournal.lo:  $(TOP)\src\memjournal.c $(HDR)
991         $(LTCOMPILE) -c $(TOP)\src\memjournal.c
993 mutex.lo:       $(TOP)\src\mutex.c $(HDR)
994         $(LTCOMPILE) -c $(TOP)\src\mutex.c
996 mutex_noop.lo:  $(TOP)\src\mutex_noop.c $(HDR)
997         $(LTCOMPILE) -c $(TOP)\src\mutex_noop.c
999 mutex_unix.lo:  $(TOP)\src\mutex_unix.c $(HDR)
1000         $(LTCOMPILE) -c $(TOP)\src\mutex_unix.c
1002 mutex_w32.lo:   $(TOP)\src\mutex_w32.c $(HDR)
1003         $(LTCOMPILE) -c $(TOP)\src\mutex_w32.c
1005 notify.lo:      $(TOP)\src\notify.c $(HDR)
1006         $(LTCOMPILE) -c $(TOP)\src\notify.c
1008 pager.lo:       $(TOP)\src\pager.c $(HDR) $(TOP)\src\pager.h
1009         $(LTCOMPILE) -c $(TOP)\src\pager.c
1011 pcache.lo:      $(TOP)\src\pcache.c $(HDR) $(TOP)\src\pcache.h
1012         $(LTCOMPILE) -c $(TOP)\src\pcache.c
1014 pcache1.lo:     $(TOP)\src\pcache1.c $(HDR) $(TOP)\src\pcache.h
1015         $(LTCOMPILE) -c $(TOP)\src\pcache1.c
1017 os.lo:  $(TOP)\src\os.c $(HDR)
1018         $(LTCOMPILE) -c $(TOP)\src\os.c
1020 os_unix.lo:     $(TOP)\src\os_unix.c $(HDR)
1021         $(LTCOMPILE) -c $(TOP)\src\os_unix.c
1023 os_win.lo:      $(TOP)\src\os_win.c $(HDR)
1024         $(LTCOMPILE) -c $(TOP)\src\os_win.c
1026 pragma.lo:      $(TOP)\src\pragma.c $(HDR)
1027         $(LTCOMPILE) -c $(TOP)\src\pragma.c
1029 prepare.lo:     $(TOP)\src\prepare.c $(HDR)
1030         $(LTCOMPILE) -c $(TOP)\src\prepare.c
1032 printf.lo:      $(TOP)\src\printf.c $(HDR)
1033         $(LTCOMPILE) -c $(TOP)\src\printf.c
1035 random.lo:      $(TOP)\src\random.c $(HDR)
1036         $(LTCOMPILE) -c $(TOP)\src\random.c
1038 resolve.lo:     $(TOP)\src\resolve.c $(HDR)
1039         $(LTCOMPILE) -c $(TOP)\src\resolve.c
1041 rowset.lo:      $(TOP)\src\rowset.c $(HDR)
1042         $(LTCOMPILE) -c $(TOP)\src\rowset.c
1044 select.lo:      $(TOP)\src\select.c $(HDR)
1045         $(LTCOMPILE) -c $(TOP)\src\select.c
1047 status.lo:      $(TOP)\src\status.c $(HDR)
1048         $(LTCOMPILE) -c $(TOP)\src\status.c
1050 table.lo:       $(TOP)\src\table.c $(HDR)
1051         $(LTCOMPILE) -c $(TOP)\src\table.c
1053 tokenize.lo:    $(TOP)\src\tokenize.c keywordhash.h $(HDR)
1054         $(LTCOMPILE) -c $(TOP)\src\tokenize.c
1056 trigger.lo:     $(TOP)\src\trigger.c $(HDR)
1057         $(LTCOMPILE) -c $(TOP)\src\trigger.c
1059 update.lo:      $(TOP)\src\update.c $(HDR)
1060         $(LTCOMPILE) -c $(TOP)\src\update.c
1062 utf.lo: $(TOP)\src\utf.c $(HDR)
1063         $(LTCOMPILE) -c $(TOP)\src\utf.c
1065 util.lo:        $(TOP)\src\util.c $(HDR)
1066         $(LTCOMPILE) -c $(TOP)\src\util.c
1068 vacuum.lo:      $(TOP)\src\vacuum.c $(HDR)
1069         $(LTCOMPILE) -c $(TOP)\src\vacuum.c
1071 vdbe.lo:        $(TOP)\src\vdbe.c $(HDR)
1072         $(LTCOMPILE) -c $(TOP)\src\vdbe.c
1074 vdbeapi.lo:     $(TOP)\src\vdbeapi.c $(HDR)
1075         $(LTCOMPILE) -c $(TOP)\src\vdbeapi.c
1077 vdbeaux.lo:     $(TOP)\src\vdbeaux.c $(HDR)
1078         $(LTCOMPILE) -c $(TOP)\src\vdbeaux.c
1080 vdbeblob.lo:    $(TOP)\src\vdbeblob.c $(HDR)
1081         $(LTCOMPILE) -c $(TOP)\src\vdbeblob.c
1083 vdbemem.lo:     $(TOP)\src\vdbemem.c $(HDR)
1084         $(LTCOMPILE) -c $(TOP)\src\vdbemem.c
1086 vdbesort.lo:    $(TOP)\src\vdbesort.c $(HDR)
1087         $(LTCOMPILE) -c $(TOP)\src\vdbesort.c
1089 vdbetrace.lo:   $(TOP)\src\vdbetrace.c $(HDR)
1090         $(LTCOMPILE) -c $(TOP)\src\vdbetrace.c
1092 vtab.lo:        $(TOP)\src\vtab.c $(HDR)
1093         $(LTCOMPILE) -c $(TOP)\src\vtab.c
1095 wal.lo: $(TOP)\src\wal.c $(HDR)
1096         $(LTCOMPILE) -c $(TOP)\src\wal.c
1098 walker.lo:      $(TOP)\src\walker.c $(HDR)
1099         $(LTCOMPILE) -c $(TOP)\src\walker.c
1101 where.lo:       $(TOP)\src\where.c $(HDR)
1102         $(LTCOMPILE) -c $(TOP)\src\where.c
1104 tclsqlite.lo:   $(TOP)\src\tclsqlite.c $(HDR)
1105         $(LTCOMPILE) -DUSE_TCL_STUBS=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c
1107 tclsqlite-shell.lo:     $(TOP)\src\tclsqlite.c $(HDR)
1108         $(LTCOMPILE) -DTCLSH=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c
1110 tclsqlite3.exe: tclsqlite-shell.lo libsqlite3.lib $(LIBRESOBJS)
1111         $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /OUT:$@ libsqlite3.lib tclsqlite-shell.lo $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
1113 # Rules to build opcodes.c and opcodes.h
1115 opcodes.c:      opcodes.h $(TOP)\mkopcodec.awk
1116         $(NAWK) -f $(TOP)\mkopcodec.awk opcodes.h > opcodes.c
1118 opcodes.h:      parse.h $(TOP)\src\vdbe.c $(TOP)\mkopcodeh.awk
1119         type parse.h $(TOP)\src\vdbe.c | $(NAWK) -f $(TOP)\mkopcodeh.awk > opcodes.h
1121 # Rules to build parse.c and parse.h - the outputs of lemon.
1123 parse.h:        parse.c
1125 parse.c:        $(TOP)\src\parse.y lemon.exe $(TOP)\addopcodes.awk
1126         del /Q parse.y parse.h parse.h.temp
1127         copy $(TOP)\src\parse.y .
1128         .\lemon.exe $(OPT_FEATURE_FLAGS) $(OPTS) parse.y
1129         move parse.h parse.h.temp
1130         $(NAWK) -f $(TOP)\addopcodes.awk parse.h.temp > parse.h
1132 sqlite3.h:      $(TOP)\src\sqlite.h.in $(TOP)\manifest.uuid $(TOP)\VERSION
1133         $(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl $(TOP) > sqlite3.h
1135 mkkeywordhash.exe:      $(TOP)\tool\mkkeywordhash.c
1136         $(BCC) -Fe$@ $(OPT_FEATURE_FLAGS) $(OPTS) $(TOP)\tool\mkkeywordhash.c /link $(NLTLIBPATHS)
1138 keywordhash.h:  $(TOP)\tool\mkkeywordhash.c mkkeywordhash.exe
1139         .\mkkeywordhash.exe > keywordhash.h
1143 # Rules to build the extension objects.
1145 icu.lo: $(TOP)\ext\icu\icu.c $(HDR) $(EXTHDR)
1146         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\icu\icu.c
1148 fts2.lo:        $(TOP)\ext\fts2\fts2.c $(HDR) $(EXTHDR)
1149         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2.c
1151 fts2_hash.lo:   $(TOP)\ext\fts2\fts2_hash.c $(HDR) $(EXTHDR)
1152         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_hash.c
1154 fts2_icu.lo:    $(TOP)\ext\fts2\fts2_icu.c $(HDR) $(EXTHDR)
1155         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_icu.c
1157 fts2_porter.lo: $(TOP)\ext\fts2\fts2_porter.c $(HDR) $(EXTHDR)
1158         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_porter.c
1160 fts2_tokenizer.lo:      $(TOP)\ext\fts2\fts2_tokenizer.c $(HDR) $(EXTHDR)
1161         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer.c
1163 fts2_tokenizer1.lo:     $(TOP)\ext\fts2\fts2_tokenizer1.c $(HDR) $(EXTHDR)
1164         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer1.c
1166 fts3.lo:        $(TOP)\ext\fts3\fts3.c $(HDR) $(EXTHDR)
1167         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3.c
1169 fts3_aux.lo:    $(TOP)\ext\fts3\fts3_aux.c $(HDR) $(EXTHDR)
1170         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_aux.c
1172 fts3_expr.lo:   $(TOP)\ext\fts3\fts3_expr.c $(HDR) $(EXTHDR)
1173         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_expr.c
1175 fts3_hash.lo:   $(TOP)\ext\fts3\fts3_hash.c $(HDR) $(EXTHDR)
1176         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_hash.c
1178 fts3_icu.lo:    $(TOP)\ext\fts3\fts3_icu.c $(HDR) $(EXTHDR)
1179         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_icu.c
1181 fts3_snippet.lo:        $(TOP)\ext\fts3\fts3_snippet.c $(HDR) $(EXTHDR)
1182         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_snippet.c
1184 fts3_porter.lo: $(TOP)\ext\fts3\fts3_porter.c $(HDR) $(EXTHDR)
1185         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_porter.c
1187 fts3_tokenizer.lo:      $(TOP)\ext\fts3\fts3_tokenizer.c $(HDR) $(EXTHDR)
1188         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer.c
1190 fts3_tokenizer1.lo:     $(TOP)\ext\fts3\fts3_tokenizer1.c $(HDR) $(EXTHDR)
1191         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer1.c
1193 fts3_tokenize_vtab.lo:  $(TOP)\ext\fts3\fts3_tokenize_vtab.c $(HDR) $(EXTHDR)
1194         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenize_vtab.c
1196 fts3_unicode.lo:        $(TOP)\ext\fts3\fts3_unicode.c $(HDR) $(EXTHDR)
1197         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode.c
1199 fts3_unicode2.lo:       $(TOP)\ext\fts3\fts3_unicode2.c $(HDR) $(EXTHDR)
1200         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode2.c
1202 fts3_write.lo:  $(TOP)\ext\fts3\fts3_write.c $(HDR) $(EXTHDR)
1203         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_write.c
1205 rtree.lo:       $(TOP)\ext\rtree\rtree.c $(HDR) $(EXTHDR)
1206         $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\rtree\rtree.c
1209 # Rules to build the 'testfixture' application.
1211 # If using the amalgamation, use sqlite3.c directly to build the test
1212 # fixture.  Otherwise link against libsqlite3.lib.  (This distinction is
1213 # necessary because the test fixture requires non-API symbols which are
1214 # hidden when the library is built via the amalgamation).
1216 TESTFIXTURE_FLAGS = -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1
1217 TESTFIXTURE_FLAGS = $(TESTFIXTURE_FLAGS) -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" -DSQLITE_CORE
1219 TESTFIXTURE_SRC0 = $(TESTEXT) $(TESTSRC2) libsqlite3.lib
1220 TESTFIXTURE_SRC1 = $(TESTEXT) sqlite3.c
1221 !IF $(USE_AMALGAMATION)==0
1222 TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC0)
1223 !ELSE
1224 TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC1)
1225 !ENDIF
1227 testfixture.exe:        $(TESTFIXTURE_SRC) $(LIBRESOBJS) $(HDR)
1228         $(LTLINK) -DSQLITE_NO_SYNC=1 $(TESTFIXTURE_FLAGS) \
1229                 -DBUILD_sqlite -I$(TCLINCDIR) \
1230                 $(TESTFIXTURE_SRC) \
1231                 /link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
1233 fulltest:       testfixture.exe sqlite3.exe
1234         .\testfixture.exe $(TOP)\test\all.test
1236 soaktest:       testfixture.exe sqlite3.exe
1237         .\testfixture.exe $(TOP)\test\all.test -soak=1
1239 fulltestonly:   testfixture.exe sqlite3.exe
1240         .\testfixture.exe $(TOP)\test\full.test
1242 queryplantest:  testfixture.exe sqlite3.exe
1243         .\testfixture.exe $(TOP)\test\permutations.test queryplanner
1245 test:   testfixture.exe sqlite3.exe
1246         .\testfixture.exe $(TOP)\test\veryquick.test
1248 sqlite3_analyzer.c: sqlite3.c $(TOP)\src\test_stat.c $(TOP)\src\tclsqlite.c $(TOP)\tool\spaceanal.tcl
1249         copy sqlite3.c + $(TOP)\src\test_stat.c + $(TOP)\src\tclsqlite.c $@
1250         echo static const char *tclsh_main_loop(void){ >> $@
1251         echo static const char *zMainloop = >> $@
1252         $(NAWK) -f $(TOP)\tool\tostr.awk $(TOP)\tool\spaceanal.tcl >> $@
1253         echo ; return zMainloop; } >> $@
1255 sqlite3_analyzer.exe:   sqlite3_analyzer.c $(LIBRESOBJS)
1256         $(LTLINK) -DBUILD_sqlite -DTCLSH=2 -I$(TCLINCDIR) sqlite3_analyzer.c \
1257                 /link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
1259 clean:
1260         del /Q *.lo *.ilk *.lib *.obj *.pdb sqlite3.exe libsqlite3.lib
1261         del /Q *.da *.bb *.bbg gmon.out
1262         del /Q sqlite3.h opcodes.c opcodes.h
1263         del /Q lemon.exe lempar.c parse.*
1264         del /Q mkkeywordhash.exe keywordhash.h
1265         -rmdir /Q/S .deps
1266         -rmdir /Q/S .libs
1267         -rmdir /Q/S quota2a
1268         -rmdir /Q/S quota2b
1269         -rmdir /Q/S quota2c
1270         -rmdir /Q/S tsrc
1271         del /Q .target_source
1272         del /Q tclsqlite3.exe tclsqlite3.exp
1273         del /Q testfixture.exe testfixture.exp test.db
1274         del /Q sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def
1275         del /Q sqlite3.c
1276         del /Q sqlite3rc.h
1277         del /Q shell.c sqlite3ext.h
1278         del /Q sqlite3_analyzer.exe sqlite3_analyzer.exp sqlite3_analyzer.c
1279         del /Q sqlite-*-output.vsix
1280         del /Q mptester.exe
1282 # Dynamic link library section.
1284 dll: sqlite3.dll
1286 sqlite3.def: libsqlite3.lib
1287         echo EXPORTS > sqlite3.def
1288         dumpbin /all libsqlite3.lib \
1289                 | $(NAWK) "/ 1 _?sqlite3_/ { sub(/^.* _?/,\"\");print }" \
1290                 | sort >> sqlite3.def
1292 sqlite3.dll: $(LIBOBJ) $(LIBRESOBJS) sqlite3.def
1293         $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:sqlite3.def /OUT:$@ $(LIBOBJ) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)