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