1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

added winNT cross-compile documentation (CVS 117)

FossilOrigin-Name: 8fc48dd4831dbd58a0c10b043686ea52ca1db6dd
This commit is contained in:
drh
2000-07-31 18:56:15 +00:00
parent d0752609e9
commit 867f9ee646
7 changed files with 320 additions and 11 deletions

View File

@ -200,6 +200,12 @@ arch.png: $(TOP)/www/arch.png
opcode.html: $(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c opcode.html: $(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c
tclsh $(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c >opcode.html 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. # Files to be published on the website.
# #
@ -214,7 +220,9 @@ PUBLISH = \
arch.html \ arch.html \
arch.png \ arch.png \
vdbe.html \ vdbe.html \
c_interface.html c_interface.html \
crosscompile.html \
mingw.html
website: $(PUBLISH) website: $(PUBLISH)

View File

@ -1,7 +1,7 @@
C :-)\s(CVS\s116) C added\swinNT\scross-compile\sdocumentation\s(CVS\s117)
D 2000-07-31T14:10:47 D 2000-07-31T18:56:15
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
F Makefile.in 9e6dcd232e594fb599a5e9ba8bcf45e6c6e2fe72 F Makefile.in 670aa9413cb2cdcded23b328a9e255c845c41a1e
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958 F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
F configure 51063d594190fa085f909cefc9427241088bec4f x F configure 51063d594190fa085f909cefc9427241088bec4f x
F configure.in a04f02ba61ed09a00e862b4f78b91b06a559e0b5 F configure.in a04f02ba61ed09a00e862b4f78b91b06a559e0b5
@ -59,14 +59,16 @@ F www/arch.fig 4e26e9dca3c49724fc8f554c695ddea9f2413156
F www/arch.png c4d908b79065a72e7dcf19317f36d1324c550e87 F www/arch.png c4d908b79065a72e7dcf19317f36d1324c550e87
F www/arch.tcl 4f6a9afecc099a27bba17b4f8cc9561abc15dc40 F www/arch.tcl 4f6a9afecc099a27bba17b4f8cc9561abc15dc40
F www/c_interface.tcl 29593cf77025bab137b7ba64b9459eb5eb6b4873 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/fileformat.tcl f3a70650e942262f8285d53097d48f0b3aa59862
F www/index.tcl 58c9a33ceba12f5efee446c6b10b4f6523a214e1 F www/index.tcl 1630a46fbe1e2651b7067fd463a3d4ffcd13ba6b
F www/lang.tcl 1645e9107d75709be4c6099b643db235bbe0a151 F www/lang.tcl 1645e9107d75709be4c6099b643db235bbe0a151
F www/mingw.tcl c55116a9a950d68e0279054c5aab7687162fd02f
F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
F www/sqlite.tcl 69781eaffb02e17aa4af28b76a2bedb19baa8e9f F www/sqlite.tcl 69781eaffb02e17aa4af28b76a2bedb19baa8e9f
F www/vdbe.tcl bcbfc33bcdd0ebad95eab31286adb9e1bc289520 F www/vdbe.tcl bcbfc33bcdd0ebad95eab31286adb9e1bc289520
P 52c2c50d09f568284d60f5b0715af0759e5f9b22 P a0246ddfb451801a78c34fde3ad72412323039dc
R d31874668edbdc4d0a363449cf06ee1d R 4435bdfae4e23004f854df39f18c9991
U drh U drh
Z 07a8ba4a11f33dc69735485c685e6b81 Z 6bd32adc8b5b796c01f0b69c7a971591

View File

@ -1 +1 @@
a0246ddfb451801a78c34fde3ad72412323039dc 8fc48dd4831dbd58a0c10b043686ea52ca1db6dd

View File

@ -19,6 +19,7 @@ proc chng {date desc} {
chng {2000 July 31} { chng {2000 July 31} {
<li>Finish the <a href="vdbe.html">VDBE tutorial</a>.</li> <li>Finish the <a href="vdbe.html">VDBE tutorial</a>.</li>
<li>Added documentation on compiling to WindowsNT.</li>
<li>Fix a configuration program for WindowsNT.</li> <li>Fix a configuration program for WindowsNT.</li>
<li>Fix a configuration problem for HPUX.</li> <li>Fix a configuration problem for HPUX.</li>
} }

133
www/crosscompile.tcl Normal file
View File

@ -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 {<html>
<head>
<title>Notes On How To Compile SQLite Using The MinGW Cross-Compiler</title>
</head>
<body bgcolor=white>
<h1 align=center>
Notes On How To Compile SQLite Using The MinGW Cross-Compiler
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] GMT)
</p>"
puts {
<p><a href="http://www.mingw.org/">MinGW</a> or
<a href="http://www.mingw.org/">Minimalist GNU For Windows</a>
is a version of the popular GCC compiler that build Win95/Win98/WinNT
binaries. See the website for details.</p>
<p>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.</p>
}
proc Code {body} {
puts {<blockquote><pre>}
regsub -all {&} [string trim $body] {\&amp;} body
regsub -all {>} $body {\&gt;} body
regsub -all {<} $body {\&lt;} body
regsub -all {\(\(\(} $body {<font color="#00671f"><u>} body
regsub -all {\)\)\)} $body {</u></font>} body
puts $body
puts {</pre></blockquote>}
}
puts {
<p>Here are the steps:</p>
<ol>
<li>
<p>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 <a href="mingw.html">separate bulletin</a> 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.
</p>
</li>
<li>
<p>
Download the Win32 port of GDBM from <a href="http://www.roth.net/libs/gdbm/">
Roth Consulting</a>. You can FTP a ZIP archive of the sources directly
from <a href="ftp://ftp.roth.net/pub/ntperl/gdbm/source/Win32_GDBM_Source.zip">
ftp://ftp.roth.net/pub/ntperl/gdbm/source/Win32_GDBM_Source.zip</a>.
</p>
</li>
<li>
<p>Make a directory and unpack the Win32 port of GDBM.</p>
<blockquote><pre>
mkdir roth
cd roth
unzip ../Win32_GDBM_Source.zip
</pre></blockquote>
</li>
<li>
<p>Manually build the GDBM library as follows:</p>
<blockquote><pre>
i386-mingw32-gcc -DWIN32=1 -O2 -c *.c
i386-mingw32-ar cr libgdbm.a *.o
i386-mingw32-ranlib libgdbm.a
cd ..
</pre></blockquote>
</li>
<li>
<p>
Download the SQLite tarball from
<a href="http://www.hwaci.com/sw/sqlite/sqlite.tar.gz">
http://www.hwaci.com/sw/sqlite/sqlite.tar.gz</a>.
Unpack the tarball and create a separate directory in which
to build the executable and library.
</p>
<blockquote><pre>
tar xzf sqlite.tar.gz
mkdir sqlite-bld
cd sqlite-bld
</pre></blockquote>
</li>
<li>
<p>
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:</p>
<blockquote><pre>
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
</pre></blockquote>
</li>
<li>
<p>Configure and build SQLite:</p>
<blockquote><pre>
../sqlite/configure --with-hints=./mingw.hints
make
</pre></blockquote>
</li>
</ol>
}
puts {
<p><hr /></p>
<p><a href="index.html"><img src="/goback.jpg" border=0 />
Back to the SQLite Home Page</a>
</p>
</body></html>}

View File

@ -1,7 +1,7 @@
# #
# Run this TCL script to generate HTML for the index.html file. # 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 {<html> puts {<html>
<head><title>SQLite: An SQL Database Engine Built Atop GDBM</title></head> <head><title>SQLite: An SQL Database Engine Built Atop GDBM</title></head>
@ -99,6 +99,11 @@ Among the SQL features that SQLite does not currently implement are:</p>
how the library is put together.</li> how the library is put together.</li>
<li>A description of the <a href="opcode.html">virtual machine</a> that <li>A description of the <a href="opcode.html">virtual machine</a> that
SQLite uses to access the database.</li> SQLite uses to access the database.</li>
<li>Instructions for building
<a href="crosscompile.html">SQLite for Win98/NT</a> using the
MinGW cross-compiler. There are also instructions on
<a href="mingw.html">building MinGW</a> in case you don't already have
a copy.</li>
</ul> </ul>
</p> </p>

160
www/mingw.tcl Normal file
View File

@ -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 {<html>
<head>
<title>Notes On How To Build MinGW As A Cross-Compiler</title>
</head>
<body bgcolor=white>
<h1 align=center>
Notes On How To Build MinGW As A Cross-Compiler
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] GMT)
</p>"
puts {
<p><a href="http://www.mingw.org/">MinGW</a> or
<a href="http://www.mingw.org/">Minimalist GNU For Windows</a>
is a version of the popular GCC compiler that build Win95/Win98/WinNT
binaries. See the website for details.</p>
<p>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.</p>
}
proc Link {path {file {}}} {
if {$file!=""} {
set path $path/$file
} else {
set file $path
}
puts "<a href=\"$path\">$file</a>"
}
puts {
<p>Here are the steps:</p>
<ol>
<li>
<p>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:</p>
<ul>
<li>}
Link $ftpsite binutils-19990818-1-src.tar.gz
puts </li><li>
Link $ftpsite gcc-2.95.2-1-src.tar.gz
puts </li><li>
Link $ftpsite mingw-20000203.zip
puts {</li>
</ul>
<p>Put all the downloads in a directory out of the way. The sequel
will assume all downloads are in a directory named
<b>~/mingw/download</b>.</p>
</li>
<li>
<p>
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
<b>/opt/mingw</b> and that your user ID is <b>drh</b>.</p>
<blockquote><pre>
su
mkdir /opt/mingw
chown drh /opt/mingw
exit
</pre></blockquote>
</li>
<li>
<p>Unpack the source tarballs into a separate directory.</p>
<blockquote><pre>
mkdir ~/mingw/src
cd ~/mingw/src
tar xzf ../download/binutils-*.tar.gz
tar xzf ../download/gcc-*.tar.gz
unzip ../download/mingw-*.zip
</pre></blockquote>
</li>
<li>
<p>Create a directory in which to put all the build products.</p>
<blockquote><pre>
mkdir ~/mingw/bld
</pre></blockquote>
</li>
<li>
<p>Configure and build binutils and add the results to your PATH.</p>
<blockquote><pre>
mkdir ~/mingw/bld/binutils
cd ~/mingw/bld/binutils
../../src/binutils/configure --prefix=/opt/mingw --target=i386-mingw32 -v
make 2&gt;&amp;1 | tee make.out
make install 2&gt;&amp;1 | tee make-install.out
export PATH=$PATH:/opt/mingw/bin
</pre></blockquote>
</li>
<li>
<p>Manually copy the runtime include files into the installation directory
before trying to build the compiler.</p>
<blockquote><pre>
mkdir /opt/mingw/i386-mingw32/include
cd ~/mingw/src/mingw-runtime*/mingw/include
cp -r * /opt/mingw/i386-mingw32/include
</pre></blockquote>
</li>
<li>
<p>Configure and build the compiler</p>
<blockquote><pre>
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&gt;&amp;1 | tee make.out
make install
</pre></blockquote>
</li>
<li>
<p>Configure and build the MinGW runtime</p>
<blockquote><pre>
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
</pre></blockquote>
</li>
</ol>
<p>And you are done...</p>
}
puts {
<p><hr /></p>
<p><a href="index.html"><img src="/goback.jpg" border=0 />
Back to the SQLite Home Page</a>
</p>
</body></html>}