Hex Artifact Content
Not logged in

Artifact 4f7988767e4e48b29f7eddd0e2cdea4555b9161c:

File BUILD.txt part of check-in [fb1fa7f1a6] - Make it easier to do out of source builds by optionally including config.mak or config.w32. by jeremy_c on 2009-12-09 22:05:46. Also file BUILD.txt part of check-in [1c2d878d12] - Merge with trunk by btheado on 2009-12-13 01:16:13.

0000: 41 6c 6c 20 6f 66 20 74 68 65 20 73 6f 75 72 63  All of the sourc
0010: 65 20 63 6f 64 65 20 66 6f 72 20 66 6f 73 73 69  e code for fossi
0020: 6c 20 69 73 20 63 6f 6e 74 61 69 6e 65 64 20 69  l is contained i
0030: 6e 20 74 68 65 20 73 72 63 2f 20 73 75 62 64 69  n the src/ subdi
0040: 72 65 63 74 6f 72 79 2e 0d 0a 42 75 74 20 74 68  rectory...But th
0050: 65 72 65 20 69 73 20 61 20 6c 6f 74 20 6f 66 20  ere is a lot of 
0060: 67 65 6e 65 72 61 74 65 64 20 63 6f 64 65 2c 20  generated code, 
0070: 73 6f 20 79 6f 75 20 77 69 6c 6c 20 70 72 6f 62  so you will prob
0080: 61 62 6c 79 20 77 61 6e 74 20 74 6f 0d 0a 75 73  ably want to..us
0090: 65 20 74 68 65 20 4d 61 6b 65 66 69 6c 65 2e 20  e the Makefile. 
00a0: 20 54 6f 20 64 6f 20 61 20 63 6f 6d 70 6c 65 74   To do a complet
00b0: 65 20 62 75 69 6c 64 2c 20 6a 75 73 74 20 74 79  e build, just ty
00c0: 70 65 3a 0d 0a 0d 0a 20 20 20 6d 61 6b 65 0d 0a  pe:....   make..
00d0: 0d 0a 54 68 61 74 20 73 68 6f 75 6c 64 20 77 6f  ..That should wo
00e0: 72 6b 20 6f 75 74 2d 6f 66 2d 74 68 65 2d 62 6f  rk out-of-the-bo
00f0: 78 20 6f 6e 20 4d 61 63 73 20 61 6e 64 20 4c 69  x on Macs and Li
0100: 6e 75 78 20 73 79 73 74 65 6d 73 2e 20 49 66 20  nux systems. If 
0110: 79 6f 75 20 61 72 65 0d 0a 62 75 69 6c 64 69 6e  you are..buildin
0120: 67 20 6f 6e 20 61 20 57 69 6e 64 6f 77 73 20 62  g on a Windows b
0130: 6f 78 2c 20 69 6e 73 74 61 6c 6c 20 4d 69 6e 47  ox, install MinG
0140: 57 20 61 73 20 77 65 6c 6c 20 61 73 20 4d 69 6e  W as well as Min
0150: 47 57 27 73 20 6d 61 6b 65 20 28 6f 72 0d 0a 4d  GW's make (or..M
0160: 53 59 53 29 2e 20 59 6f 75 20 63 61 6e 20 74 68  SYS). You can th
0170: 65 6e 20 74 79 70 65 3a 0d 0a 0d 0a 20 20 6d 61  en type:....  ma
0180: 6b 65 20 2d 66 20 4d 61 6b 65 66 69 6c 65 2e 77  ke -f Makefile.w
0190: 33 32 0d 0a 0d 0a 49 66 20 79 6f 75 20 68 61 76  32....If you hav
01a0: 65 20 74 72 6f 75 62 6c 65 2c 20 6f 72 20 79 6f  e trouble, or yo
01b0: 75 20 77 61 6e 74 20 74 6f 20 64 6f 20 73 6f 6d  u want to do som
01c0: 65 74 68 69 6e 67 20 66 61 6e 63 79 2c 20 6a 75  ething fancy, ju
01d0: 73 74 20 6c 6f 6f 6b 20 61 74 0d 0a 74 6f 70 20  st look at..top 
01e0: 6c 65 76 65 6c 20 6d 61 6b 65 66 69 6c 65 2e 20  level makefile. 
01f0: 54 68 65 72 65 20 61 72 65 20 35 20 63 6f 6e 66  There are 5 conf
0200: 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
0210: 73 20 74 68 61 74 20 61 72 65 20 61 6c 6c 20 77  s that are all w
0220: 65 6c 6c 0d 0a 63 6f 6d 6d 65 6e 74 65 64 2e 20  ell..commented. 
0230: 49 6e 73 74 65 61 64 20 6f 66 20 65 64 69 74 69  Instead of editi
0240: 6e 67 20 74 68 65 20 4d 61 6b 65 66 69 6c 65 2c  ng the Makefile,
0250: 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 66 69   create a new fi
0260: 6c 65 20 6e 61 6d 65 64 0d 0a 63 6f 6e 66 69 67  le named..config
0270: 2e 6d 61 6b 20 28 66 6f 72 20 4d 61 63 73 20 61  .mak (for Macs a
0280: 6e 64 20 4c 69 6e 75 78 20 73 79 73 74 65 6d 73  nd Linux systems
0290: 29 20 6f 72 20 63 6f 6e 66 69 67 2e 77 33 32 20  ) or config.w32 
02a0: 28 66 6f 72 20 57 69 6e 64 6f 77 73 29 20 61 6e  (for Windows) an
02b0: 64 0d 0a 6f 76 65 72 72 69 64 65 20 61 6e 79 20  d..override any 
02c0: 73 65 74 74 69 6e 67 73 20 79 6f 75 20 77 69 73  settings you wis
02d0: 68 20 74 68 65 72 65 2e 0d 0a 0d 0a 4f 75 74 20  h there.....Out 
02e0: 6f 66 20 73 6f 75 72 63 65 20 62 75 69 6c 64 73  of source builds
02f0: 3f 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ?..-------------
0300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d  -------------...
0340: 0a 41 6e 20 6f 75 74 20 6f 66 20 73 6f 75 72 63  .An out of sourc
0350: 65 20 62 75 69 6c 64 20 69 73 20 70 72 65 74 74  e build is prett
0360: 79 20 65 61 73 79 3a 0d 0a 0d 0a 20 20 31 2e 20  y easy:....  1. 
0370: 4d 61 6b 65 20 61 20 6e 65 77 20 64 69 72 65 63  Make a new direc
0380: 74 6f 72 79 20 74 6f 20 64 6f 20 74 68 65 20 62  tory to do the b
0390: 75 69 6c 64 73 20 69 6e 2e 0d 0a 20 20 32 2e 20  uilds in...  2. 
03a0: 43 72 65 61 74 65 20 61 20 63 6f 6e 66 69 67 2e  Create a config.
03b0: 6d 61 6b 20 28 6f 72 20 2e 77 33 32 20 2e 2e 2e  mak (or .w32 ...
03c0: 20 65 78 70 6c 61 69 6e 65 64 20 61 62 6f 76 65   explained above
03d0: 29 20 61 6e 64 20 61 64 64 20 73 6f 6d 65 74 68  ) and add someth
03e0: 69 6e 67 0d 0a 20 20 61 6c 6f 6e 67 20 74 68 65  ing..  along the
03f0: 20 6c 69 6e 65 73 20 6f 66 3a 0d 0a 0d 0a 20 20   lines of:....  
0400: 20 20 53 52 43 44 49 52 3d 2e 2e 2f 73 72 63 0d    SRCDIR=../src.
0410: 0a 0d 0a 20 20 33 2e 20 46 72 6f 6d 20 74 68 61  ...  3. From tha
0420: 74 20 64 69 72 65 63 74 6f 72 79 2c 20 74 79 70  t directory, typ
0430: 65 3a 0d 0a 0d 0a 20 20 20 20 4d 61 63 73 20 61  e:....    Macs a
0440: 6e 64 20 4c 69 6e 75 78 3a 0d 0a 20 20 20 20 20  nd Linux:..     
0450: 20 24 20 6d 61 6b 65 20 2d 66 20 2e 2e 2f 4d 61   $ make -f ../Ma
0460: 6b 65 66 69 6c 65 0d 0a 0d 0a 20 20 20 20 57 69  kefile....    Wi
0470: 6e 64 6f 77 73 3a 0d 0a 20 20 20 20 20 20 43 3a  ndows:..      C:
0480: 5c 66 6f 73 73 69 6c 5c 62 75 69 6c 64 3e 20 6d  \fossil\build> m
0490: 61 6b 65 20 2d 66 20 2e 2e 2f 4d 61 6b 65 66 69  ake -f ../Makefi
04a0: 6c 65 2e 77 33 32 0d 0a 0d 0a 54 68 69 73 20 77  le.w32....This w
04b0: 69 6c 6c 20 6e 6f 77 20 6b 65 65 70 20 61 6c 6c  ill now keep all
04c0: 20 67 65 6e 65 72 61 74 65 73 20 66 69 6c 65 73   generates files
04d0: 20 73 65 70 65 72 61 74 65 20 66 72 6f 6d 20 74   seperate from t
04e0: 68 65 20 6d 61 69 6e 74 61 69 6e 65 64 0d 0a 73  he maintained..s
04f0: 6f 75 72 63 65 20 63 6f 64 65 2e 0d 0a 0d 0a 2d  ource code.....-
0500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0510: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0520: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 48 65 72  ---------....Her
0550: 65 20 61 72 65 20 73 6f 6d 65 20 6e 6f 74 65 73  e are some notes
0560: 20 6f 6e 20 77 68 61 74 20 69 73 20 68 61 70 70   on what is happ
0570: 65 6e 69 6e 67 20 62 65 68 69 6e 64 20 74 68 65  ening behind the
0580: 20 73 63 65 6e 65 73 3a 0d 0a 0d 0a 2a 20 54 68   scenes:....* Th
0590: 65 20 4d 61 6b 65 66 69 6c 65 20 6a 75 73 74 20  e Makefile just 
05a0: 73 65 74 73 20 75 70 20 61 20 66 65 77 20 6d 61  sets up a few ma
05b0: 63 72 6f 73 20 61 6e 64 20 74 68 65 6e 20 69 6e  cros and then in
05c0: 76 6f 6b 65 73 20 74 68 65 0d 0a 20 20 72 65 61  vokes the..  rea
05d0: 6c 20 6d 61 6b 65 66 69 6c 65 20 69 6e 20 73 72  l makefile in sr
05e0: 63 2f 6d 61 69 6e 2e 6d 6b 2e 20 20 54 68 65 20  c/main.mk.  The 
05f0: 73 72 63 2f 6d 61 69 6e 2e 6d 6b 20 6d 61 6b 65  src/main.mk make
0600: 66 69 6c 65 20 69 73 0d 0a 20 20 61 75 74 6f 6d  file is..  autom
0610: 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74  atically generat
0620: 65 64 20 62 79 20 61 20 54 43 4c 20 73 63 72 69  ed by a TCL scri
0630: 70 74 20 66 6f 75 6e 64 20 61 74 20 73 72 63 2f  pt found at src/
0640: 6d 61 6b 65 6d 61 6b 65 2e 74 63 6c 2e 0d 0a 20  makemake.tcl... 
0650: 20 44 6f 20 6e 6f 74 20 65 64 69 74 20 73 72 63   Do not edit src
0660: 2f 6d 61 69 6e 2e 6d 6b 20 64 69 72 65 63 74 6c  /main.mk directl
0670: 79 2e 20 20 55 70 64 61 74 65 20 73 72 63 2f 6d  y.  Update src/m
0680: 61 6b 65 6d 61 6b 65 2e 74 63 6c 20 61 6e 64 0d  akemake.tcl and.
0690: 0a 20 20 74 68 65 6e 20 72 65 72 75 6e 20 69 74  .  then rerun it
06a0: 2e 0d 0a 0d 0a 2a 20 54 68 65 20 2a 2e 68 20 68  .....* The *.h h
06b0: 65 61 64 65 72 20 66 69 6c 65 73 20 61 72 65 20  eader files are 
06c0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65  automatically ge
06d0: 6e 65 72 61 74 65 64 20 75 73 69 6e 67 20 61 20  nerated using a 
06e0: 70 72 6f 67 72 61 6d 0d 0a 20 20 63 61 6c 6c 65  program..  calle
06f0: 64 20 22 6d 61 6b 65 68 65 61 64 65 72 73 22 2e  d "makeheaders".
0700: 20 20 53 6f 75 72 63 65 20 63 6f 64 65 20 74 6f    Source code to
0710: 20 74 68 65 20 6d 61 6b 65 68 65 61 64 65 72 73   the makeheaders
0720: 20 70 72 6f 67 72 61 6d 20 69 73 0d 0a 20 20 66   program is..  f
0730: 6f 75 6e 64 20 69 6e 20 73 72 63 2f 6d 61 6b 65  ound in src/make
0740: 68 65 61 64 65 72 73 2e 63 2e 20 20 44 6f 63 75  headers.c.  Docu
0750: 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 66 6f 75  mentation is fou
0760: 6e 64 20 69 6e 20 0d 0a 20 20 73 72 63 2f 6d 61  nd in ..  src/ma
0770: 6b 65 68 65 61 64 65 72 73 2e 68 74 6d 6c 2e 0d  keheaders.html..
0780: 0a 0d 0a 2a 20 4d 6f 73 74 20 2a 2e 63 20 73 6f  ...* Most *.c so
0790: 75 72 63 65 20 66 69 6c 65 73 20 61 72 65 20 70  urce files are p
07a0: 72 65 70 72 6f 63 65 73 73 65 64 20 75 73 69 6e  reprocessed usin
07b0: 67 20 61 20 70 72 6f 67 72 61 6d 20 63 61 6c 6c  g a program call
07c0: 65 64 0d 0a 20 20 22 74 72 61 6e 73 6c 61 74 65  ed..  "translate
07d0: 22 2e 20 20 54 68 65 20 73 6f 75 72 63 65 73 20  ".  The sources 
07e0: 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 61 72 65  to translate are
07f0: 20 66 6f 75 6e 64 20 69 6e 20 73 72 63 2f 74 72   found in src/tr
0800: 61 6e 73 6c 61 74 65 2e 63 2e 0d 0a 20 20 41 20  anslate.c...  A 
0810: 68 65 61 64 65 72 20 63 6f 6d 6d 65 6e 74 20 69  header comment i
0820: 6e 20 73 72 63 2f 74 72 61 6e 73 6c 61 74 65 2e  n src/translate.
0830: 63 20 65 78 70 6c 61 69 6e 73 20 69 6e 20 64 65  c explains in de
0840: 74 61 69 6c 20 77 68 61 74 20 69 74 20 64 6f 65  tail what it doe
0850: 73 2e 0d 0a 0d 0a 2a 20 54 68 65 20 73 72 63 2f  s.....* The src/
0860: 6d 6b 69 6e 64 65 78 2e 63 20 70 72 6f 67 72 61  mkindex.c progra
0870: 6d 20 67 65 6e 65 72 61 74 65 73 20 73 6f 6d 65  m generates some
0880: 20 43 20 63 6f 64 65 20 74 68 61 74 20 69 6d 70   C code that imp
0890: 6c 65 6d 65 6e 74 73 0d 0a 20 20 73 74 61 74 69  lements..  stati
08a0: 63 20 6c 6f 6f 6b 75 70 20 74 61 62 6c 65 73 2e  c lookup tables.
08b0: 20 20 53 65 65 20 74 68 65 20 68 65 61 64 65 72    See the header
08c0: 20 63 6f 6d 6d 65 6e 74 20 69 6e 20 74 68 65 20   comment in the 
08d0: 73 6f 75 72 63 65 20 63 6f 64 65 0d 0a 20 20 66  source code..  f
08e0: 6f 72 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  or details on wh
08f0: 61 74 20 69 74 20 64 6f 65 73 2e 0d 0a           at it does...