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:

    + +
      +
    1. +

      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. +

      +
    2. + +
    3. +

      +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. +

      +
    4. + +
    5. +

      Make a directory and unpack the Win32 port of GDBM.

      +
      +mkdir roth
      +cd roth
      +unzip ../Win32_GDBM_Source.zip
      +
      +
    6. + +
    7. +

      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 ..
      +
      +
    8. + +
    9. +

      +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
      +
      +
    10. + +
    11. +

      +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
      +
      +
    12. + +
    13. +

      Configure and build SQLite:

      +
      +../sqlite/configure --with-hints=./mingw.hints
      +make
      +
      +
    14. +
    +} +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:

    + +
      +
    1. +

      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:

      + + +

      Put all the downloads in a directory out of the way. The sequel +will assume all downloads are in a directory named +~/mingw/download.

      +
    2. + +
    3. +

      +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
      +
      +
    4. + +
    5. +

      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
      +
      +
    6. + +
    7. +

      Create a directory in which to put all the build products.

      +
      +mkdir ~/mingw/bld
      +
      +
    8. + +
    9. +

      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
      +
      +
    10. + +
    11. +

      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
      +
      +
    12. + +
    13. +

      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
      +
      +
    14. + +
    15. +

      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
      +
      +
    16. +
    + +

    And you are done...

    +} +puts { +


    +

    +Back to the SQLite Home Page +

    + +}