mkdll.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/sh
  2. #
  3. # This script is used to compile SQLite into a DLL.
  4. #
  5. # Two separate DLLs are generated. "sqlite3.dll" is the core
  6. # library. "tclsqlite3.dll" contains the TCL bindings and is the
  7. # library that is loaded into TCL in order to run SQLite.
  8. #
  9. make sqlite3.c
  10. PATH=$PATH:/opt/mingw/bin
  11. TCLDIR=/home/drh/tcltk/846/win/846win
  12. TCLSTUBLIB=$TCLDIR/libtcl84stub.a
  13. OPTS='-DUSE_TCL_STUBS=1 -DBUILD_sqlite=1 -DSQLITE_OS_WIN=1'
  14. OPTS="$OPTS -DSQLITE_THREADSAFE=1"
  15. OPTS="$OPTS -DSQLITE_ENABLE_FTS3=1"
  16. OPTS="$OPTS -DSQLITE_ENABLE_RTREE=1"
  17. OPTS="$OPTS -DSQLITE_ENABLE_COLUMN_METADATA=1"
  18. CC="i386-mingw32msvc-gcc -Os $OPTS -Itsrc -I$TCLDIR"
  19. NM="i386-mingw32msvc-nm"
  20. CMD="$CC -c sqlite3.c"
  21. echo $CMD
  22. $CMD
  23. CMD="$CC -c tclsqlite3.c"
  24. echo $CMD
  25. $CMD
  26. echo 'EXPORTS' >tclsqlite3.def
  27. $NM tclsqlite3.o | grep ' T ' >temp1
  28. grep '_Init$' temp1 >temp2
  29. grep '_SafeInit$' temp1 >>temp2
  30. grep ' T _sqlite3_' temp1 >>temp2
  31. echo 'EXPORTS' >tclsqlite3.def
  32. sed 's/^.* T _//' temp2 | sort | uniq >>tclsqlite3.def
  33. i386-mingw32msvc-dllwrap \
  34. --def tclsqlite3.def -v --export-all \
  35. --driver-name i386-mingw32msvc-gcc \
  36. --dlltool-name i386-mingw32msvc-dlltool \
  37. --as i386-mingw32msvc-as \
  38. --target i386-mingw32 \
  39. -dllname tclsqlite3.dll -lmsvcrt tclsqlite3.o $TCLSTUBLIB
  40. $NM sqlite3.o | grep ' T ' >temp1
  41. echo 'EXPORTS' >sqlite3.def
  42. grep ' _sqlite3_' temp1 | sed 's/^.* _//' >>sqlite3.def
  43. i386-mingw32msvc-dllwrap \
  44. --def sqlite3.def -v --export-all \
  45. --driver-name i386-mingw32msvc-gcc \
  46. --dlltool-name i386-mingw32msvc-dlltool \
  47. --as i386-mingw32msvc-as \
  48. --target i386-mingw32 \
  49. -dllname sqlite3.dll -lmsvcrt sqlite3.o