/ Hex Artifact Content
Login

Artifact 468d4f41d3ea98221371df4825cfbffbaac4d7e4:


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 27 0a 43 43  THREADSAFE=1'.CC
01b0: 3d 22 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73  ="i386-mingw32ms
01c0: 76 63 2d 67 63 63 20 2d 4f 32 20 24 4f 50 54 53  vc-gcc -O2 $OPTS
01d0: 20 2d 49 2e 20 2d 49 24 54 43 4c 44 49 52 22 0a   -I. -I$TCLDIR".
01e0: 72 6d 20 73 68 65 6c 6c 2e 63 0a 66 6f 72 20 69  rm shell.c.for i
01f0: 20 69 6e 20 2a 2e 63 3b 20 64 6f 0a 20 20 43 4d   in *.c; do.  CM
0200: 44 3d 22 24 43 43 20 2d 63 20 24 69 22 0a 20 20  D="$CC -c $i".  
0210: 65 63 68 6f 20 24 43 4d 44 0a 20 20 24 43 4d 44  echo $CMD.  $CMD
0220: 0a 64 6f 6e 65 0a 65 63 68 6f 20 27 45 58 50 4f  .done.echo 'EXPO
0230: 52 54 53 27 20 3e 74 63 6c 73 71 6c 69 74 65 33  RTS' >tclsqlite3
0240: 2e 64 65 66 0a 65 63 68 6f 20 27 54 63 6c 73 71  .def.echo 'Tclsq
0250: 6c 69 74 65 33 5f 49 6e 69 74 27 20 3e 3e 74 63  lite3_Init' >>tc
0260: 6c 73 71 6c 69 74 65 33 2e 64 65 66 0a 65 63 68  lsqlite3.def.ech
0270: 6f 20 27 53 71 6c 69 74 65 33 5f 49 6e 69 74 27  o 'Sqlite3_Init'
0280: 20 3e 3e 74 63 6c 73 71 6c 69 74 65 33 2e 64 65   >>tclsqlite3.de
0290: 66 0a 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73  f.i386-mingw32ms
02a0: 76 63 2d 64 6c 6c 77 72 61 70 20 5c 0a 20 20 20  vc-dllwrap \.   
02b0: 20 20 2d 2d 64 65 66 20 74 63 6c 73 71 6c 69 74    --def tclsqlit
02c0: 65 33 2e 64 65 66 20 2d 76 20 2d 2d 65 78 70 6f  e3.def -v --expo
02d0: 72 74 2d 61 6c 6c 20 5c 0a 20 20 20 20 20 2d 2d  rt-all \.     --
02e0: 64 72 69 76 65 72 2d 6e 61 6d 65 20 69 33 38 36  driver-name i386
02f0: 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 67 63 63  -mingw32msvc-gcc
0300: 20 5c 0a 20 20 20 20 20 2d 2d 64 6c 6c 74 6f 6f   \.     --dlltoo
0310: 6c 2d 6e 61 6d 65 20 69 33 38 36 2d 6d 69 6e 67  l-name i386-ming
0320: 77 33 32 6d 73 76 63 2d 64 6c 6c 74 6f 6f 6c 20  w32msvc-dlltool 
0330: 5c 0a 20 20 20 20 20 2d 2d 61 73 20 69 33 38 36  \.     --as i386
0340: 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 61 73 20  -mingw32msvc-as 
0350: 5c 0a 20 20 20 20 20 2d 2d 74 61 72 67 65 74 20  \.     --target 
0360: 69 33 38 36 2d 6d 69 6e 67 77 33 32 20 5c 0a 20  i386-mingw32 \. 
0370: 20 20 20 20 2d 64 6c 6c 6e 61 6d 65 20 74 63 6c      -dllname tcl
0380: 73 71 6c 69 74 65 33 2e 64 6c 6c 20 2d 6c 6d 73  sqlite3.dll -lms
0390: 76 63 72 74 20 2a 2e 6f 20 24 54 43 4c 53 54 55  vcrt *.o $TCLSTU
03a0: 42 4c 49 42 0a 69 33 38 36 2d 6d 69 6e 67 77 33  BLIB.i386-mingw3
03b0: 32 6d 73 76 63 2d 73 74 72 69 70 20 74 63 6c 73  2msvc-strip tcls
03c0: 71 6c 69 74 65 33 2e 64 6c 6c 0a 72 6d 20 74 63  qlite3.dll.rm tc
03d0: 6c 73 71 6c 69 74 65 2e 6f 0a 69 33 38 36 2d 6d  lsqlite.o.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: 73 71 6c 69 74 65 33 2e 64 65 66 20 2d 76 20 2d  sqlite3.def -v -
0410: 2d 65 78 70 6f 72 74 2d 61 6c 6c 20 5c 0a 20 20  -export-all \.  
0420: 20 20 20 2d 2d 64 72 69 76 65 72 2d 6e 61 6d 65     --driver-name
0430: 20 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76   i386-mingw32msv
0440: 63 2d 67 63 63 20 5c 0a 20 20 20 20 20 2d 2d 64  c-gcc \.     --d
0450: 6c 6c 74 6f 6f 6c 2d 6e 61 6d 65 20 69 33 38 36  lltool-name i386
0460: 2d 6d 69 6e 67 77 33 32 6d 73 76 63 2d 64 6c 6c  -mingw32msvc-dll
0470: 74 6f 6f 6c 20 5c 0a 20 20 20 20 20 2d 2d 61 73  tool \.     --as
0480: 20 69 33 38 36 2d 6d 69 6e 67 77 33 32 6d 73 76   i386-mingw32msv
0490: 63 2d 61 73 20 5c 0a 20 20 20 20 20 2d 2d 74 61  c-as \.     --ta
04a0: 72 67 65 74 20 69 33 38 36 2d 6d 69 6e 67 77 33  rget i386-mingw3
04b0: 32 20 5c 0a 20 20 20 20 20 2d 64 6c 6c 6e 61 6d  2 \.     -dllnam
04c0: 65 20 73 71 6c 69 74 65 33 2e 64 6c 6c 20 2d 6c  e sqlite3.dll -l
04d0: 6d 73 76 63 72 74 20 2a 2e 6f 0a 69 33 38 36 2d  msvcrt *.o.i386-
04e0: 6d 69 6e 67 77 33 32 6d 73 76 63 2d 73 74 72 69  mingw32msvc-stri
04f0: 70 20 73 71 6c 69 74 65 33 2e 64 6c 6c 0a 63 64  p sqlite3.dll.cd
0500: 20 2e 2e 0a                                       ...