Fossil

Hex Artifact Content
Login

Artifact c0c9088da6983daed47eab5d7f98dc8a867b898438b92716ad5e2543e59f823a:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 6d 61 6b 65 0a  #!/usr/bin/make.
0010: 23 0a 23 20 54 68 69 73 20 69 73 20 74 68 65 20  #.# This is the 
0020: 74 6f 70 2d 6c 65 76 65 6c 20 6d 61 6b 65 66 69  top-level makefi
0030: 6c 65 20 66 6f 72 20 46 6f 73 73 69 6c 20 77 68  le for Fossil wh
0040: 65 6e 20 74 68 65 20 62 75 69 6c 64 20 69 73 20  en the build is 
0050: 6f 63 63 75 72 72 69 6e 67 0a 23 20 6f 6e 20 61  occurring.# on a
0060: 20 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d 2e 20   unix platform. 
0070: 20 54 68 69 73 20 77 6f 72 6b 73 20 6f 75 74 2d   This works out-
0080: 6f 66 2d 74 68 65 2d 62 6f 78 20 6f 6e 20 6d 6f  of-the-box on mo
0090: 73 74 20 75 6e 69 78 20 70 6c 61 74 66 6f 72 6d  st unix platform
00a0: 73 2e 0a 23 20 42 75 74 20 79 6f 75 20 61 72 65  s..# But you are
00b0: 20 66 72 65 65 20 74 6f 20 76 61 72 79 20 73 6f   free to vary so
00c0: 6d 65 20 6f 66 20 74 68 65 20 64 65 66 69 6e 69  me of the defini
00d0: 74 69 6f 6e 73 20 69 66 20 64 65 73 69 72 65 64  tions if desired
00e0: 2e 0a 23 0a 23 23 23 23 20 54 68 65 20 74 6f 70  ..#.#### The top
00f0: 6c 65 76 65 6c 20 64 69 72 65 63 74 6f 72 79 20  level directory 
0100: 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20 74 72  of the source tr
0110: 65 65 2e 20 20 46 6f 73 73 69 6c 20 63 61 6e 20  ee.  Fossil can 
0120: 62 65 20 62 75 69 6c 74 0a 23 20 20 20 20 69 6e  be built.#    in
0130: 20 61 20 64 69 72 65 63 74 6f 72 79 20 74 68 61   a directory tha
0140: 74 20 69 73 20 73 65 70 61 72 61 74 65 20 66 72  t is separate fr
0150: 6f 6d 20 74 68 65 20 73 6f 75 72 63 65 20 74 72  om the source tr
0160: 65 65 2e 20 20 4a 75 73 74 20 63 68 61 6e 67 65  ee.  Just change
0170: 0a 23 20 20 20 20 74 68 65 20 66 6f 6c 6c 6f 77  .#    the follow
0180: 69 6e 67 20 74 6f 20 70 6f 69 6e 74 20 66 72 6f  ing to point fro
0190: 6d 20 74 68 65 20 62 75 69 6c 64 20 64 69 72 65  m the build dire
01a0: 63 74 6f 72 79 20 74 6f 20 74 68 65 20 73 72 63  ctory to the src
01b0: 2f 20 66 6f 6c 64 65 72 2e 0a 23 0a 53 52 43 44  / folder..#.SRCD
01c0: 49 52 20 3d 20 40 73 72 63 64 69 72 40 2f 73 72  IR = @srcdir@/sr
01d0: 63 0a 0a 23 23 23 23 20 54 68 65 20 64 69 72 65  c..#### The dire
01e0: 63 74 6f 72 79 20 69 6e 74 6f 20 77 68 69 63 68  ctory into which
01f0: 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 66 69 6c   object code fil
0200: 65 73 20 73 68 6f 75 6c 64 20 62 65 20 77 72 69  es should be wri
0210: 74 74 65 6e 2e 0a 23 20 20 20 20 48 61 76 69 6e  tten..#    Havin
0220: 67 20 61 20 22 2e 2f 22 20 70 72 65 66 69 78 20  g a "./" prefix 
0230: 69 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  in the value of 
0240: 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 62 72  this variable br
0250: 65 61 6b 73 20 6f 75 72 20 75 73 65 20 6f 66 20  eaks our use of 
0260: 74 68 65 0a 23 20 20 20 20 22 6d 61 6b 65 68 65  the.#    "makehe
0270: 61 64 65 72 73 22 20 74 6f 6f 6c 20 77 68 65 6e  aders" tool when
0280: 20 72 75 6e 6e 69 6e 67 20 6d 61 6b 65 20 6f 6e   running make on
0290: 20 74 68 65 20 4d 69 6e 47 57 20 70 6c 61 74 66   the MinGW platf
02a0: 6f 72 6d 2c 20 61 70 70 61 72 65 6e 74 6c 79 0a  orm, apparently.
02b0: 23 20 20 20 20 64 75 65 20 74 6f 20 73 6f 6d 65  #    due to some
02c0: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72   command line ar
02d0: 67 75 6d 65 6e 74 20 6d 61 6e 69 70 75 6c 61 74  gument manipulat
02e0: 69 6f 6e 20 70 65 72 66 6f 72 6d 65 64 20 61 75  ion performed au
02f0: 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 23 20 20 20  tomatically.#   
0300: 20 62 79 20 74 68 65 20 73 68 65 6c 6c 2e 0a 23   by the shell..#
0310: 0a 23 0a 4f 42 4a 44 49 52 20 3d 20 62 6c 64 0a  .#.OBJDIR = bld.
0320: 0a 23 23 23 23 20 43 20 43 6f 6d 70 69 6c 65 72  .#### C Compiler
0330: 20 61 6e 64 20 6f 70 74 69 6f 6e 73 20 66 6f 72   and options for
0340: 20 75 73 65 20 69 6e 20 62 75 69 6c 64 69 6e 67   use in building
0350: 20 65 78 65 63 75 74 61 62 6c 65 73 20 74 68 61   executables tha
0360: 74 0a 23 20 20 20 20 77 69 6c 6c 20 72 75 6e 20  t.#    will run 
0370: 6f 6e 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20  on the platform 
0380: 74 68 61 74 20 69 73 20 64 6f 69 6e 67 20 74 68  that is doing th
0390: 65 20 62 75 69 6c 64 2e 20 20 54 68 69 73 20 69  e build.  This i
03a0: 73 20 75 73 65 64 0a 23 20 20 20 20 74 6f 20 63  s used.#    to c
03b0: 6f 6d 70 69 6c 65 20 63 6f 64 65 2d 67 65 6e 65  ompile code-gene
03c0: 72 61 74 6f 72 20 70 72 6f 67 72 61 6d 73 20 61  rator programs a
03d0: 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 62 75  s part of the bu
03e0: 69 6c 64 20 70 72 6f 63 65 73 73 2e 0a 23 20 20  ild process..#  
03f0: 20 20 53 65 65 20 54 43 43 20 62 65 6c 6f 77 20    See TCC below 
0400: 66 6f 72 20 74 68 65 20 43 20 63 6f 6d 70 69 6c  for the C compil
0410: 65 72 20 66 6f 72 20 62 75 69 6c 64 69 6e 67 20  er for building 
0420: 74 68 65 20 66 69 6e 69 73 68 65 64 20 62 69 6e  the finished bin
0430: 61 72 79 2e 0a 23 0a 42 43 43 20 3d 20 40 43 43  ary..#.BCC = @CC
0440: 5f 46 4f 52 5f 42 55 49 4c 44 40 0a 0a 23 23 23  _FOR_BUILD@..###
0450: 23 20 54 68 65 20 73 75 66 66 69 78 20 74 6f 20  # The suffix to 
0460: 61 64 64 20 74 6f 20 66 69 6e 61 6c 20 65 78 65  add to final exe
0470: 63 75 74 61 62 6c 65 20 66 69 6c 65 2e 20 20 57  cutable file.  W
0480: 68 65 6e 20 63 72 6f 73 73 2d 63 6f 6d 70 69 6c  hen cross-compil
0490: 69 6e 67 0a 23 20 20 20 20 74 6f 20 77 69 6e 64  ing.#    to wind
04a0: 6f 77 73 2c 20 6d 61 6b 65 20 74 68 69 73 20 22  ows, make this "
04b0: 2e 65 78 65 22 2e 20 20 4f 74 68 65 72 77 69 73  .exe".  Otherwis
04c0: 65 20 6c 65 61 76 65 20 69 74 20 62 6c 61 6e 6b  e leave it blank
04d0: 2e 0a 23 0a 45 20 3d 20 40 45 58 45 45 58 54 40  ..#.E = @EXEEXT@
04e0: 0a 0a 54 43 43 20 3d 20 40 43 43 40 0a 0a 23 23  ..TCC = @CC@..##
04f0: 23 23 20 54 63 6c 20 73 68 65 6c 6c 20 66 6f 72  ## Tcl shell for
0500: 20 75 73 65 20 69 6e 20 72 75 6e 6e 69 6e 67 20   use in running 
0510: 74 68 65 20 66 6f 73 73 69 6c 20 74 65 73 74 73  the fossil tests
0520: 75 69 74 65 2e 20 20 49 66 20 79 6f 75 20 64 6f  uite.  If you do
0530: 20 6e 6f 74 0a 23 20 20 20 20 63 61 72 65 20 61   not.#    care a
0540: 62 6f 75 74 20 74 65 73 74 69 6e 67 20 74 68 65  bout testing the
0550: 20 65 6e 64 20 72 65 73 75 6c 74 2c 20 74 68 69   end result, thi
0560: 73 20 63 61 6e 20 62 65 20 62 6c 61 6e 6b 2e 0a  s can be blank..
0570: 23 0a 54 43 4c 53 48 20 3d 20 40 54 43 4c 53 48  #.TCLSH = @TCLSH
0580: 40 0a 0a 43 46 4c 41 47 53 20 3d 20 40 43 46 4c  @..CFLAGS = @CFL
0590: 41 47 53 40 0a 4c 49 42 20 3d 09 40 4c 44 46 4c  AGS@.LIB =.@LDFL
05a0: 41 47 53 40 20 40 45 58 54 52 41 5f 4c 44 46 4c  AGS@ @EXTRA_LDFL
05b0: 41 47 53 40 20 40 4c 49 42 53 40 0a 42 43 43 46  AGS@ @LIBS@.BCCF
05c0: 4c 41 47 53 20 3d 09 40 43 50 50 46 4c 41 47 53  LAGS =.@CPPFLAGS
05d0: 40 20 24 28 43 46 4c 41 47 53 29 0a 54 43 43 46  @ $(CFLAGS).TCCF
05e0: 4c 41 47 53 20 3d 09 40 45 58 54 52 41 5f 43 46  LAGS =.@EXTRA_CF
05f0: 4c 41 47 53 40 20 40 43 50 50 46 4c 41 47 53 40  LAGS@ @CPPFLAGS@
0600: 20 24 28 43 46 4c 41 47 53 29 20 2d 44 48 41 56   $(CFLAGS) -DHAV
0610: 45 5f 41 55 54 4f 43 4f 4e 46 49 47 5f 48 20 2d  E_AUTOCONFIG_H -
0620: 44 5f 48 41 56 45 5f 53 51 4c 49 54 45 5f 43 4f  D_HAVE_SQLITE_CO
0630: 4e 46 49 47 5f 48 0a 49 4e 53 54 41 4c 4c 44 49  NFIG_H.INSTALLDI
0640: 52 20 3d 20 24 28 44 45 53 54 44 49 52 29 40 70  R = $(DESTDIR)@p
0650: 72 65 66 69 78 40 2f 62 69 6e 0a 55 53 45 5f 53  refix@/bin.USE_S
0660: 59 53 54 45 4d 5f 53 51 4c 49 54 45 20 3d 20 40  YSTEM_SQLITE = @
0670: 55 53 45 5f 53 59 53 54 45 4d 5f 53 51 4c 49 54  USE_SYSTEM_SQLIT
0680: 45 40 0a 55 53 45 5f 4c 49 4e 45 4e 4f 49 53 45  E@.USE_LINENOISE
0690: 20 3d 20 40 55 53 45 5f 4c 49 4e 45 4e 4f 49 53   = @USE_LINENOIS
06a0: 45 40 0a 55 53 45 5f 4d 4d 41 4e 5f 48 20 3d 20  E@.USE_MMAN_H = 
06b0: 40 55 53 45 5f 4d 4d 41 4e 5f 48 40 0a 55 53 45  @USE_MMAN_H@.USE
06c0: 5f 53 45 45 20 3d 20 40 55 53 45 5f 53 45 45 40  _SEE = @USE_SEE@
06d0: 0a 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f 4d  .FOSSIL_ENABLE_M
06e0: 49 4e 49 5a 20 3d 20 40 46 4f 53 53 49 4c 5f 45  INIZ = @FOSSIL_E
06f0: 4e 41 42 4c 45 5f 4d 49 4e 49 5a 40 0a 0a 69 6e  NABLE_MINIZ@..in
0700: 63 6c 75 64 65 20 24 28 53 52 43 44 49 52 29 2f  clude $(SRCDIR)/
0710: 6d 61 69 6e 2e 6d 6b 0a 0a 64 69 73 74 63 6c 65  main.mk..distcle
0720: 61 6e 3a 20 63 6c 65 61 6e 0a 09 2d 72 6d 20 2d  an: clean..-rm -
0730: 66 20 61 75 74 6f 63 6f 6e 66 69 67 2e 68 20 63  f autoconfig.h c
0740: 6f 6e 66 69 67 2e 6c 6f 67 20 4d 61 6b 65 66 69  onfig.log Makefi
0750: 6c 65 0a 0a 72 65 63 6f 6e 66 69 67 3a 0a 09 40  le..reconfig:..@
0760: 41 55 54 4f 52 45 4d 41 4b 45 40 0a 0a 23 20 41  AUTOREMAKE@..# A
0770: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 63  utomatically rec
0780: 6f 6e 66 69 67 75 72 65 20 77 68 65 6e 65 76 65  onfigure wheneve
0790: 72 20 61 6e 20 61 75 74 6f 73 65 74 75 70 20 66  r an autosetup f
07a0: 69 6c 65 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  ile or one of th
07b0: 65 0a 23 20 6d 61 6b 65 20 73 6f 75 72 63 65 20  e.# make source 
07c0: 66 69 6c 65 73 20 63 68 61 6e 67 65 2e 0a 23 0a  files change..#.
07d0: 23 20 54 68 65 20 22 74 6f 75 63 68 22 20 69 73  # The "touch" is
07e0: 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 76   necessary to av
07f0: 6f 69 64 20 61 20 6d 61 6b 65 20 6c 6f 6f 70 20  oid a make loop 
0800: 64 75 65 20 74 6f 20 61 20 6e 65 77 20 75 70 73  due to a new ups
0810: 74 72 65 61 6d 0a 23 20 66 65 61 74 75 72 65 20  tream.# feature 
0820: 69 6e 20 61 75 74 6f 73 65 74 75 70 20 28 47 48  in autosetup (GH
0830: 20 30 61 37 31 65 33 63 33 62 37 29 20 77 68 69   0a71e3c3b7) whi
0840: 63 68 20 72 65 77 72 69 74 65 73 20 2a 2e 69 6e  ch rewrites *.in
0850: 20 6f 75 74 70 75 74 73 20 6f 6e 6c 79 0a 23 20   outputs only.# 
0860: 69 66 20 64 6f 69 6e 67 20 73 6f 20 77 69 6c 6c  if doing so will
0870: 20 77 72 69 74 65 20 64 69 66 66 65 72 65 6e 74   write different
0880: 20 63 6f 6e 74 65 6e 74 73 3b 20 6f 74 68 65 72   contents; other
0890: 77 69 73 65 2c 20 69 74 20 6c 65 61 76 65 73 20  wise, it leaves 
08a0: 74 68 65 6d 0a 23 20 61 6c 6f 6e 65 20 73 6f 20  them.# alone so 
08b0: 74 68 65 20 6d 74 69 6d 65 20 64 6f 65 73 6e 27  the mtime doesn'
08c0: 74 20 63 68 61 6e 67 65 2e 20 20 54 68 69 73 20  t change.  This 
08d0: 6d 65 61 6e 73 20 74 68 61 74 20 69 66 20 79 6f  means that if yo
08e0: 75 20 63 68 61 6e 67 65 20 6f 6e 65 0a 23 20 6f  u change one.# o
08f0: 75 72 20 64 65 70 64 65 6e 64 65 6e 63 69 65 73  ur depdendencies
0900: 20 62 65 73 69 64 65 73 20 4d 61 6b 65 66 69 6c   besides Makefil
0910: 65 2e 69 6e 2c 20 77 65 27 6c 6c 20 72 65 63 6f  e.in, we'll reco
0920: 6e 66 69 67 75 72 65 20 62 75 74 20 4d 61 6b 65  nfigure but Make
0930: 66 69 6c 65 0a 23 20 77 6f 6e 27 74 20 63 68 61  file.# won't cha
0940: 6e 67 65 2c 20 73 6f 20 74 68 69 73 20 72 75 6c  nge, so this rul
0950: 65 20 77 69 6c 6c 20 72 65 6d 61 69 6e 20 6f 75  e will remain ou
0960: 74 20 6f 66 20 64 61 74 65 2c 20 73 6f 20 77 65  t of date, so we
0970: 27 6c 6c 20 72 65 63 6f 6e 66 69 67 0a 23 20 62  'll reconfig.# b
0980: 75 74 20 4d 61 6b 65 66 69 6c 65 20 77 6f 6e 27  ut Makefile won'
0990: 74 20 63 68 61 6e 67 65 2c 20 73 6f 20 77 65 27  t change, so we'
09a0: 6c 6c 20 72 65 63 6f 6e 66 69 67 20 62 75 74 2e  ll reconfig but.
09b0: 2e 2e 20 65 6e 64 6c 65 73 73 6c 79 2e 0a 23 0a  .. endlessly..#.
09c0: 23 20 54 68 69 73 20 69 73 20 61 6c 73 6f 20 77  # This is also w
09d0: 68 79 20 77 65 20 72 65 70 65 61 74 20 74 68 65  hy we repeat the
09e0: 20 72 65 63 6f 6e 66 69 67 20 74 61 72 67 65 74   reconfig target
09f0: 27 73 20 63 6f 6d 6d 61 6e 64 20 68 65 72 65 20  's command here 
0a00: 69 6e 73 74 65 61 64 0a 23 20 6f 66 20 64 65 6c  instead.# of del
0a10: 65 67 61 74 69 6e 67 20 74 6f 20 69 74 20 77 69  egating to it wi
0a20: 74 68 20 22 24 28 4d 41 4b 45 29 20 72 65 63 6f  th "$(MAKE) reco
0a30: 6e 66 69 67 22 3a 20 68 61 76 69 6e 67 20 63 68  nfig": having ch
0a40: 69 6c 64 72 65 6e 20 72 75 6e 6e 69 6e 67 0a 23  ildren running.#
0a50: 20 61 72 6f 75 6e 64 20 69 6e 74 65 72 66 65 72   around interfer
0a60: 69 6e 67 20 6d 61 6b 65 73 20 74 68 69 73 20 66  ing makes this f
0a70: 61 69 6c 75 72 65 20 6d 6f 64 65 20 65 76 65 6e  ailure mode even
0a80: 20 77 6f 72 73 65 2e 0a 4d 61 6b 65 66 69 6c 65   worse..Makefile
0a90: 3a 20 40 73 72 63 64 69 72 40 2f 4d 61 6b 65 66  : @srcdir@/Makef
0aa0: 69 6c 65 2e 69 6e 20 24 28 53 52 43 44 49 52 29  ile.in $(SRCDIR)
0ab0: 2f 6d 61 69 6e 2e 6d 6b 20 40 41 55 54 4f 44 45  /main.mk @AUTODE
0ac0: 50 53 40 0a 09 40 41 55 54 4f 52 45 4d 41 4b 45  PS@..@AUTOREMAKE
0ad0: 40 0a 09 74 6f 75 63 68 20 40 62 75 69 6c 64 64  @..touch @buildd
0ae0: 69 72 40 2f 4d 61 6b 65 66 69 6c 65 0a           ir@/Makefile.