@@ -320,6 +320,13 @@ SQLITETCLH = sqlite_tcl.h
320320SQLITETCLDECLSH = sqlite_tclDecls.h
321321!ENDIF
322322
323+ # This is the name to use for the dynamic link library (DLL) containing the
324+ # Tcl bindings for SQLite.
325+ #
326+ !IFNDEF SQLITE3TCLDLL
327+ SQLITE3TCLDLL = tclsqlite3.dll
328+ !ENDIF
329+
323330# These are the additional targets that the targets that integrate with the
324331# Tcl library should depend on when compiling, etc.
325332#
@@ -495,9 +502,9 @@ UCRTLIBPATH = $(UCRTLIBPATH:\\=\)
495502# will run on the platform that is doing the build.
496503#
497504!IF $(USE_FULLWARN)!=0
498- BCC = $(NCC) -nologo -W4 $(CCOPTS) $(BCCOPTS)
505+ BCC = $(NCC) -nologo -W4 -Fd$*.pdb $(CCOPTS) $(BCCOPTS)
499506!ELSE
500- BCC = $(NCC) -nologo -W3 $(CCOPTS) $(BCCOPTS)
507+ BCC = $(NCC) -nologo -W3 -Fd$*.pdb $(CCOPTS) $(BCCOPTS)
501508!ENDIF
502509
503510# Check if assembly code listings should be generated for the source
@@ -853,6 +860,14 @@ RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1
853860# prior to running nmake in order to match the actual installed location and
854861# version on this machine.
855862#
863+ !IFNDEF TCLVERSION
864+ TCLVERSION = 86
865+ !ENDIF
866+
867+ !IFNDEF TCLSUFFIX
868+ TCLSUFFIX =
869+ !ENDIF
870+
856871!IFNDEF TCLDIR
857872TCLDIR = $(TOP)\compat\tcl
858873!ENDIF
@@ -866,11 +881,11 @@ TCLLIBDIR = $(TCLDIR)\lib
866881!ENDIF
867882
868883!IFNDEF LIBTCL
869- LIBTCL = tcl86 .lib
884+ LIBTCL = tcl$(TCLVERSION)$(TCLSUFFIX) .lib
870885!ENDIF
871886
872887!IFNDEF LIBTCLSTUB
873- LIBTCLSTUB = tclstub86 .lib
888+ LIBTCLSTUB = tclstub$(TCLVERSION)$(TCLSUFFIX) .lib
874889!ENDIF
875890
876891!IFNDEF LIBTCLPATH
@@ -1063,7 +1078,7 @@ RCC = $(RCC) -I$(ICUINCDIR)
10631078# Command line prefixes for compiling code, compiling resources,
10641079# linking, etc.
10651080#
1066- LTCOMPILE = $(TCC) -Fo$@
1081+ LTCOMPILE = $(TCC) -Fo$@ -Fd$*.pdb
10671082LTRCOMPILE = $(RCC) -r
10681083LTLIB = lib.exe
10691084LTLINK = $(TCC) -Fe$@
@@ -1081,6 +1096,11 @@ LTLIBS = $(LTLIBS) rpcrt4.lib
10811096!IFDEF PLATFORM
10821097LTLINKOPTS = /NOLOGO /MACHINE:$(PLATFORM)
10831098LTLIBOPTS = /NOLOGO /MACHINE:$(PLATFORM)
1099+ !ELSEIF "$(VISUALSTUDIOVERSION)"=="12.0" || \
1100+ "$(VISUALSTUDIOVERSION)"=="14.0" || \
1101+ "$(VISUALSTUDIOVERSION)"=="15.0"
1102+ LTLINKOPTS = /NOLOGO /MACHINE:x86
1103+ LTLIBOPTS = /NOLOGO /MACHINE:x86
10841104!ELSE
10851105LTLINKOPTS = /NOLOGO
10861106LTLIBOPTS = /NOLOGO
@@ -1497,6 +1517,7 @@ TESTSRC = \
14971517 $(TOP)\src\test_tclsh.c \
14981518 $(TOP)\src\test_tclvar.c \
14991519 $(TOP)\src\test_thread.c \
1520+ $(TOP)\src\test_vdbecov.c \
15001521 $(TOP)\src\test_vfs.c \
15011522 $(TOP)\src\test_windirent.c \
15021523 $(TOP)\src\test_window.c \
@@ -1665,7 +1686,7 @@ TESTOPTS = --verbose=file --output=test-out.txt
16651686# Extra targets for the "all" target that require Tcl.
16661687#
16671688!IF $(NO_TCL)==0
1668- ALL_TCL_TARGETS = libtclsqlite3.lib
1689+ ALL_TCL_TARGETS = $(SQLITE3TCLDLL)
16691690!ELSE
16701691ALL_TCL_TARGETS =
16711692!ENDIF
@@ -1697,7 +1718,22 @@ libsqlite3.lib: $(LIBOBJ)
16971718 $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS)
16981719
16991720libtclsqlite3.lib: tclsqlite.lo libsqlite3.lib
1700- $(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCLSTUB) $(TLIBS)
1721+ $(LTLIB) $(LTLIBOPTS) $(TCLLIBPATHS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCLSTUB) $(TLIBS)
1722+
1723+ tclsqlite3.def: tclsqlite.lo
1724+ echo EXPORTS > tclsqlite3.def
1725+ dumpbin /all tclsqlite.lo \
1726+ | $(TCLSH_CMD) $(TOP)\tool\replace.tcl include "^\s+/EXPORT:_?((?:Sqlite3|Tclsqlite3)_[^@]*)(?:@\d+)?$$" \1 \
1727+ | sort >> tclsqlite3.def
1728+
1729+ pkgIndex.tcl: $(TOP)\VERSION
1730+ for /F %%V in ('type "$(TOP)\VERSION"') do ( \
1731+ echo package ifneeded sqlite3 @version@ [list load [file join $$dir $(SQLITE3TCLDLL)] sqlite3] \
1732+ | $(TCLSH_CMD) $(TOP)\tool\replace.tcl exact @version@ %%V > pkgIndex.tcl \
1733+ )
1734+
1735+ $(SQLITE3TCLDLL): libtclsqlite3.lib $(LIBRESOBJS) tclsqlite3.def pkgIndex.tcl
1736+ $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:tclsqlite3.def /OUT:$@ libtclsqlite3.lib $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
17011737# <</mark>>
17021738
17031739$(SQLITE3DLL): $(LIBOBJ) $(LIBRESOBJS) $(CORE_LINK_DEP)
@@ -1837,7 +1873,7 @@ opcodes.lo: opcodes.c
18371873#
18381874!IF $(USE_RC)!=0
18391875# <<block1>>
1840- $(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(SQLITE3H)
1876+ $(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(SQLITE3H) $(TOP)\VERSION
18411877 echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h
18421878 for /F %%V in ('type "$(TOP)\VERSION"') do ( \
18431879 echo #define SQLITE_RESOURCE_VERSION %%V \
@@ -2103,12 +2139,10 @@ opcodes.h: parse.h $(TOP)\src\vdbe.c $(TOP)\tool\mkopcodeh.tcl
21032139#
21042140parse.h: parse.c
21052141
2106- parse.c: $(TOP)\src\parse.y lemon.exe $(TOP)\tool\addopcodes.tcl
2142+ parse.c: $(TOP)\src\parse.y lemon.exe
21072143 del /Q parse.y parse.h parse.h.temp 2>NUL
21082144 copy $(TOP)\src\parse.y .
21092145 .\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS) $(OPTS) parse.y
2110- move parse.h parse.h.temp
2111- $(TCLSH_CMD) $(TOP)\tool\addopcodes.tcl parse.h.temp > parse.h
21122146
21132147$(SQLITE3H): $(TOP)\src\sqlite.h.in $(TOP)\manifest mksourceid.exe $(TOP)\VERSION
21142148 $(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl $(TOP:\=/) > $(SQLITE3H) $(MKSQLITE3H_ARGS)
@@ -2514,6 +2548,7 @@ clean:
25142548 del /Q *.bsc *.def *.cod *.da *.bb *.bbg *.vc gmon.out 2>NUL
25152549 del /Q $(SQLITE3EXE) $(SQLITE3DLL) Replace.exe 2>NUL
25162550# <<mark>>
2551+ del /Q $(SQLITE3TCLDLL) pkgIndex.tcl 2>NUL
25172552 del /Q opcodes.c opcodes.h 2>NUL
25182553 del /Q lemon.* lempar.c parse.* 2>NUL
25192554 del /Q mksourceid.* mkkeywordhash.* keywordhash.h 2>NUL
@@ -2524,6 +2559,7 @@ clean:
25242559 del /Q .target_source 2>NUL
25252560 del /Q tclsqlite3.exe $(SQLITETCLH) $(SQLITETCLDECLSH) 2>NUL
25262561 del /Q lsm.dll lsmtest.exe 2>NUL
2562+ del /Q atrc.exe changesetfuzz.exe dbtotxt.exe index_usage.exe 2>NUL
25272563 del /Q testloadext.dll 2>NUL
25282564 del /Q testfixture.exe test.db 2>NUL
25292565 del /Q LogEst.exe fts3view.exe rollback-test.exe showdb.exe dbdump.exe 2>NUL
0 commit comments