]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Basic builds now appear to work using jimsh0 on Windows.
authordrh <>
Thu, 24 Oct 2024 19:17:25 +0000 (19:17 +0000)
committerdrh <>
Thu, 24 Oct 2024 19:17:25 +0000 (19:17 +0000)
FossilOrigin-Name: d8f5193970401b763a94a1d0403bed4337c9fb1f087772b72fb46b9e0bde1c0d

Makefile.msc
autoconf/Makefile.msc
manifest
manifest.uuid
tool/mksqlite3c.tcl
tool/mksqlite3h.tcl

index 203ca21fa36d87432bcdcfcb849a3ff29378563e..979933926a44c6623ae6091a90d84621d6ecf5f3 100644 (file)
@@ -1059,6 +1059,13 @@ TCLSH_CMD = $(TCLDIR)\bin\tclsh.exe
 TCLSH_CMD = tclsh
 !ENDIF
 !ENDIF
+
+# A light-weight TCLSH replacement that can be used for code generation
+# but which is not adequate for testing.
+#
+!IFNDEF JIM_TCLSH
+JIM_TCLSH = $(TOP)\jimsh0.exe
+!ENDIF
 # <</mark>>
 
 # Compiler options needed for programs that use the readline() library.
@@ -1849,6 +1856,11 @@ dll:     $(SQLITE3DLL)
 #
 shell: $(SQLITE3EXE)
 
+# jimsh0 - replacement for tclsh
+#
+jimsh0.exe:    $(TOP)\autosetup\jimsh0.c
+       cl -DHAVE__FULLPATH=1 $(TOP)\autosetup\jimsh0.c
+
 # <<mark>>
 libsqlite3.lib:        $(LIBOBJ)
        $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS)
@@ -1889,10 +1901,10 @@ $(SQLITE3DLL):  $(LIBOBJ) $(LIBRESOBJS) $(CORE_LINK_DEP)
        $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL $(CORE_LINK_OPTS) /OUT:$@ $(LIBOBJ) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
 
 # <<block2>>
-sqlite3.def:   libsqlite3.lib
+sqlite3.def:   libsqlite3.lib $(JIM_TCLSH)
        echo EXPORTS > sqlite3.def
        dumpbin /all libsqlite3.lib \
-               | $(TCLSH_CMD) $(TOP)\tool\replace.tcl include "^\s+1 _?(sqlite3(?:session|changeset|changegroup|rebaser|rbu)?_[^@]*)(?:@\d+)?$$" \1 \
+               | $(JIM_TCLSH) $(TOP)\tool\replace.tcl include "^\s+1 _?(sqlite3(?:session|changeset|changegroup|rebaser|rbu)?_[^@]*)(?:@\d+)?$$" \1 \
                | sort >> sqlite3.def
 # <</block2>>
 
@@ -1980,22 +1992,22 @@ mptest: mptester.exe
 # files are automatically generated.  This target takes care of
 # all that automatic generation.
 #
-.target_source:        $(SRC) $(TOP)\tool\vdbe-compress.tcl fts5.c $(SQLITE_TCL_DEP)
+.target_source:        $(SRC) $(TOP)\tool\vdbe-compress.tcl fts5.c $(SQLITE_TCL_DEP) $(JIM_TCLSH)
        -rmdir /Q/S tsrc 2>NUL
        -mkdir tsrc
-        $(TCLSH_CMD) $(TOP)\tool\cp.tcl $(SRC00) $(SRC01) $(SRC03) $(SRC04) $(SRC05) $(SRC07) $(SRC09) $(SRC10) $(SRC11) $(SRC12) fts5.c fts5.h tsrc
+        $(JIM_TCLSH) $(TOP)\tool\cp.tcl $(SRC00) $(SRC01) $(SRC03) $(SRC04) $(SRC05) $(SRC07) $(SRC09) $(SRC10) $(SRC11) $(SRC12) fts5.c fts5.h tsrc
        copy /B tsrc\fts5.c +,,
        copy /B tsrc\fts5.h +,,
        del /Q tsrc\sqlite.h.in tsrc\parse.y 2>NUL
-       $(TCLSH_CMD) $(TOP)\tool\vdbe-compress.tcl $(OPTS) < tsrc\vdbe.c > vdbe.new
+       $(JIM_TCLSH) $(TOP)\tool\vdbe-compress.tcl $(OPTS) < tsrc\vdbe.c > vdbe.new
        move vdbe.new tsrc\vdbe.c
        echo > .target_source
 
-sqlite3.c:     .target_source sqlite3ext.h sqlite3session.h $(MKSQLITE3C_TOOL) src-verify.exe
-       $(TCLSH_CMD) $(MKSQLITE3C_TOOL) $(MKSQLITE3C_ARGS) $(EXTRA_SRC)
+sqlite3.c:     .target_source sqlite3ext.h sqlite3session.h $(MKSQLITE3C_TOOL) src-verify.exe $(JIM_TCLSH)
+       $(JIM_TCLSH) $(MKSQLITE3C_TOOL) $(MKSQLITE3C_ARGS) $(EXTRA_SRC)
 
-sqlite3-all.c: sqlite3.c $(TOP)\tool\split-sqlite3c.tcl
-       $(TCLSH_CMD) $(TOP)\tool\split-sqlite3c.tcl
+sqlite3-all.c: sqlite3.c $(TOP)\tool\split-sqlite3c.tcl $(JIM_TCLSH)
+       $(JIM_TCLSH) $(TOP)\tool\split-sqlite3c.tcl
 # <</mark>>
 
 # Rule to build the amalgamation
@@ -2037,11 +2049,11 @@ opcodes.lo:     opcodes.c
 #
 !IF $(USE_RC)!=0
 # <<block1>>
-$(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(SQLITE3H) $(TOP)\VERSION
+$(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(SQLITE3H) $(TOP)\VERSION $(JIM_TCLSH)
        echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h
        for /F %%V in ('type "$(TOP)\VERSION"') do ( \
                echo #define SQLITE_RESOURCE_VERSION %%V \
-                       | $(TCLSH_CMD) $(TOP)\tool\replace.tcl exact . ^, >> sqlite3rc.h \
+                       | $(JIM_TCLSH) $(TOP)\tool\replace.tcl exact . ^, >> sqlite3rc.h \
        )
        echo #endif >> sqlite3rc.h
        $(LTRCOMPILE) -fo $(LIBRESOBJS) $(TOP)\src\sqlite3.rc
@@ -2302,11 +2314,11 @@ tclsqlite3.exe: tclsqlite-shell.lo $(SQLITE3C) $(SQLITE3H) $(LIBRESOBJS)
 
 # Rules to build opcodes.c and opcodes.h
 #
-opcodes.c:     opcodes.h $(TOP)\tool\mkopcodec.tcl
-       $(TCLSH_CMD) $(TOP)\tool\mkopcodec.tcl opcodes.h > opcodes.c
+opcodes.c:     opcodes.h $(TOP)\tool\mkopcodec.tcl $(JIM_TCLSH)
+       $(JIM_TCLSH) $(TOP)\tool\mkopcodec.tcl opcodes.h > opcodes.c
 
-opcodes.h:     parse.h $(TOP)\src\vdbe.c $(TOP)\tool\mkopcodeh.tcl
-       type parse.h $(TOP)\src\vdbe.c | $(TCLSH_CMD) $(TOP)\tool\mkopcodeh.tcl > opcodes.h
+opcodes.h:     parse.h $(TOP)\src\vdbe.c $(TOP)\tool\mkopcodeh.tcl $(JIM_TCLSH)
+       type parse.h $(TOP)\src\vdbe.c | $(JIM_TCLSH) $(TOP)\tool\mkopcodeh.tcl > opcodes.h
 
 # Rules to build parse.c and parse.h - the outputs of lemon.
 #
@@ -2318,8 +2330,8 @@ parse.c:  $(TOP)\src\parse.y lemon.exe
        copy /B parse.y +,,
        .\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS) $(OPTS) -S parse.y
 
-$(SQLITE3H):   $(TOP)\src\sqlite.h.in $(TOP)\manifest mksourceid.exe $(TOP)\VERSION
-       $(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl "$(TOP:\=/)" > $(SQLITE3H) $(MKSQLITE3H_ARGS)
+$(SQLITE3H):   $(TOP)\src\sqlite.h.in $(TOP)\manifest mksourceid.exe $(TOP)\VERSION $(JIM_TCLSH)
+       $(JIM_TCLSH) $(TOP)\tool\mksqlite3h.tcl "$(TOP:\=/)" > $(SQLITE3H) $(MKSQLITE3H_ARGS)
 
 sqlite3ext.h:  .target_source
 !IF $(USE_STDCALL)!=0 || $(FOR_WIN10)!=0
@@ -2382,8 +2394,8 @@ SHELL_DEP = $(SHELL_DEP) $(TOP)\ext\misc\sqlar.c
 SHELL_DEP = $(SHELL_DEP) $(TOP)\ext\misc\zipfile.c
 !ENDIF
 
-shell.c:       $(SHELL_DEP) $(TOP)\tool\mkshellc.tcl
-       $(TCLSH_CMD) $(TOP)\tool\mkshellc.tcl > shell.c
+shell.c:       $(SHELL_DEP) $(TOP)\tool\mkshellc.tcl $(JIM_TCLSH)
+       $(JIM_TCLSH) $(TOP)\tool\mkshellc.tcl > shell.c
 
 zlib:
        pushd $(ZLIBDIR) && $(MAKE) /f win32\Makefile.msc clean $(ZLIBLIB) && popd
@@ -2486,13 +2498,13 @@ fts5parse.c:    $(TOP)\ext\fts5\fts5parse.y lemon.exe
 
 fts5parse.h:   fts5parse.c
 
-fts5.c:        $(FTS5_SRC)
-       $(TCLSH_CMD) $(TOP)\ext\fts5\tool\mkfts5c.tcl
+fts5.c:        $(FTS5_SRC) $(JIM_TCLSH)
+       $(JIM_TCLSH) $(TOP)\ext\fts5\tool\mkfts5c.tcl
        copy /Y $(TOP)\ext\fts5\fts5.h .
        copy /B fts5.h +,,
 
-lsm1.c:        $(LSM1_SRC)
-       $(TCLSH_CMD) $(TOP)\ext\lsm1\tool\mklsm1c.tcl
+lsm1.c:        $(LSM1_SRC) $(JIM_TCLSH)
+       $(JIM_TCLSH) $(TOP)\ext\lsm1\tool\mklsm1c.tcl
        copy /Y $(TOP)\ext\lsm1\lsm.h .
        copy /B lsm.h +,,
 
index efebc9931a4cde0c7e16ef2a7c340c38d2f9b46c..29bb7174fbe079de417362490cb3b159e31de5d4 100644 (file)
@@ -1039,6 +1039,11 @@ dll:     $(SQLITE3DLL)
 #
 shell: $(SQLITE3EXE)
 
+# jimsh0 - replacement for tclsh
+#
+jimsh0.exe:    $(TOP)\autosetup\jimsh0.c
+       cl -DHAVE__FULLPATH=1 $(TOP)\autosetup\jimsh0.c
+
 
 $(SQLITE3DLL): $(LIBOBJ) $(LIBRESOBJS) $(CORE_LINK_DEP)
        $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL $(CORE_LINK_OPTS) /OUT:$@ $(LIBOBJ) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
index 102db05a8c1b20eb82c111f0c9d8d30e8cd0515f..bd4c87b6a1dd490ea9d5a467ecb2af8b42dc6791 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,11 +1,11 @@
-C Fix\sa\sbug\sin\sjimsh0.c\sfor\swhen\sit\sis\scompiled\susing\sMSVC.
-D 2024-10-24T17:16:38.986
+C Basic\sbuilds\snow\sappear\sto\swork\susing\sjimsh0\son\sWindows.
+D 2024-10-24T19:17:25.207
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
 F Makefile.in a751c1d84222c389ff83dc9c7d2f4ef2ca29bf357609032bb4af3147f6f38b70
 F Makefile.linux-generic 8df0e6ee5e4671f844caf27f88d2be7421e904639f7a0ffdce0e2cd4ea11e8c0
-F Makefile.msc ce5ba06254efafbc4794028f46a08a95c7772ff5a7949b2c36b34e9c26c19e1c
+F Makefile.msc 46ac29ffb26ccd346353f22ed4c7d1a8589e93ee32997d63a63019e612cfe07e
 F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159
 F VERSION 8dc0c3df15fd5ff0622f88fc483533fce990b1cbb2f5fb9fdfb4dbd71eef2889
 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5
@@ -17,7 +17,7 @@ F auto.def d120d07a0fb42193224bcfb6b658804fdd609bb3b77196d436783b7536426394
 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
-F autoconf/Makefile.msc 0a1fdef1f2c618815cf7c82c817a7369c1e07b3cfed490803db16fb43326d506
+F autoconf/Makefile.msc 1162ef7b7937ba6927b038f824b050855784d417e785fe35ab71d20afd18022b
 F autoconf/README.first 6c4f34fe115ff55d4e8dbfa3cecf04a0188292f7
 F autoconf/README.txt 5e946ffb6fbdbb114c81e1bdc862df27fce8beab557d7b0421820b0fe8fc048f
 F autoconf/configure.ac ec7fa914c5e74ff212fe879f9bb6918e1234497e05facfb641f30c4d5893b277
@@ -2166,8 +2166,8 @@ F tool/mkshellc.tcl 2bc29c201933ae72a16a79070fe80aded80c24ea487ecd2f8df20c2973c8
 F tool/mksourceid.c 36aa8020014aed0836fd13c51d6dc9219b0df1761d6b5f58ff5b616211b079b9
 F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
 F tool/mksqlite3c-noext.tcl 4f7cfef5152b0c91920355cbfc1d608a4ad242cb819f1aea07f6d0274f584a7f
-F tool/mksqlite3c.tcl c6acfdf4e4ef93478ff3ce3cd593e17abb03f446036ce710c3156bcfa18665e0
-F tool/mksqlite3h.tcl 1432a89bc62f4e7f25e0842ffec68374317abec8af80b650dd4149ffdd44be65
+F tool/mksqlite3c.tcl 98a250d6f2ea60343268e32e2997790e678205ce128aa0d0a67a3f70811615af
+F tool/mksqlite3h.tcl 1d996a99cda519e8519e9e514b564fa29b37a49d20263d57494903d685caf067
 F tool/mksqlite3internalh.tcl eb994013e833359137eb53a55acdad0b5ae1049b
 F tool/mktoolzip.tcl 34b4e92be544f820e2cc26f143f7d5aec511e826ec394cc82969a5dcf7c7a27c
 F tool/mkvsix.tcl 67b40996a50f985a573278eea32fc5a5eb6110bdf14d33f1d8086e48c69e540a
@@ -2237,8 +2237,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 61f18c96183867fe9d0fb30b8b71c0253f40503e32c8a4202196fb6418f2f46e
-R 3fcda85ce8cde0358524e6ceb13906f8
+P f7def0be742fad9863f1eba11d0c2f1fa739ad1262e67d24380698e3948cedb7
+R f7d9ddba41062822bed325e6117a4ac3
 U drh
-Z 9f3b8d43e2772874f53939ba0a89ce88
+Z a8e6b0cd2247237e95c6b267e7597266
 # Remove this line to create a well-formed Fossil manifest.
index 7f419644f7e5484a6fe92bb4dc07cad22cb26c82..fb92e4e3eed26f8801ef687b472c7aefd6afb8a1 100644 (file)
@@ -1 +1 @@
-f7def0be742fad9863f1eba11d0c2f1fa739ad1262e67d24380698e3948cedb7
+d8f5193970401b763a94a1d0403bed4337c9fb1f087772b72fb46b9e0bde1c0d
index ef8353df4f72543650f93b8cd2af619568825779..dd0ce380b4dc50fbbce17470f49c255351940138 100644 (file)
@@ -70,7 +70,7 @@ for {set i 0} {$i<[llength $argv]} {incr i} {
     lappend extrasrc $x
   }
 }
-set in [open $srcdir/sqlite3.h]
+set in [open $srcdir/sqlite3.h rb]
 set cnt 0
 set VERSION ?????
 while {![eof $in]} {
@@ -86,7 +86,7 @@ close $in
 #
 set fname sqlite3.c
 if {$enable_recover} { set fname sqlite3r.c }
-set out [open $fname w]
+set out [open $fname wb]
 # Force the output to use unix line endings, even on Windows.
 fconfigure $out -translation lf
 set today [clock format [clock seconds] -format "%Y-%m-%d %H:%M:%S UTC" -gmt 1]
@@ -117,7 +117,12 @@ if {$tcl_platform(platform)=="windows"} {
   set vsrcprog ./src-verify
 }
 if {[file executable $vsrcprog] && [file readable $srcroot/manifest]} {
-  set res [string trim [split [exec $vsrcprog -x $srcroot]] \n]
+  set tmpfile tmp-[clock millisec]-[expr {int(rand()*100000000000)}].txt
+  exec $vsrcprog -x $srcroot > $tmpfile
+  set fd [open $tmpfile rb]
+  set res [string trim [split [read $fd] \n]]
+  close $fd
+  file delete -force $tmpfile
   puts $out "** The content in this amalgamation comes from Fossil check-in"
   puts -nonewline $out "** [string range [lindex $res 0] 0 35]"
   if {[llength $res]==1} {
@@ -148,7 +153,7 @@ if {$addstatic} {
 # 
 # then set the SQLITE_UDL_CAPABLE_PARSER flag in the amalgamation.
 #
-set in [open $srcdir/parse.c]
+set in [open $srcdir/parse.c rb]
 if {[regexp {ifndef SQLITE_ENABLE_UPDATE_DELETE_LIMIT} [read $in]]} {
   puts $out "#define SQLITE_UDL_CAPABLE_PARSER 1"
 }
@@ -243,7 +248,7 @@ proc copy_file {filename} {
   set tail [file tail $filename]
   section_comment "Begin file $tail"
   if {$linemacros} {puts $out "#line 1 \"$filename\""}
-  set in [open $filename r]
+  set in [open $filename rb]
   set varpattern {^[a-zA-Z][a-zA-Z_0-9 *]+(sqlite3[_a-zA-Z0-9]+)(\[|;| =)}
   set declpattern {([a-zA-Z][a-zA-Z_0-9 ]+ \**)(sqlite3[_a-zA-Z0-9]+)(\(.*)}
   if {[file extension $filename]==".h"} {
@@ -358,7 +363,7 @@ proc copy_file {filename} {
 #
 proc copy_file_verbatim {filename} {
   global out
-  set in [open $filename r]
+  set in [open $filename rb]
   set tail [file tail $filename]
   section_comment "Begin EXTRA_SRC file $tail"
   while {![eof $in]} {
index 07c46684638df4b5efd385584ec61a93fcedae16..8a723f01a644d2e55f5360beb814a4df306f6679 100644 (file)
@@ -53,7 +53,7 @@ if {[lsearch -regexp [lrange $argv 1 end] {^-+enable-recover}] != -1} {
 
 # Get the SQLite version number (ex: 3.6.18) from the $TOP/VERSION file.
 #
-set in [open [file normalize $TOP/VERSION]]
+set in [open [file normalize $TOP/VERSION] rb]
 set zVersion [string trim [read $in]]
 close $in
 set nVersion [eval format "%d%03d%03d" [split $zVersion .]]
@@ -62,7 +62,12 @@ set nVersion [eval format "%d%03d%03d" [split $zVersion .]]
 #
 set PWD [pwd]
 cd $TOP
-set zSourceId [exec $PWD/mksourceid manifest]
+set tmpfile tmp-[clock millisec]-[expr {int(rand()*100000000000)}].txt
+exec $PWD/mksourceid manifest > $tmpfile
+set fd [open $tmpfile rb]
+set zSourceId [string trim [read $fd]]
+close $fd
+#file delete -force $tmpfile
 cd $PWD
 
 # Set up patterns for recognizing API declarations.
@@ -111,7 +116,7 @@ set cdecllist {
 # Process the source files.
 #
 foreach file $filelist {
-  set in [open $file]
+  set in [open $file rb]
   if {![regexp {sqlite\.h\.in} $file]} {
     puts "/******** Begin file [file tail $file] *********/"
   }