From aa86b2a373717faf2d8e76f4ecc547ac838e3897 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 6 Aug 2025 12:43:06 +0000 Subject: [PATCH] Add a script to build ARM64EC binaries on Windows11 for ARM64. FossilOrigin-Name: 2d5b74b84a9c778183a11070623e89b553ba9cde905b779dbf115ea95aa0ca9b --- manifest | 11 ++++++----- manifest.uuid | 2 +- tool/mkwinarm64ec.tcl | 44 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 tool/mkwinarm64ec.tcl diff --git a/manifest b/manifest index 559ef7f186..67d10346eb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\spossible\sprintf()\sof\sa\sNULL\sstring\sin\sfuzzcheck.\s\s(Passing\sa\sNULL\sto\n"%s"\sin\sSQLite's\sinternal\sprintf()\sprints\sthe\stext\n"NULL",\sbut\sit\sapparently\ssegfaults\sglibc.\s\sWhatever.)\n[forum:/forumpost/e07d56579b|Forum\spost\se07d56579b]. -D 2025-08-05T23:01:31.334 +C Add\sa\sscript\sto\sbuild\sARM64EC\sbinaries\son\sWindows11\sfor\sARM64. +D 2025-08-06T12:43:06.426 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -2130,6 +2130,7 @@ F tool/mksqlite3internalh.tcl 46ef6ed6ccd3c36e23051109dd25085d8edef3887635cea25a F tool/mksrczip.tcl 81efd9974dbb36005383f2cd655520057a2ae5aa85ac2441a80c7c28f803ac52 F tool/mktoolzip.tcl c9f388b2b0751982aef29a0c1d80f7959dbe38065ebb4421c39844e92622b086 F tool/mkvsix.tcl 67b40996a50f985a573278eea32fc5a5eb6110bdf14d33f1d8086e48c69e540a +F tool/mkwinarm64ec.tcl c6fb6ca0311d186717e10de4671d3b7f733de77dcc3ab4194db9eebaed9134d4 F tool/offsets.c 8ed2b344d33f06e71366a9b93ccedaa38c096cc1dbd4c3c26ad08c6115285845 F tool/omittest-msvc.tcl d6b8f501ac1d7798c4126065030f89812379012cad98a1735d6d7221492abc08 F tool/omittest.tcl bec70ef0e16255c8d9eb06ecd7edf823c07a60a836186cdbce3528fb34b67995 @@ -2168,8 +2169,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P ae9d7c9c922bb241363aa690b42b9664c4ad6e76ed5ce474daf1ab44461bc6a3 -R 8b47b9bd61b54c94afdf5fabe8653f59 +P 4ec69baf4f2a75585b92388cbc352836116381dce3f2d44a3b0f7d3360a17cf0 +R a564d6d7434fe8725c39442de9668b7a U drh -Z bbf4b84c82e3def5532a80b930cdbf65 +Z e0b59ca34b9c8462da51eecece7aeb91 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 20e7162d5f..100df3c496 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4ec69baf4f2a75585b92388cbc352836116381dce3f2d44a3b0f7d3360a17cf0 +2d5b74b84a9c778183a11070623e89b553ba9cde905b779dbf115ea95aa0ca9b diff --git a/tool/mkwinarm64ec.tcl b/tool/mkwinarm64ec.tcl new file mode 100644 index 0000000000..209cce9fce --- /dev/null +++ b/tool/mkwinarm64ec.tcl @@ -0,0 +1,44 @@ +# Script to build ARM64-EC binaries on Windows. +# +# Run from the top-level of a check-out, on a Windows11 ARM machine that +# has Fossil installed, using a command like this: +# +# tclsh tool/mmkwinarm64ec.tcl +# +# Output will be a file named: +# +# sqlite-win-arm64ec-3MMPP00.zip +# +# Where MM is the minor version number and PP is that patch level. +# +puts "Running nmake..." +flush stdout +exec nmake /f Makefile.msc "PLATFORM=ARM64EC" "BCC=cl -nologo -arm64EC" "TCC=cl -nologo -arm64EC -I." "CFLAGS=-nologo -arm64EC -I." clean sqlite3.exe sqldiff.exe sqlite3_rsync.exe sqlite3.dll >@ stdout 2>@ stderr + +proc check-type {file} { + set in [open "| link /dump /headers $file" rb] + set txt [read $in] + close $in + if {![string match {*8664 machine (x64) (ARM64X)*} $txt]} { + puts "$file is not an ARM64-EC binary" + puts "OUTPUT:\n$txt" + flush stdout + exit 1 + } + puts "Confirmed: $file is an ARM64-EC binary" +} +check-type sqlite3.exe +check-type sqldiff.exe +check-type sqlite3_rsync.exe +check-type sqlite3.dll + +set in [open VERSION rb] +set VERSION [read $in] +close $in +regexp {3.(\d+).(\d+)} $VERSION all minor patch +set filename [format sqlite-win-arm64ec-3%02d%02d00 $minor $patch] + +puts "Constructing $filename..." +exec fossil test-filezip $filename sqlite3.def sqlite3.dll sqlite3.exe sqldiff.exe sqlite3_rsync.exe >@ stdout 2>@ stderr +puts "$filename: [file size $filename] bytes" +exec fossil test-filezip -l $filename >@ stdout 2>@ stderr -- 2.47.2