15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/bin/sh
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This script is used to compile SQLite and package everything up
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# so that it is ready to move to the SQLite website.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set srcdir to the name of the directory that contains the publish.sh
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# script.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)srcdir=`echo "$0" | sed 's%\(^.*\)/[^/][^/]*$%\1%'`
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Get the makefile.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cp $srcdir/Makefile.linux-gcc ./Makefile
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chmod +x $srcdir/install-sh
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Get the current version number - needed to help build filenames
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)VERS=`cat $srcdir/VERSION`
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)VERSW=`sed 's/\./_/g' $srcdir/VERSION`
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo "VERSIONS: $VERS $VERSW"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Start by building an sqlite shell for linux.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make clean
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make sqlite3.c
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFLAGS="-Os -DSQLITE_ENABLE_FTS3=0 -DSQLITE_ENABLE_RTREE=0"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFLAGS="$CFLAGS -DSQLITE_THREADSAFE=0"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo '***** '"COMPILING sqlite3-$VERS.bin..."
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gcc $CFLAGS -Itsrc sqlite3.c tsrc/shell.c -o sqlite3 -ldl
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strip sqlite3
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv sqlite3 sqlite3-$VERS.bin
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gzip sqlite3-$VERS.bin
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chmod 644 sqlite3-$VERS.bin.gz
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv sqlite3-$VERS.bin.gz doc
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Build the sqlite.so and tclsqlite.so shared libraries
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# under Linux
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TCLDIR=/home/drh/tcltk/846/linux/846linux
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TCLSTUBLIB=$TCLDIR/libtclstub8.4g.a
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFLAGS="-Os -DSQLITE_ENABLE_FTS3=3 -DSQLITE_ENABLE_RTREE=1"
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFLAGS="$CFLAGS -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1"
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CFLAGS="$CFLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1"
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo '***** BUILDING shared libraries for linux'
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gcc $CFLAGS -shared tclsqlite3.c $TCLSTUBLIB -o tclsqlite3.so -lpthread
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strip tclsqlite3.so
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chmod 644 tclsqlite3.so
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv tclsqlite3.so tclsqlite-$VERS.so
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gzip tclsqlite-$VERS.so
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv tclsqlite-$VERS.so.gz doc
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gcc $CFLAGS -shared sqlite3.c -o sqlite3.so -lpthread
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strip sqlite3.so
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chmod 644 sqlite3.so
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv sqlite3.so sqlite-$VERS.so
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gzip sqlite-$VERS.so
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv sqlite-$VERS.so.gz doc
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Build the tclsqlite3.dll and sqlite3.dll shared libraries.
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles). $srcdir/mkdll.sh
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo '***** PACKAGING shared libraries for windows'
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo zip doc/tclsqlite-$VERSW.zip tclsqlite3.dll
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)zip doc/tclsqlite-$VERSW.zip tclsqlite3.dll
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo zip doc/sqlitedll-$VERSW.zip sqlite3.dll sqlite3.def
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)zip doc/sqlitedll-$VERSW.zip sqlite3.dll sqlite3.def
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Build the sqlite.exe executable for windows.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OPTS='-DSTATIC_BUILD=1 -DNDEBUG=1 -DSQLITE_THREADSAFE=0'
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OPTS="$OPTS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_RTREE=1"
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)i386-mingw32msvc-gcc -Os $OPTS -Itsrc -I$TCLDIR sqlite3.c tsrc/shell.c \
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -o sqlite3.exe
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)zip doc/sqlite-$VERSW.zip sqlite3.exe
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Build a source archive useful for windows.
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make target_source
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cd tsrc
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo '***** BUILDING preprocessed source archives'
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rm fts[12]* icu*
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rm -f ../doc/sqlite-source-$VERSW.zip
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)zip ../doc/sqlite-source-$VERSW.zip *
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cd ..
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cp tsrc/sqlite3.h tsrc/sqlite3ext.h .
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cp tsrc/shell.c .
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pwd
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)zip doc/sqlite-amalgamation-$VERSW.zip sqlite3.c sqlite3.h sqlite3ext.h shell.c sqlite3.def
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Construct a tarball of the source tree
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo '***** BUILDING source archive'
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ORIGIN=`pwd`
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cd $srcdir
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chmod +x configure
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cd ..
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv sqlite sqlite-$VERS
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXCLUDE=`find sqlite-$VERS -print | egrep '(www/|art/|doc/|contrib/|_FOSSIL_)' | sed 's,^, --exclude ,'`
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo "tar czf $ORIGIN/doc/sqlite-$VERS.tar.gz $EXCLUDE sqlite-$VERS"
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)tar czf $ORIGIN/doc/sqlite-$VERS.tar.gz $EXCLUDE sqlite-$VERS
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv sqlite-$VERS sqlite
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cd $ORIGIN
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Build RPMS (binary) and Source RPM
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure we are properly setup to build RPMs
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo "%HOME %{expand:%%(cd; pwd)}" > $HOME/.rpmmacros
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)echo "%_topdir %{HOME}/rpm" >> $HOME/.rpmmacros
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mkdir $HOME/rpm
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mkdir $HOME/rpm/BUILD
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mkdir $HOME/rpm/SOURCES
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mkdir $HOME/rpm/RPMS
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mkdir $HOME/rpm/SRPMS
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mkdir $HOME/rpm/SPECS
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# create the spec file from the template
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed s/SQLITE_VERSION/$VERS/g $srcdir/spec.template > $HOME/rpm/SPECS/sqlite.spec
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# copy the source tarball to the rpm directory
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cp doc/sqlite-$VERS.tar.gz $HOME/rpm/SOURCES/.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# build all the rpms
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rpm -ba $HOME/rpm/SPECS/sqlite.spec >& rpm-$vers.log
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# copy the RPMs into the build directory.
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv $HOME/rpm/RPMS/i386/sqlite*-$vers*.rpm doc
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mv $HOME/rpm/SRPMS/sqlite-$vers*.rpm doc
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Build the website
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#cp $srcdir/../historical/* doc
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#make doc
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#cd doc
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#chmod 644 *.gz
139