/ Hex Artifact Content
Login

Artifact cbc7d92d02f9317a3d24ab55bb727275417260ca:


0000: 23 21 2f 62 69 6e 2f 73 68 0a 23 0a 23 20 54 68  #!/bin/sh.#.# Th
0010: 69 73 20 73 63 72 69 70 74 20 69 73 20 75 73 65  is script is use
0020: 64 20 74 6f 20 63 6f 6d 70 69 6c 65 20 53 51 4c  d to compile SQL
0030: 69 74 65 20 69 6e 74 6f 20 61 20 44 4c 4c 2e 0a  ite into a DLL..
0040: 23 0a 23 20 54 77 6f 20 73 65 70 61 72 61 74 65  #.# Two separate
0050: 20 44 4c 4c 73 20 61 72 65 20 67 65 6e 65 72 61   DLLs are genera
0060: 74 65 64 2e 20 20 22 73 71 6c 69 74 65 33 2e 64  ted.  "sqlite3.d
0070: 6c 6c 22 20 69 73 20 74 68 65 20 63 6f 72 65 0a  ll" is the core.
0080: 23 20 6c 69 62 72 61 72 79 2e 20 20 22 74 63 6c  # library.  "tcl
0090: 73 71 6c 69 74 65 33 2e 64 6c 6c 22 20 63 6f 6e  sqlite3.dll" con
00a0: 74 61 69 6e 73 20 74 68 65 20 54 43 4c 20 62 69  tains the TCL bi
00b0: 6e 64 69 6e 67 73 20 61 6e 64 20 69 73 20 74 68  ndings and is th
00c0: 65 0a 23 20 6c 69 62 72 61 72 79 20 74 68 61 74  e.# library that
00d0: 20 69 73 20 6c 6f 61 64 65 64 20 69 6e 74 6f 20   is loaded into 
00e0: 54 43 4c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  TCL in order to 
00f0: 72 75 6e 20 53 51 4c 69 74 65 2e 0a 23 0a 6d 61  run SQLite..#.ma
0100: 6b 65 20 74 61 72 67 65 74 5f 73 6f 75 72 63 65  ke target_source
0110: 0a 63 64 20 74 73 72 63 0a 50 41 54 48 3d 24 50  .cd tsrc.PATH=$P
0120: 41 54 48 3a 2f 6f 70 74 2f 6d 69 6e 67 77 2f 62  ATH:/opt/mingw/b
0130: 69 6e 0a 54 43 4c 44 49 52 3d 2f 68 6f 6d 65 2f  in.TCLDIR=/home/
0140: 64 72 68 2f 74 63 6c 74 6b 2f 38 34 36 2f 77 69  drh/tcltk/846/wi
0150: 6e 2f 38 34 36 77 69 6e 0a 54 43 4c 53 54 55 42  n/846win.TCLSTUB
0160: 4c 49 42 3d 24 54 43 4c 44 49 52 2f 6c 69 62 74  LIB=$TCLDIR/libt
0170: 63 6c 38 34 73 74 75 62 2e 61 0a 4f 50 54 53 3d  cl84stub.a.OPTS=
0180: 27 2d 44 55 53 45 5f 54 43 4c 5f 53 54 55 42 53  '-DUSE_TCL_STUBS
0190: 3d 31 20 2d 44 4e 44 45 42 55 47 3d 31 20 2d 44  =1 -DNDEBUG=1 -D
01a0: 54 48 52 45 41 44 53 41 46 45 3d 31 20 2d 44 42  THREADSAFE=1 -DB
01b0: 55 49 4c 44 5f 73 71 6c 69 74 65 3d 31 27 0a 43  UILD_sqlite=1'.C
01c0: 43 3d 22 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d  C="i386-mingw32m
01d0: 73 76 63 2d 67 63 63 20 2d 4f 32 20 24 4f 50 54  svc-gcc -O2 $OPT
01e0: 53 20 2d 49 2e 20 2d 49 24 54 43 4c 44 49 52 22  S -I. -I$TCLDIR"
01f0: 0a 4e 4d 3d 22 69 33 38 36 2d 6d 69 6e 67 77 33  .NM="i386-mingw3
0200: 32 6d 73 76 63 2d 6e 6d 22 0a 72 6d 20 73 68 65  2msvc-nm".rm she
0210: 6c 6c 2e 63 0a 66 6f 72 20 69 20 69 6e 20 2a 2e  ll.c.for i in *.
0220: 63 3b 20 64 6f 0a 20 20 43 4d 44 3d 22 24 43 43  c; do.  CMD="$CC
0230: 20 2d 63 20 24 69 22 0a 20 20 65 63 68 6f 20 24   -c $i".  echo $
0240: 43 4d 44 0a 20 20 24 43 4d 44 0a 64 6f 6e 65 0a  CMD.  $CMD.done.
0250: 65 63 68 6f 20 27 45 58 50 4f 52 54 53 27 20 3e  echo 'EXPORTS' >
0260: 74 63 6c 73 71 6c 69 74 65 33 2e 64 65 66 0a 24  tclsqlite3.def.$
0270: 4e 4d 20 2a 2e 6f 20 7c 20 67 72 65 70 20 27 20  NM *.o | grep ' 
0280: 54 20 27 20 3e 74 65 6d 70 31 0a 67 72 65 70 20  T ' >temp1.grep 
0290: 27 5f 49 6e 69 74 24 27 20 74 65 6d 70 31 20 3e  '_Init$' temp1 >
02a0: 74 65 6d 70 32 0a 67 72 65 70 20 27 5f 53 61 66  temp2.grep '_Saf
02b0: 65 49 6e 69 74 24 27 20 74 65 6d 70 31 20 3e 3e  eInit$' temp1 >>
02c0: 74 65 6d 70 32 0a 67 72 65 70 20 27 20 54 20 5f  temp2.grep ' T _
02d0: 73 71 6c 69 74 65 33 5f 27 20 74 65 6d 70 31 20  sqlite3_' temp1 
02e0: 3e 3e 74 65 6d 70 32 0a 65 63 68 6f 20 27 45 58  >>temp2.echo 'EX
02f0: 50 4f 52 54 53 27 20 3e 74 63 6c 73 71 6c 69 74  PORTS' >tclsqlit
0300: 65 33 2e 64 65 66 0a 73 65 64 20 27 73 2f 5e 2e  e3.def.sed 's/^.
0310: 2a 20 54 20 5f 2f 2f 27 20 74 65 6d 70 32 20 7c  * T _//' temp2 |
0320: 20 73 6f 72 74 20 7c 20 75 6e 69 71 20 3e 3e 74   sort | uniq >>t
0330: 63 6c 73 71 6c 69 74 65 33 2e 64 65 66 0a 69 33  clsqlite3.def.i3
0340: 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 64  86-mingw32msvc-d
0350: 6c 6c 77 72 61 70 20 5c 0a 20 20 20 20 20 2d 2d  llwrap \.     --
0360: 64 65 66 20 74 63 6c 73 71 6c 69 74 65 33 2e 64  def tclsqlite3.d
0370: 65 66 20 2d 76 20 2d 2d 65 78 70 6f 72 74 2d 61  ef -v --export-a
0380: 6c 6c 20 5c 0a 20 20 20 20 20 2d 2d 64 72 69 76  ll \.     --driv
0390: 65 72 2d 6e 61 6d 65 20 69 33 38 36 2d 6d 69 6e  er-name i386-min
03a0: 67 77 33 32 6d 73 76 63 2d 67 63 63 20 5c 0a 20  gw32msvc-gcc \. 
03b0: 20 20 20 20 2d 2d 64 6c 6c 74 6f 6f 6c 2d 6e 61      --dlltool-na
03c0: 6d 65 20 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d  me i386-mingw32m
03d0: 73 76 63 2d 64 6c 6c 74 6f 6f 6c 20 5c 0a 20 20  svc-dlltool \.  
03e0: 20 20 20 2d 2d 61 73 20 69 33 38 36 2d 6d 69 6e     --as i386-min
03f0: 67 77 33 32 6d 73 76 63 2d 61 73 20 5c 0a 20 20  gw32msvc-as \.  
0400: 20 20 20 2d 2d 74 61 72 67 65 74 20 69 33 38 36     --target i386
0410: 2d 6d 69 6e 67 77 33 32 20 5c 0a 20 20 20 20 20  -mingw32 \.     
0420: 2d 64 6c 6c 6e 61 6d 65 20 74 63 6c 73 71 6c 69  -dllname tclsqli
0430: 74 65 33 2e 64 6c 6c 20 2d 6c 6d 73 76 63 72 74  te3.dll -lmsvcrt
0440: 20 2a 2e 6f 20 24 54 43 4c 53 54 55 42 4c 49 42   *.o $TCLSTUBLIB
0450: 0a 23 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73  .#i386-mingw32ms
0460: 76 63 2d 73 74 72 69 70 20 74 63 6c 73 71 6c 69  vc-strip tclsqli
0470: 74 65 33 2e 64 6c 6c 0a 72 6d 20 74 63 6c 73 71  te3.dll.rm tclsq
0480: 6c 69 74 65 2e 6f 0a 24 4e 4d 20 2a 2e 6f 20 7c  lite.o.$NM *.o |
0490: 20 67 72 65 70 20 27 20 54 20 27 20 3e 74 65 6d   grep ' T ' >tem
04a0: 70 31 0a 65 63 68 6f 20 27 45 58 50 4f 52 54 53  p1.echo 'EXPORTS
04b0: 27 20 3e 73 71 6c 69 74 65 33 2e 64 65 66 0a 67  ' >sqlite3.def.g
04c0: 72 65 70 20 27 20 5f 73 71 6c 69 74 65 33 5f 27  rep ' _sqlite3_'
04d0: 20 74 65 6d 70 31 20 7c 20 73 65 64 20 27 73 2f   temp1 | sed 's/
04e0: 5e 2e 2a 20 5f 2f 2f 27 20 3e 3e 73 71 6c 69 74  ^.* _//' >>sqlit
04f0: 65 33 2e 64 65 66 0a 69 33 38 36 2d 6d 69 6e 67  e3.def.i386-ming
0500: 77 33 32 6d 73 76 63 2d 64 6c 6c 77 72 61 70 20  w32msvc-dllwrap 
0510: 5c 0a 20 20 20 20 20 2d 2d 64 65 66 20 73 71 6c  \.     --def sql
0520: 69 74 65 33 2e 64 65 66 20 2d 76 20 2d 2d 65 78  ite3.def -v --ex
0530: 70 6f 72 74 2d 61 6c 6c 20 5c 0a 20 20 20 20 20  port-all \.     
0540: 2d 2d 64 72 69 76 65 72 2d 6e 61 6d 65 20 69 33  --driver-name i3
0550: 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 67  86-mingw32msvc-g
0560: 63 63 20 5c 0a 20 20 20 20 20 2d 2d 64 6c 6c 74  cc \.     --dllt
0570: 6f 6f 6c 2d 6e 61 6d 65 20 69 33 38 36 2d 6d 69  ool-name i386-mi
0580: 6e 67 77 33 32 6d 73 76 63 2d 64 6c 6c 74 6f 6f  ngw32msvc-dlltoo
0590: 6c 20 5c 0a 20 20 20 20 20 2d 2d 61 73 20 69 33  l \.     --as i3
05a0: 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 61  86-mingw32msvc-a
05b0: 73 20 5c 0a 20 20 20 20 20 2d 2d 74 61 72 67 65  s \.     --targe
05c0: 74 20 69 33 38 36 2d 6d 69 6e 67 77 33 32 20 5c  t i386-mingw32 \
05d0: 0a 20 20 20 20 20 2d 64 6c 6c 6e 61 6d 65 20 73  .     -dllname s
05e0: 71 6c 69 74 65 33 2e 64 6c 6c 20 2d 6c 6d 73 76  qlite3.dll -lmsv
05f0: 63 72 74 20 2a 2e 6f 0a 23 69 33 38 36 2d 6d 69  crt *.o.#i386-mi
0600: 6e 67 77 33 32 6d 73 76 63 2d 73 74 72 69 70 20  ngw32msvc-strip 
0610: 73 71 6c 69 74 65 33 2e 64 6c 6c 0a 63 64 20 2e  sqlite3.dll.cd .
0620: 2e 0a                                            ..