From 867f9ee646e56efdcaddaaffe848c509d43c575a Mon Sep 17 00:00:00 2001
From: drh
Date: Mon, 31 Jul 2000 18:56:15 +0000
Subject: [PATCH] added winNT cross-compile documentation (CVS 117)
FossilOrigin-Name: 8fc48dd4831dbd58a0c10b043686ea52ca1db6dd
---
Makefile.in | 10 ++-
manifest | 18 ++---
manifest.uuid | 2 +-
www/changes.tcl | 1 +
www/crosscompile.tcl | 133 +++++++++++++++++++++++++++++++++++
www/index.tcl | 7 +-
www/mingw.tcl | 160 +++++++++++++++++++++++++++++++++++++++++++
7 files changed, 320 insertions(+), 11 deletions(-)
create mode 100644 www/crosscompile.tcl
create mode 100644 www/mingw.tcl
diff --git a/Makefile.in b/Makefile.in
index 883f50cf43..65187cea44 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -200,6 +200,12 @@ arch.png: $(TOP)/www/arch.png
opcode.html: $(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c
tclsh $(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c >opcode.html
+crosscompile.html: $(TOP)/www/crosscompile.tcl
+ tclsh $(TOP)/www/crosscompile.tcl >crosscompile.html
+
+mingw.html: $(TOP)/www/mingw.tcl
+ tclsh $(TOP)/www/mingw.tcl >mingw.html
+
# Files to be published on the website.
#
@@ -214,7 +220,9 @@ PUBLISH = \
arch.html \
arch.png \
vdbe.html \
- c_interface.html
+ c_interface.html \
+ crosscompile.html \
+ mingw.html
website: $(PUBLISH)
diff --git a/manifest b/manifest
index 046773ad5f..9711b68925 100644
--- a/manifest
+++ b/manifest
@@ -1,7 +1,7 @@
-C :-)\s(CVS\s116)
-D 2000-07-31T14:10:47
+C added\swinNT\scross-compile\sdocumentation\s(CVS\s117)
+D 2000-07-31T18:56:15
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
-F Makefile.in 9e6dcd232e594fb599a5e9ba8bcf45e6c6e2fe72
+F Makefile.in 670aa9413cb2cdcded23b328a9e255c845c41a1e
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
F configure 51063d594190fa085f909cefc9427241088bec4f x
F configure.in a04f02ba61ed09a00e862b4f78b91b06a559e0b5
@@ -59,14 +59,16 @@ F www/arch.fig 4e26e9dca3c49724fc8f554c695ddea9f2413156
F www/arch.png c4d908b79065a72e7dcf19317f36d1324c550e87
F www/arch.tcl 4f6a9afecc099a27bba17b4f8cc9561abc15dc40
F www/c_interface.tcl 29593cf77025bab137b7ba64b9459eb5eb6b4873
-F www/changes.tcl 46fa8c4b4939fedd802ae5cc5a9b3b49e3528052
+F www/changes.tcl 874d7b801a9370326e74cc34f119c62f361cb697
+F www/crosscompile.tcl aa75529712e29c92acc6949404716492317c0d22
F www/fileformat.tcl f3a70650e942262f8285d53097d48f0b3aa59862
-F www/index.tcl 58c9a33ceba12f5efee446c6b10b4f6523a214e1
+F www/index.tcl 1630a46fbe1e2651b7067fd463a3d4ffcd13ba6b
F www/lang.tcl 1645e9107d75709be4c6099b643db235bbe0a151
+F www/mingw.tcl c55116a9a950d68e0279054c5aab7687162fd02f
F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
F www/sqlite.tcl 69781eaffb02e17aa4af28b76a2bedb19baa8e9f
F www/vdbe.tcl bcbfc33bcdd0ebad95eab31286adb9e1bc289520
-P 52c2c50d09f568284d60f5b0715af0759e5f9b22
-R d31874668edbdc4d0a363449cf06ee1d
+P a0246ddfb451801a78c34fde3ad72412323039dc
+R 4435bdfae4e23004f854df39f18c9991
U drh
-Z 07a8ba4a11f33dc69735485c685e6b81
+Z 6bd32adc8b5b796c01f0b69c7a971591
diff --git a/manifest.uuid b/manifest.uuid
index 2a6033ab8a..4f202ca6fd 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-a0246ddfb451801a78c34fde3ad72412323039dc
\ No newline at end of file
+8fc48dd4831dbd58a0c10b043686ea52ca1db6dd
\ No newline at end of file
diff --git a/www/changes.tcl b/www/changes.tcl
index 481c81fef2..d2dd080272 100644
--- a/www/changes.tcl
+++ b/www/changes.tcl
@@ -19,6 +19,7 @@ proc chng {date desc} {
chng {2000 July 31} {
Finish the VDBE tutorial.
+Added documentation on compiling to WindowsNT.
Fix a configuration program for WindowsNT.
Fix a configuration problem for HPUX.
}
diff --git a/www/crosscompile.tcl b/www/crosscompile.tcl
new file mode 100644
index 0000000000..49b7e9645a
--- /dev/null
+++ b/www/crosscompile.tcl
@@ -0,0 +1,133 @@
+#
+# Run this Tcl script to generate the crosscompile.html file.
+#
+set rcsid {$Id: crosscompile.tcl,v 1.1 2000/07/31 18:56:15 drh Exp $}
+
+puts {
+
+ Notes On How To Compile SQLite Using The MinGW Cross-Compiler
+
+
+
+Notes On How To Compile SQLite Using The MinGW Cross-Compiler
+
}
+puts "
+(This page was last modified on [lrange $rcsid 3 4] GMT)
+
"
+
+puts {
+MinGW or
+Minimalist GNU For Windows
+is a version of the popular GCC compiler that build Win95/Win98/WinNT
+binaries. See the website for details.
+
+This page describes how you can use MinGW configured as a
+cross-compiler running under RedHat 6.0 Linux to generate a
+binary for SQLite that runs under WinNT.
+}
+
+proc Code {body} {
+ puts {}
+ regsub -all {&} [string trim $body] {\&} body
+ regsub -all {>} $body {\>} body
+ regsub -all {<} $body {\<} body
+ regsub -all {\(\(\(} $body {} body
+ regsub -all {\)\)\)} $body {} body
+ puts $body
+ puts {
}
+}
+
+puts {
+Here are the steps:
+
+
+-
+
Get a copy of the MinGW compiler and all
+its associated tools that run under Linux. No binary versions of
+MinGW in this configuration are available for net downloads, as far
+as I know. You will probably have to download the source code and
+compile it all yourself.
+A separate bulletin describes how this
+can be done.
+When you are done, make sure the compiler and all its associated tools
+are located somewhere on your PATH environment variable.
+
+
+
+-
+
+Download the Win32 port of GDBM from
+Roth Consulting. You can FTP a ZIP archive of the sources directly
+from
+ftp://ftp.roth.net/pub/ntperl/gdbm/source/Win32_GDBM_Source.zip.
+
+
+
+-
+
Make a directory and unpack the Win32 port of GDBM.
+
+mkdir roth
+cd roth
+unzip ../Win32_GDBM_Source.zip
+
+
+
+-
+
Manually build the GDBM library as follows:
+
+i386-mingw32-gcc -DWIN32=1 -O2 -c *.c
+i386-mingw32-ar cr libgdbm.a *.o
+i386-mingw32-ranlib libgdbm.a
+cd ..
+
+
+
+-
+
+Download the SQLite tarball from
+
+http://www.hwaci.com/sw/sqlite/sqlite.tar.gz.
+Unpack the tarball and create a separate directory in which
+to build the executable and library.
+
+
+tar xzf sqlite.tar.gz
+mkdir sqlite-bld
+cd sqlite-bld
+
+
+
+-
+
+Create a "hints" file that will tell the SQLite configuration script
+to use the MinGW cross-compiler rather than the native linux compiler.
+The hints file should looks something like this:
+
+cat >mingw.hints <<\END
+ config_TARGET_CC=i386-mingw32-gcc
+ config_TARGET_CFLAGS='-O2'
+ config_TARGET_GDBM_LIBS=../roth/libgdbm.a
+ config_TARGET_GDBM_INC=-I../roth
+ config_TARGET_AR='i386-mingw32-ar cr'
+ config_TARGET_RANLIB=i386-mingw32-ranlib
+ config_TARGET_EXEEXT='.exe'
+END
+
+
+
+-
+
Configure and build SQLite:
+
+../sqlite/configure --with-hints=./mingw.hints
+make
+
+
+
+}
+puts {
+
+
+Back to the SQLite Home Page
+
+
+}
diff --git a/www/index.tcl b/www/index.tcl
index b958bc98ff..7ed6b68114 100644
--- a/www/index.tcl
+++ b/www/index.tcl
@@ -1,7 +1,7 @@
#
# Run this TCL script to generate HTML for the index.html file.
#
-set rcsid {$Id: index.tcl,v 1.19 2000/07/28 14:32:51 drh Exp $}
+set rcsid {$Id: index.tcl,v 1.20 2000/07/31 18:56:16 drh Exp $}
puts {
SQLite: An SQL Database Engine Built Atop GDBM
@@ -99,6 +99,11 @@ Among the SQL features that SQLite does not currently implement are:
how the library is put together.
A description of the virtual machine that
SQLite uses to access the database.
+Instructions for building
+ SQLite for Win98/NT using the
+ MinGW cross-compiler. There are also instructions on
+ building MinGW in case you don't already have
+ a copy.
diff --git a/www/mingw.tcl b/www/mingw.tcl
new file mode 100644
index 0000000000..f5175f3556
--- /dev/null
+++ b/www/mingw.tcl
@@ -0,0 +1,160 @@
+#
+# Run this Tcl script to generate the crosscompile.html file.
+#
+set rcsid {$Id: mingw.tcl,v 1.1 2000/07/31 18:56:16 drh Exp $}
+
+puts {
+
+ Notes On How To Build MinGW As A Cross-Compiler
+
+
+
+Notes On How To Build MinGW As A Cross-Compiler
+
}
+puts "
+(This page was last modified on [lrange $rcsid 3 4] GMT)
+
"
+
+puts {
+MinGW or
+Minimalist GNU For Windows
+is a version of the popular GCC compiler that build Win95/Win98/WinNT
+binaries. See the website for details.
+
+This page describes how you can build MinGW
+from sources as a cross-compiler
+running under Linux. Doing so will allow you to construct
+WinNT binaries from the comfort and convenience of your
+Unix desktop.
+}
+
+proc Link {path {file {}}} {
+ if {$file!=""} {
+ set path $path/$file
+ } else {
+ set file $path
+ }
+ puts "$file"
+}
+
+puts {
+Here are the steps:
+
+
+-
+
Get a copy of source code. You will need the binutils, the
+compiler, and the MinGW runtime. Each are available separately.
+As of this writing, Mumit Khan has collected everything you need
+together in one FTP site:
+}
+set ftpsite \
+ ftp://ftp.nanotech.wisc.edu/pub/khan/gnu-win32/mingw32/snapshots/gcc-2.95.2-1
+Link $ftpsite
+puts {
+The three files you will need are:
+
+- }
+Link $ftpsite binutils-19990818-1-src.tar.gz
+puts
-
+Link $ftpsite gcc-2.95.2-1-src.tar.gz
+puts
-
+Link $ftpsite mingw-20000203.zip
+puts {
+
+
+Put all the downloads in a directory out of the way. The sequel
+will assume all downloads are in a directory named
+~/mingw/download.
+
+
+-
+
+Create a directory in which to install the new compiler suite and make
+the new directory writable.
+Depending on what directory you choose, you might need to become
+root. The example shell commands that follow
+will assume the installation directory is
+/opt/mingw and that your user ID is drh.
+
+su
+mkdir /opt/mingw
+chown drh /opt/mingw
+exit
+
+
+
+-
+
Unpack the source tarballs into a separate directory.
+
+mkdir ~/mingw/src
+cd ~/mingw/src
+tar xzf ../download/binutils-*.tar.gz
+tar xzf ../download/gcc-*.tar.gz
+unzip ../download/mingw-*.zip
+
+
+
+-
+
Create a directory in which to put all the build products.
+
+mkdir ~/mingw/bld
+
+
+
+-
+
Configure and build binutils and add the results to your PATH.
+
+mkdir ~/mingw/bld/binutils
+cd ~/mingw/bld/binutils
+../../src/binutils/configure --prefix=/opt/mingw --target=i386-mingw32 -v
+make 2>&1 | tee make.out
+make install 2>&1 | tee make-install.out
+export PATH=$PATH:/opt/mingw/bin
+
+
+
+-
+
Manually copy the runtime include files into the installation directory
+before trying to build the compiler.
+
+mkdir /opt/mingw/i386-mingw32/include
+cd ~/mingw/src/mingw-runtime*/mingw/include
+cp -r * /opt/mingw/i386-mingw32/include
+
+
+
+-
+
Configure and build the compiler
+
+mkdir ~/mingw/bld/gcc
+cd ~/mingw/bld/gcc
+../../src/gcc-*/configure --prefix=/opt/mingw --target=i386-mingw32 -v
+cd gcc
+make installdirs
+cd ..
+make 2>&1 | tee make.out
+make install
+
+
+
+-
+
Configure and build the MinGW runtime
+
+mkdir ~/mingw/bld/runtime
+cd ~/mingw/bld/runtime
+../../src/mingw-runtime*/configure --prefix=/opt/mingw --target=i386-mingw32 -v
+make install-target-w32api
+make install
+
+
+
+
+And you are done...
+}
+puts {
+
+
+Back to the SQLite Home Page
+
+
+}