Home | History | Annotate | Download | only in src
      1 #!/bin/sh
      2 #
      3 # This script is used to compile SQLite and package everything up
      4 # so that it is ready to move to the SQLite website.
      5 #
      6 
      7 # Set srcdir to the name of the directory that contains the publish.sh
      8 # script.
      9 #
     10 srcdir=`echo "$0" | sed 's%\(^.*\)/[^/][^/]*$%\1%'`
     11 
     12 # Get the makefile.
     13 #
     14 cp $srcdir/Makefile.linux-gcc ./Makefile
     15 chmod +x $srcdir/install-sh
     16 
     17 # Get the current version number - needed to help build filenames
     18 #
     19 VERS=`cat $srcdir/VERSION`
     20 VERSW=`sed 's/\./_/g' $srcdir/VERSION`
     21 echo "VERSIONS: $VERS $VERSW"
     22 
     23 # Start by building an sqlite shell for linux.
     24 #
     25 make clean
     26 make sqlite3.c
     27 CFLAGS="-Os -DSQLITE_ENABLE_FTS3=0 -DSQLITE_ENABLE_RTREE=0"
     28 CFLAGS="$CFLAGS -DSQLITE_THREADSAFE=0"
     29 echo '***** '"COMPILING sqlite3-$VERS.bin..."
     30 gcc $CFLAGS -Itsrc sqlite3.c tsrc/shell.c -o sqlite3 -ldl
     31 strip sqlite3
     32 mv sqlite3 sqlite3-$VERS.bin
     33 gzip sqlite3-$VERS.bin
     34 chmod 644 sqlite3-$VERS.bin.gz
     35 mv sqlite3-$VERS.bin.gz doc
     36 
     37 # Build the sqlite.so and tclsqlite.so shared libraries
     38 # under Linux
     39 #
     40 TCLDIR=/home/drh/tcltk/846/linux/846linux
     41 TCLSTUBLIB=$TCLDIR/libtclstub8.4g.a
     42 CFLAGS="-Os -DSQLITE_ENABLE_FTS3=3 -DSQLITE_ENABLE_RTREE=1"
     43 CFLAGS="$CFLAGS -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1"
     44 CFLAGS="$CFLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1"
     45 echo '***** BUILDING shared libraries for linux'
     46 gcc $CFLAGS -shared tclsqlite3.c $TCLSTUBLIB -o tclsqlite3.so -lpthread
     47 strip tclsqlite3.so
     48 chmod 644 tclsqlite3.so
     49 mv tclsqlite3.so tclsqlite-$VERS.so
     50 gzip tclsqlite-$VERS.so
     51 mv tclsqlite-$VERS.so.gz doc
     52 gcc $CFLAGS -shared sqlite3.c -o sqlite3.so -lpthread
     53 strip sqlite3.so
     54 chmod 644 sqlite3.so
     55 mv sqlite3.so sqlite-$VERS.so
     56 gzip sqlite-$VERS.so
     57 mv sqlite-$VERS.so.gz doc
     58 
     59 
     60 # Build the tclsqlite3.dll and sqlite3.dll shared libraries.
     61 #
     62 . $srcdir/mkdll.sh
     63 echo '***** PACKAGING shared libraries for windows'
     64 echo zip doc/tclsqlite-$VERSW.zip tclsqlite3.dll
     65 zip doc/tclsqlite-$VERSW.zip tclsqlite3.dll
     66 echo zip doc/sqlitedll-$VERSW.zip sqlite3.dll sqlite3.def
     67 zip doc/sqlitedll-$VERSW.zip sqlite3.dll sqlite3.def
     68 
     69 # Build the sqlite.exe executable for windows.
     70 #
     71 OPTS='-DSTATIC_BUILD=1 -DNDEBUG=1 -DSQLITE_THREADSAFE=0'
     72 OPTS="$OPTS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_RTREE=1"
     73 i386-mingw32msvc-gcc -Os $OPTS -Itsrc -I$TCLDIR sqlite3.c tsrc/shell.c \
     74       -o sqlite3.exe
     75 zip doc/sqlite-$VERSW.zip sqlite3.exe
     76 
     77 # Build a source archive useful for windows.
     78 #
     79 make target_source
     80 cd tsrc
     81 echo '***** BUILDING preprocessed source archives'
     82 rm fts[12]* icu*
     83 rm -f ../doc/sqlite-source-$VERSW.zip
     84 zip ../doc/sqlite-source-$VERSW.zip *
     85 cd ..
     86 cp tsrc/sqlite3.h tsrc/sqlite3ext.h .
     87 cp tsrc/shell.c .
     88 pwd
     89 zip doc/sqlite-amalgamation-$VERSW.zip sqlite3.c sqlite3.h sqlite3ext.h shell.c sqlite3.def
     90 
     91 # Construct a tarball of the source tree
     92 #
     93 echo '***** BUILDING source archive'
     94 ORIGIN=`pwd`
     95 cd $srcdir
     96 chmod +x configure
     97 cd ..
     98 mv sqlite sqlite-$VERS
     99 EXCLUDE=`find sqlite-$VERS -print | egrep '(www/|art/|doc/|contrib/|_FOSSIL_)' | sed 's,^, --exclude ,'`
    100 echo "tar czf $ORIGIN/doc/sqlite-$VERS.tar.gz $EXCLUDE sqlite-$VERS"
    101 tar czf $ORIGIN/doc/sqlite-$VERS.tar.gz $EXCLUDE sqlite-$VERS
    102 mv sqlite-$VERS sqlite
    103 cd $ORIGIN
    104 
    105 #
    106 # Build RPMS (binary) and Source RPM
    107 #
    108 
    109 # Make sure we are properly setup to build RPMs
    110 #
    111 echo "%HOME %{expand:%%(cd; pwd)}" > $HOME/.rpmmacros
    112 echo "%_topdir %{HOME}/rpm" >> $HOME/.rpmmacros
    113 mkdir $HOME/rpm
    114 mkdir $HOME/rpm/BUILD
    115 mkdir $HOME/rpm/SOURCES
    116 mkdir $HOME/rpm/RPMS
    117 mkdir $HOME/rpm/SRPMS
    118 mkdir $HOME/rpm/SPECS
    119 
    120 # create the spec file from the template
    121 sed s/SQLITE_VERSION/$VERS/g $srcdir/spec.template > $HOME/rpm/SPECS/sqlite.spec
    122 
    123 # copy the source tarball to the rpm directory
    124 cp doc/sqlite-$VERS.tar.gz $HOME/rpm/SOURCES/.
    125 
    126 # build all the rpms
    127 rpm -ba $HOME/rpm/SPECS/sqlite.spec >& rpm-$vers.log
    128 
    129 # copy the RPMs into the build directory.
    130 mv $HOME/rpm/RPMS/i386/sqlite*-$vers*.rpm doc
    131 mv $HOME/rpm/SRPMS/sqlite-$vers*.rpm doc
    132 
    133 # Build the website
    134 #
    135 #cp $srcdir/../historical/* doc
    136 #make doc
    137 #cd doc
    138 #chmod 644 *.gz
    139