libfossil  Hex Artifact Content

Artifact acea781344fc8997e8918716a5cf203f8e199cd6:

Wiki page [AmalgamationBuild] by stephan 2014-11-07 15:14:42.
0000: 44 20 32 30 31 34 2d 31 31 2d 30 37 54 31 35 3a  D 2014-11-07T15:
0010: 31 34 3a 34 32 2e 32 37 33 0a 4c 20 41 6d 61 6c  14:42.273.L Amal
0020: 67 61 6d 61 74 69 6f 6e 42 75 69 6c 64 0a 50 20  gamationBuild.P 
0030: 61 38 39 65 39 38 38 30 64 31 34 63 31 61 38 31  a89e9880d14c1a81
0040: 36 64 38 31 31 66 39 33 30 36 64 62 35 64 39 63  6d811f9306db5d9c
0050: 33 36 32 65 31 36 36 66 0a 55 20 73 74 65 70 68  362e166f.U steph
0060: 61 6e 0a 57 20 32 35 34 38 0a 3c 68 31 3e 54 68  an.W 2548.<h1>Th
0070: 65 20 41 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 42  e Amalgamation B
0080: 75 69 6c 64 3c 2f 68 31 3e 0d 0a 0d 0a 53 65 65  uild</h1>....See
0090: 20 61 6c 73 6f 3a 20 5b 62 75 69 6c 64 69 6e 67   also: [building
00a0: 5d 0d 0a 0d 0a 54 68 69 73 20 6c 69 62 72 61 72  ]....This librar
00b0: 79 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 63  y supports the c
00c0: 72 65 61 74 69 6f 6e 20 6f 66 20 61 20 73 6f 2d  reation of a so-
00d0: 63 61 6c 6c 65 64 20 22 61 6d 61 6c 67 61 6d 61  called "amalgama
00e0: 74 69 6f 6e 20 62 75 69 6c 64 22 2c 20 61 20 70  tion build", a p
00f0: 72 61 63 74 69 63 65 20 61 64 6f 70 74 65 64 20  ractice adopted 
0100: 66 72 6f 6d 20 74 68 65 20 73 71 6c 69 74 65 20  from the sqlite 
0110: 70 72 6f 6a 65 63 74 20 77 68 69 63 68 20 63 6f  project which co
0120: 6d 70 6f 75 6e 64 73 20 74 68 65 20 73 6f 75 72  mpounds the sour
0130: 63 65 73 20 61 6e 64 20 68 65 61 64 65 72 73 20  ces and headers 
0140: 69 6e 74 6f 20 61 20 66 6f 72 6d 20 77 68 69 63  into a form whic
0150: 68 20 63 61 6e 20 65 61 73 69 6c 79 20 62 65 20  h can easily be 
0160: 64 72 6f 70 70 65 64 20 69 6e 74 6f 20 63 6c 69  dropped into cli
0170: 65 6e 74 2d 73 69 64 65 20 70 72 6f 6a 65 63 74  ent-side project
0180: 73 2e 0d 0a 0d 0a 54 6f 20 63 72 65 61 74 65 20  s.....To create 
0190: 74 68 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  the amalgamation
01a0: 20 79 6f 75 20 6e 65 65 64 20 61 20 77 6f 72 6b   you need a work
01b0: 69 6e 67 20 62 75 69 6c 64 20 65 6e 76 69 72 6f  ing build enviro
01c0: 6e 6d 65 6e 74 20 28 47 4e 55 20 4d 61 6b 65 20  nment (GNU Make 
01d0: 61 6e 64 20 66 72 69 65 6e 64 73 29 3a 0d 0a 0d  and friends):...
01e0: 0a 3c 6e 6f 77 69 6b 69 3e 3c 70 72 65 3e 0d 0a  .<nowiki><pre>..
01f0: 5b 73 74 65 70 68 61 6e 40 68 6f 73 74 3a 7e 2f  [stephan@host:~/
0200: 6c 69 62 66 6f 73 73 69 6c 2f 73 72 63 5d 24 20  libfossil/src]$ 
0210: 6d 61 6b 65 20 61 6d 61 6c 0d 0a 47 65 6e 65 72  make amal..Gener
0220: 61 74 69 6e 67 20 64 65 70 65 6e 64 65 6e 63 69  ating dependenci
0230: 65 73 2e 2e 2e 0d 0a 43 72 65 61 74 69 6e 67 20  es.....Creating 
0240: 2e 2e 2f 6c 69 62 66 6f 73 73 69 6c 2e 68 2e 2e  ../libfossil.h..
0250: 2e 0d 0a 43 72 65 61 74 69 6e 67 20 2e 2e 2f 6c  ...Creating ../l
0260: 69 62 66 6f 73 73 69 6c 2e 63 2e 2e 2e 0d 0a 54  ibfossil.c.....T
0270: 72 79 69 6e 67 20 47 43 43 20 43 38 39 2e 2e 2e  rying GCC C89...
0280: 0d 0a 54 72 79 69 6e 67 20 47 43 43 20 43 39 39  ..Trying GCC C99
0290: 2e 2e 2e 0d 0a 54 72 79 69 6e 67 20 74 63 63 2e  .....Trying tcc.
02a0: 2e 2e 0d 0a 4d 61 6e 2c 20 74 68 61 74 20 77 61  ....Man, that wa
02b0: 73 20 46 41 53 54 21 0d 0a 54 72 79 69 6e 67 20  s FAST!..Trying 
02c0: 63 6c 61 6e 67 2e 2e 2e 0d 0a 3c 2f 70 72 65 3e  clang.....</pre>
02d0: 3c 2f 6e 6f 77 69 6b 69 3e 0d 0a 0d 0a 49 74 20  </nowiki>....It 
02e0: 77 69 6c 6c 20 74 72 79 20 74 6f 20 63 6f 6d 70  will try to comp
02f0: 69 6c 65 20 69 74 20 77 69 74 68 20 76 61 72 69  ile it with vari
0300: 6f 75 73 20 63 6f 6d 70 69 6c 65 72 73 20 69 66  ous compilers if
0310: 20 74 68 65 79 20 61 72 65 20 66 6f 75 6e 64 20   they are found 
0320: 69 6e 0d 0a 74 68 65 20 73 65 61 72 63 68 20 70  in..the search p
0330: 61 74 68 2e 0d 0a 0d 0a 54 68 65 20 6f 75 74 70  ath.....The outp
0340: 75 74 20 69 73 20 74 68 65 73 65 20 74 68 72 65  ut is these thre
0350: 65 20 66 69 6c 65 73 3a 0d 0a 0d 0a 20 20 20 2a  e files:....   *
0360: 20 20 3c 74 74 3e 6c 69 62 66 6f 73 73 69 6c 2d    <tt>libfossil-
0370: 63 6f 6e 66 69 67 2e 68 3c 2f 74 74 3e 20 68 6f  config.h</tt> ho
0380: 6c 64 73 20 61 20 62 61 73 69 63 20 73 65 74 20  lds a basic set 
0390: 6f 66 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  of configuration
03a0: 20 6f 70 74 69 6f 6e 73 2e 20 54 68 69 73 20 66   options. This f
03b0: 69 6c 65 20 63 61 6e 2f 73 68 6f 75 6c 64 20 62  ile can/should b
03c0: 65 20 74 77 65 61 6b 65 64 20 66 6f 72 20 74 68  e tweaked for th
03d0: 65 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72  e target platfor
03e0: 6d 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 6f  m. The default o
03f0: 70 74 69 6f 6e 73 20 73 65 74 20 74 68 65 72 65  ptions set there
0400: 20 61 72 65 2c 20 62 79 20 64 65 73 69 67 6e 2c   are, by design,
0410: 20 63 6f 6e 73 65 72 76 61 74 69 76 65 2e 20 54   conservative. T
0420: 68 61 74 20 73 61 69 64 2c 20 74 68 65 20 63 6f  hat said, the co
0430: 6e 73 65 72 76 61 74 69 76 65 20 6f 70 74 69 6f  nservative optio
0440: 6e 73 20 22 73 68 6f 75 6c 64 22 20 77 6f 72 6b  ns "should" work
0450: 20 6a 75 73 74 20 66 69 6e 65 20 66 6f 72 20 61   just fine for a
0460: 6c 6c 20 6d 6f 64 65 72 6e 20 70 6c 61 74 66 6f  ll modern platfo
0470: 72 6d 73 2e 0d 0a 20 20 20 2a 20 20 3c 74 74 3e  rms...   *  <tt>
0480: 6c 69 62 66 6f 73 73 69 6c 2e 68 3c 2f 74 74 3e  libfossil.h</tt>
0490: 20 63 6f 6e 74 61 69 6e 73 20 68 65 61 64 65 72   contains header
04a0: 20 66 69 6c 65 73 2e 20 49 74 20 3c 74 74 3e 23   files. It <tt>#
04b0: 69 6e 63 6c 75 64 65 3c 2f 74 74 3e 73 20 3c 74  include</tt>s <t
04c0: 74 3e 6c 69 62 66 6f 73 73 69 6c 2d 63 6f 6e 66  t>libfossil-conf
04d0: 69 67 2e 68 3c 2f 74 74 3e 2e 0d 0a 20 20 20 2a  ig.h</tt>...   *
04e0: 20 20 3c 74 74 3e 6c 69 62 66 6f 73 73 69 6c 2e    <tt>libfossil.
04f0: 63 3c 2f 74 74 3e 20 63 6f 6e 74 61 69 6e 73 20  c</tt> contains 
0500: 61 6c 6c 20 6f 66 20 74 68 65 20 73 6f 75 72 63  all of the sourc
0510: 65 73 2e 20 49 74 20 3c 74 74 3e 23 69 6e 63 6c  es. It <tt>#incl
0520: 75 64 65 3c 2f 74 74 3e 73 20 3c 74 74 3e 6c 69  ude</tt>s <tt>li
0530: 62 66 6f 73 73 69 6c 2e 68 3c 2f 74 74 3e 2e 0d  bfossil.h</tt>..
0540: 0a 0d 0a 54 68 65 20 43 2b 2b 20 62 75 69 6c 64  ...The C++ build
0550: 20 61 6c 73 6f 20 68 61 73 20 61 6e 20 61 6d 61   also has an ama
0560: 6c 67 61 6d 61 74 69 6f 6e 20 62 75 69 6c 64 20  lgamation build 
0570: 77 68 69 63 68 20 72 65 71 75 69 72 65 73 20 74  which requires t
0580: 68 69 73 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  his amalgamation
0590: 2e 20 54 6f 20 62 75 69 6c 64 20 69 74 2c 20 72  . To build it, r
05a0: 75 6e 20 3c 74 74 3e 6d 61 6b 65 20 61 6d 61 6c  un <tt>make amal
05b0: 3c 2f 74 74 3e 20 66 72 6f 6d 20 74 68 65 20 3c  </tt> from the <
05c0: 74 74 3e 63 70 70 3c 2f 74 74 3e 20 64 69 72 65  tt>cpp</tt> dire
05d0: 63 74 6f 72 79 2e 0d 0a 0d 0a 54 6f 20 75 73 65  ctory.....To use
05e0: 20 74 68 65 20 61 6d 61 6c 67 61 6d 61 74 69 6f   the amalgamatio
05f0: 6e 2c 20 73 69 6d 70 6c 79 3a 0d 0a 0d 0a 20 20  n, simply:....  
0600: 20 2a 20 20 4d 61 6b 65 20 73 75 72 65 20 79 6f   *  Make sure yo
0610: 75 20 68 61 76 65 20 7a 6c 69 62 20 61 6e 64 20  u have zlib and 
0620: 73 71 6c 69 74 65 33 20 6c 69 62 72 61 72 69 65  sqlite3 librarie
0630: 73 20 61 6e 64 20 68 65 61 64 65 72 73 20 69 6e  s and headers in
0640: 73 74 61 6c 6c 65 64 2e 20 54 68 65 79 20 61 72  stalled. They ar
0650: 65 20 70 72 65 69 6e 73 74 61 6c 6c 65 64 20 6f  e preinstalled o
0660: 6e 20 61 6e 79 20 6d 6f 64 65 72 6e 20 55 6e 69  n any modern Uni
0670: 78 20 73 79 73 74 65 6d 2c 20 74 68 6f 75 67 68  x system, though
0680: 20 61 20 6e 65 77 65 72 20 73 71 6c 69 74 65 33   a newer sqlite3
0690: 20 3c 65 6d 3e 6d 69 67 68 74 3c 2f 65 6d 3e 20   <em>might</em> 
06a0: 62 65 20 72 65 71 75 69 72 65 64 20 28 77 68 69  be required (whi
06b0: 63 68 20 76 65 72 73 69 6f 6e 20 69 73 20 75 6e  ch version is un
06c0: 6b 6e 6f 77 6e 20 2d 20 64 65 76 65 6c 6f 70 6d  known - developm
06d0: 65 6e 74 20 74 79 70 69 63 61 6c 6c 79 20 68 61  ent typically ha
06e0: 70 70 65 6e 73 20 61 67 61 69 6e 73 74 20 74 68  ppens against th
06f0: 65 20 73 71 6c 69 74 65 33 20 74 72 75 6e 6b 29  e sqlite3 trunk)
0700: 2e 20 4f 70 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f  . Optionally, yo
0710: 75 20 63 61 6e 20 6c 69 6e 6b 20 69 6e 20 61 20  u can link in a 
0720: 73 65 6c 66 2d 63 6f 6d 70 69 6c 65 64 20 3c 74  self-compiled <t
0730: 74 3e 73 71 6c 69 74 65 33 2e 6f 3c 2f 74 74 3e  t>sqlite3.o</tt>
0740: 2e 0d 0a 20 20 20 2a 20 20 3c 74 74 3e 23 69 6e  ...   *  <tt>#in
0750: 63 6c 75 64 65 20 22 6c 69 62 66 6f 73 73 69 6c  clude "libfossil
0760: 2e 68 22 0d 0a 20 20 20 2a 20 20 43 6f 6d 70 69  .h"..   *  Compi
0770: 6c 65 20 3c 74 74 3e 6c 69 62 66 6f 73 73 69 6c  le <tt>libfossil
0780: 2e 63 3c 2f 74 74 3e 0d 0a 20 20 20 2a 20 20 4c  .c</tt>..   *  L
0790: 69 6e 6b 20 79 6f 75 72 20 61 70 70 20 77 69 74  ink your app wit
07a0: 68 20 3c 74 74 3e 6c 69 62 66 6f 73 73 69 6c 2e  h <tt>libfossil.
07b0: 6f 3c 2f 74 74 3e 2c 20 7a 6c 69 62 2c 20 61 6e  o</tt>, zlib, an
07c0: 64 20 73 71 6c 69 74 65 33 2e 20 4f 6e 20 55 6e  d sqlite3. On Un
07d0: 69 78 3a 20 3c 74 74 3e 2d 6c 7a 20 2d 6c 73 71  ix: <tt>-lz -lsq
07e0: 6c 69 74 65 33 20 2d 6c 64 6c 20 2d 6c 70 74 68  lite3 -ldl -lpth
07f0: 72 65 61 64 3c 2f 74 74 3e 2e 20 3c 62 72 2f 3e  read</tt>. <br/>
0800: 3c 74 74 3e 6c 69 62 64 6c 3c 2f 74 74 3e 20 61  <tt>libdl</tt> a
0810: 6e 64 20 3c 74 74 3e 6c 69 62 70 74 68 72 65 61  nd <tt>libpthrea
0820: 64 3c 2f 74 74 3e 20 69 73 20 72 65 71 75 69 72  d</tt> is requir
0830: 65 64 20 62 79 20 73 71 6c 69 74 65 33 20 69 6e  ed by sqlite3 in
0840: 20 73 6f 6d 65 20 63 6f 6e 66 69 67 75 72 61 74   some configurat
0850: 69 6f 6e 73 2e 0d 0a 0d 0a 52 65 67 61 72 64 69  ions.....Regardi
0860: 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33 20 64  ng the sqlite3 d
0870: 65 70 65 6e 64 65 6e 63 79 3a 20 63 75 72 72 65  ependency: curre
0880: 6e 74 6c 79 20 74 68 69 73 20 6c 69 62 72 61 72  ntly this librar
0890: 79 20 74 72 69 65 73 20 74 6f 20 77 6f 72 6b 0d  y tries to work.
08a0: 0a 77 69 74 68 20 77 68 61 74 65 76 65 72 20 73  .with whatever s
08b0: 71 6c 69 74 65 33 20 76 65 72 73 69 6f 6e 20 69  qlite3 version i
08c0: 73 20 69 6e 73 74 61 6c 6c 65 64 2c 20 62 75 74  s installed, but
08d0: 20 69 66 20 69 74 20 61 74 20 73 6f 6d 65 20 70   if it at some p
08e0: 6f 69 6e 74 0d 0a 72 65 71 75 69 72 65 73 20 66  oint..requires f
08f0: 65 61 74 75 72 65 73 20 6f 66 20 72 65 6c 61 74  eatures of relat
0900: 69 76 65 6c 79 20 6e 65 77 20 76 65 72 73 69 6f  ively new versio
0910: 6e 73 20 74 68 65 6e 20 63 6c 69 65 6e 74 73 20  ns then clients 
0920: 6d 61 79 20 6e 65 65 64 20 74 6f 0d 0a 75 73 65  may need to..use
0930: 20 74 68 65 20 5b 68 74 74 70 3a 2f 2f 77 77 77   the [http://www
0940: 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 61 6d 61 6c  .sqlite.org/amal
0950: 67 61 6d 61 74 69 6f 6e 2e 68 74 6d 6c 7c 73 71  gamation.html|sq
0960: 6c 69 74 65 33 20 61 6d 61 6c 67 61 6d 61 74 69  lite3 amalgamati
0970: 6f 6e 5d 0d 0a 77 68 65 6e 20 62 75 69 6c 64 69  on]..when buildi
0980: 6e 67 20 74 68 69 73 20 63 6f 64 65 2e 20 54 68  ng this code. Th
0990: 65 20 6d 61 69 6e 20 6d 61 6b 65 66 69 6c 65 20  e main makefile 
09a0: 77 69 6c 6c 20 75 73 65 20 74 68 6f 73 65 20 74  will use those t
09b0: 77 6f 20 66 69 6c 65 73 0d 0a 28 73 71 6c 69 74  wo files..(sqlit
09c0: 65 33 2e 63 20 61 6e 64 20 73 71 6c 69 74 65 33  e3.c and sqlite3
09d0: 2e 68 29 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  .h) automaticall
09e0: 79 20 69 66 20 74 68 65 79 20 61 72 65 20 66 6f  y if they are fo
09f0: 75 6e 64 20 69 6e 20 74 68 65 20 3c 74 74 3e 73  und in the <tt>s
0a00: 72 63 2f 3c 2f 74 74 3e 0d 0a 64 69 72 20 74 68  rc/</tt>..dir th
0a10: 65 20 62 75 69 6c 64 20 74 72 65 65 2c 20 62 75  e build tree, bu
0a20: 74 20 69 74 20 64 6f 65 73 20 3c 65 6d 3e 6e 6f  t it does <em>no
0a30: 74 3c 2f 65 6d 3e 20 69 6e 63 6c 75 64 65 20 74  t</em> include t
0a40: 68 65 6d 20 69 6e 20 74 68 65 20 41 6d 61 6c 67  hem in the Amalg
0a50: 61 6d 61 74 69 6f 6e 20 62 75 69 6c 64 2e 0a 5a  amation build..Z
0a60: 20 35 62 61 38 63 64 37 62 31 61 66 65 61 30 61   5ba8cd7b1afea0a
0a70: 61 34 62 66 37 38 36 62 32 61 65 64 64 33 39 65  a4bf786b2aedd39e
0a80: 37 0a                                            7.