/ Hex Artifact Content
Login

Artifact 7d09b23c05d56532e9d44a50868eb4b12ff4f74a:


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 73 71 6c 69 74 65 33 2e 63 0a 50 41 54  ke sqlite3.c.PAT
0110: 48 3d 24 50 41 54 48 3a 2f 6f 70 74 2f 6d 69 6e  H=$PATH:/opt/min
0120: 67 77 2f 62 69 6e 0a 54 43 4c 44 49 52 3d 2f 68  gw/bin.TCLDIR=/h
0130: 6f 6d 65 2f 64 72 68 2f 74 63 6c 74 6b 2f 38 34  ome/drh/tcltk/84
0140: 36 2f 77 69 6e 2f 38 34 36 77 69 6e 0a 54 43 4c  6/win/846win.TCL
0150: 53 54 55 42 4c 49 42 3d 24 54 43 4c 44 49 52 2f  STUBLIB=$TCLDIR/
0160: 6c 69 62 74 63 6c 38 34 73 74 75 62 2e 61 0a 4f  libtcl84stub.a.O
0170: 50 54 53 3d 27 2d 44 55 53 45 5f 54 43 4c 5f 53  PTS='-DUSE_TCL_S
0180: 54 55 42 53 3d 31 20 2d 44 42 55 49 4c 44 5f 73  TUBS=1 -DBUILD_s
0190: 71 6c 69 74 65 3d 31 20 2d 44 53 51 4c 49 54 45  qlite=1 -DSQLITE
01a0: 5f 4f 53 5f 57 49 4e 3d 31 27 0a 4f 50 54 53 3d  _OS_WIN=1'.OPTS=
01b0: 22 24 4f 50 54 53 20 2d 44 53 51 4c 49 54 45 5f  "$OPTS -DSQLITE_
01c0: 54 48 52 45 41 44 53 41 46 45 3d 31 22 0a 4f 50  THREADSAFE=1".OP
01d0: 54 53 3d 22 24 4f 50 54 53 20 2d 44 53 51 4c 49  TS="$OPTS -DSQLI
01e0: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 3d 31  TE_ENABLE_FTS3=1
01f0: 22 0a 4f 50 54 53 3d 22 24 4f 50 54 53 20 2d 44  ".OPTS="$OPTS -D
0200: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54  SQLITE_ENABLE_RT
0210: 52 45 45 3d 31 22 0a 4f 50 54 53 3d 22 24 4f 50  REE=1".OPTS="$OP
0220: 54 53 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42  TS -DSQLITE_ENAB
0230: 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41  LE_COLUMN_METADA
0240: 54 41 3d 31 22 0a 43 43 3d 22 69 33 38 36 2d 6d  TA=1".CC="i386-m
0250: 69 6e 67 77 33 32 6d 73 76 63 2d 67 63 63 20 2d  ingw32msvc-gcc -
0260: 4f 73 20 24 4f 50 54 53 20 2d 49 74 73 72 63 20  Os $OPTS -Itsrc 
0270: 2d 49 24 54 43 4c 44 49 52 22 0a 4e 4d 3d 22 69  -I$TCLDIR".NM="i
0280: 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d  386-mingw32msvc-
0290: 6e 6d 22 0a 43 4d 44 3d 22 24 43 43 20 2d 63 20  nm".CMD="$CC -c 
02a0: 73 71 6c 69 74 65 33 2e 63 22 0a 65 63 68 6f 20  sqlite3.c".echo 
02b0: 24 43 4d 44 0a 24 43 4d 44 0a 43 4d 44 3d 22 24  $CMD.$CMD.CMD="$
02c0: 43 43 20 2d 63 20 74 63 6c 73 71 6c 69 74 65 33  CC -c tclsqlite3
02d0: 2e 63 22 0a 65 63 68 6f 20 24 43 4d 44 0a 24 43  .c".echo $CMD.$C
02e0: 4d 44 0a 65 63 68 6f 20 27 45 58 50 4f 52 54 53  MD.echo 'EXPORTS
02f0: 27 20 3e 74 63 6c 73 71 6c 69 74 65 33 2e 64 65  ' >tclsqlite3.de
0300: 66 0a 24 4e 4d 20 74 63 6c 73 71 6c 69 74 65 33  f.$NM tclsqlite3
0310: 2e 6f 20 7c 20 67 72 65 70 20 27 20 54 20 27 20  .o | grep ' T ' 
0320: 3e 74 65 6d 70 31 0a 67 72 65 70 20 27 5f 49 6e  >temp1.grep '_In
0330: 69 74 24 27 20 74 65 6d 70 31 20 3e 74 65 6d 70  it$' temp1 >temp
0340: 32 0a 67 72 65 70 20 27 5f 53 61 66 65 49 6e 69  2.grep '_SafeIni
0350: 74 24 27 20 74 65 6d 70 31 20 3e 3e 74 65 6d 70  t$' temp1 >>temp
0360: 32 0a 67 72 65 70 20 27 20 54 20 5f 73 71 6c 69  2.grep ' T _sqli
0370: 74 65 33 5f 27 20 74 65 6d 70 31 20 3e 3e 74 65  te3_' temp1 >>te
0380: 6d 70 32 0a 65 63 68 6f 20 27 45 58 50 4f 52 54  mp2.echo 'EXPORT
0390: 53 27 20 3e 74 63 6c 73 71 6c 69 74 65 33 2e 64  S' >tclsqlite3.d
03a0: 65 66 0a 73 65 64 20 27 73 2f 5e 2e 2a 20 54 20  ef.sed 's/^.* T 
03b0: 5f 2f 2f 27 20 74 65 6d 70 32 20 7c 20 73 6f 72  _//' temp2 | sor
03c0: 74 20 7c 20 75 6e 69 71 20 3e 3e 74 63 6c 73 71  t | uniq >>tclsq
03d0: 6c 69 74 65 33 2e 64 65 66 0a 69 33 38 36 2d 6d  lite3.def.i386-m
03e0: 69 6e 67 77 33 32 6d 73 76 63 2d 64 6c 6c 77 72  ingw32msvc-dllwr
03f0: 61 70 20 5c 0a 20 20 20 20 20 2d 2d 64 65 66 20  ap \.     --def 
0400: 74 63 6c 73 71 6c 69 74 65 33 2e 64 65 66 20 2d  tclsqlite3.def -
0410: 76 20 2d 2d 65 78 70 6f 72 74 2d 61 6c 6c 20 5c  v --export-all \
0420: 0a 20 20 20 20 20 2d 2d 64 72 69 76 65 72 2d 6e  .     --driver-n
0430: 61 6d 65 20 69 33 38 36 2d 6d 69 6e 67 77 33 32  ame i386-mingw32
0440: 6d 73 76 63 2d 67 63 63 20 5c 0a 20 20 20 20 20  msvc-gcc \.     
0450: 2d 2d 64 6c 6c 74 6f 6f 6c 2d 6e 61 6d 65 20 69  --dlltool-name i
0460: 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d  386-mingw32msvc-
0470: 64 6c 6c 74 6f 6f 6c 20 5c 0a 20 20 20 20 20 2d  dlltool \.     -
0480: 2d 61 73 20 69 33 38 36 2d 6d 69 6e 67 77 33 32  -as i386-mingw32
0490: 6d 73 76 63 2d 61 73 20 5c 0a 20 20 20 20 20 2d  msvc-as \.     -
04a0: 2d 74 61 72 67 65 74 20 69 33 38 36 2d 6d 69 6e  -target i386-min
04b0: 67 77 33 32 20 5c 0a 20 20 20 20 20 2d 64 6c 6c  gw32 \.     -dll
04c0: 6e 61 6d 65 20 74 63 6c 73 71 6c 69 74 65 33 2e  name tclsqlite3.
04d0: 64 6c 6c 20 2d 6c 6d 73 76 63 72 74 20 74 63 6c  dll -lmsvcrt tcl
04e0: 73 71 6c 69 74 65 33 2e 6f 20 24 54 43 4c 53 54  sqlite3.o $TCLST
04f0: 55 42 4c 49 42 0a 24 4e 4d 20 73 71 6c 69 74 65  UBLIB.$NM sqlite
0500: 33 2e 6f 20 7c 20 67 72 65 70 20 27 20 54 20 27  3.o | grep ' T '
0510: 20 3e 74 65 6d 70 31 0a 65 63 68 6f 20 27 45 58   >temp1.echo 'EX
0520: 50 4f 52 54 53 27 20 3e 73 71 6c 69 74 65 33 2e  PORTS' >sqlite3.
0530: 64 65 66 0a 67 72 65 70 20 27 20 5f 73 71 6c 69  def.grep ' _sqli
0540: 74 65 33 5f 27 20 74 65 6d 70 31 20 7c 20 73 65  te3_' temp1 | se
0550: 64 20 27 73 2f 5e 2e 2a 20 5f 2f 2f 27 20 3e 3e  d 's/^.* _//' >>
0560: 73 71 6c 69 74 65 33 2e 64 65 66 0a 69 33 38 36  sqlite3.def.i386
0570: 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 64 6c 6c  -mingw32msvc-dll
0580: 77 72 61 70 20 5c 0a 20 20 20 20 20 2d 2d 64 65  wrap \.     --de
0590: 66 20 73 71 6c 69 74 65 33 2e 64 65 66 20 2d 76  f sqlite3.def -v
05a0: 20 2d 2d 65 78 70 6f 72 74 2d 61 6c 6c 20 5c 0a   --export-all \.
05b0: 20 20 20 20 20 2d 2d 64 72 69 76 65 72 2d 6e 61       --driver-na
05c0: 6d 65 20 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d  me i386-mingw32m
05d0: 73 76 63 2d 67 63 63 20 5c 0a 20 20 20 20 20 2d  svc-gcc \.     -
05e0: 2d 64 6c 6c 74 6f 6f 6c 2d 6e 61 6d 65 20 69 33  -dlltool-name i3
05f0: 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 64  86-mingw32msvc-d
0600: 6c 6c 74 6f 6f 6c 20 5c 0a 20 20 20 20 20 2d 2d  lltool \.     --
0610: 61 73 20 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d  as i386-mingw32m
0620: 73 76 63 2d 61 73 20 5c 0a 20 20 20 20 20 2d 2d  svc-as \.     --
0630: 74 61 72 67 65 74 20 69 33 38 36 2d 6d 69 6e 67  target i386-ming
0640: 77 33 32 20 5c 0a 20 20 20 20 20 2d 64 6c 6c 6e  w32 \.     -dlln
0650: 61 6d 65 20 73 71 6c 69 74 65 33 2e 64 6c 6c 20  ame sqlite3.dll 
0660: 2d 6c 6d 73 76 63 72 74 20 73 71 6c 69 74 65 33  -lmsvcrt sqlite3
0670: 2e 6f 0a                                         .o.