1
# @(#) $Revision: 4.17 $ $Source: /judy/make_includes/README $
3
# This tree contains platform-specific and flavor-specific makefile fragments
4
# for inclusion by the judy/src/makefile.
6
# Quick build examples:
8
# PLATFORM=linux_ia32 FLAVOR=product make # on Linux, no makelog.
9
# PLATFORM=hpux_ipf FLAVOR=cov makelog
11
platform..mk default platform; includes one of the other files
12
platform.hpux_pa.mk PLATFORM=hpux_pa (on PA-RISC)
13
platform.hpux_ipf.mk PLATFORM=hpux_ipf
14
platform.linux_ia32.mk PLATFORM=linux_ia32
15
platform.bsd_ia32.mk PLATFORM=*BSD_ia32
16
platform.alpha_64.mk PLATFORM=alpha_64
17
platform.linux_ipf.mk PLATFORM=linux_ipf
18
platform.win_ia32.mk PLATFORM=win_ia32 # for building with MKS.
19
platform.win_ipf.mk PLATFORM=win_ipf # for building with MKS.
21
flavor..mk default flavor; includes one of the other files
22
flavor.product.mk FLAVOR=product; no debug, no assertions, etc.
23
flavor.cov.mk FLAVOR=cov; same as product, but with C-Cover turned on
24
flavor.debug.mk FLAVOR=debug; debuggable, assertions, etc.
27
# HOW TO BUILD JUDY FILES:
29
# MAKEFILE: Judy uses a macro-driven global make(1) makefile. Macro-driven
30
# means some variables are set according to the values of environment
31
# parameters. Global means all sources and targets are known to a single
32
# global makefile, although it might eventually grow large, for optimum
33
# dependency management and the simplest makefile structure. (Ref: "Recursive
34
# Make Considered Harmful", found 2/2000 at
35
# <http://www.canb.auug.org.au/~millerp/rmch/recu-make-cons-harm.html>)
37
# MACROS: The global top-level makefile includes files from this directory
40
# $PLATFORM defaults if unset; values are in platform.*.mk above
41
# $FLAVOR defaults if unset; values are in flavor.*.mk above
43
# You can simply do a "make" with no settings, or for example:
47
# ALL/SPECIFIC TARGETS: By default, make with no arguments does a "make all".
48
# You can use the "lib" target ("make lib") to construct only libJudy.a and its
49
# dependees. Other specific targets can be named, but you must know their
50
# paths to name them; see below about "source-pure" and "constructed files
51
# tree". In general, the makefile is as smart as possible about dependencies
52
# and only rebuilds that which is out of date. Use "make clobber" for a fresh
53
# start (specific to a given flavor).
55
# LOGGING: Also consider the use of the local makelog command, a drop-in
56
# wrapper replacement for make, that you invoke instead of make, that does nice
57
# summarizing and detailed logging. The Judy makefile is arranged to work well
60
# BE-PURE: The Judy build is "BE-pure" in that it writes nothing to the build
61
# environment, that is, nothing above the top of the source tree.
63
# SOURCE-PURE: The Judy build is "source-pure" in that it writes no
64
# constructed files to the source tree except under flavor-specific
65
# subdirectories. Hence you can build multiple flavors from the same source
66
# tree. However, you cannot run parallel multi-flavor compilations because of
67
# temporary files dropped in the source tree, say by cc(1).
69
# CONSTRUCTED FILES TREE: For more on the structure of the flavor-specific
70
# constructed files, do a full make and then study the tree, or look at the
71
# definitions in the makefile.
73
# BUILD ID: The Judy makefile contains support for always rebuilding a build
74
# ID file that is used to insert a build ID whatstring/identstring into
75
# constructed delivered objects. So don't worry about this being reconstructed
76
# every time you run make.
78
# UNBUILDING: The use of make(1) means "unbuilding" is not known explicitly by
79
# the tool, so instead there are "clean" and "clobber" targets.
81
# COMPILATION OPTIONS:
83
# EXTCCOPTS: Add options to compilation commands via EXTCCOPTS, such as:
85
# EXTCCOPTS='-DTRACEJP' make
87
# CCPRE: Alter compilation commands produced by this makefile by putting
88
# "CCPRE=<command>" on the make command line. This is supported by
89
# make_includes/*.mk files. See tool/ccpre for an example.
91
# Note: flavor.cov.mk forces the used of tool/ccpre; see that *mk file.
93
# Warning: If you get a core dump from make when you do this, try something
94
# like this: "CCPRE='echo;ccpre' ..." Apparently 10.20 make gets ill if the
95
# first command in a script is lengthy (not sure).
99
# * At least for now, the Judy makefile is no longer "top level", because it
100
# lives in judy/src, which is now down one level. It delivers some files
101
# drawn from a higher level in the Judy tree than the source directory.
103
# * Nothing in the makefile explicitly depends on the makefile itself, though
104
# anything might, but making everything depend on it is too coarse. Use
105
# appropriate wisdom.
107
# * For building object files from common source files, build directly using cc
108
# -D, not by running unifdef first, to support clean source debugging. But
109
# for calling lint, use unifdef first to create *.c files, and run lint on
110
# those, so as to do single lint runs of multiple *.c files.
112
# * On 010301 we decided not to ship JudyNL for the 11i release because we are
113
# not sure the API is solid enough, and there was not much interest shown in
114
# using it in the Judy III version, unlike JudySL. Also, Judy2L was of
115
# course not documented yet. So both, along with the manual entries, are
116
# commented out for now in this makefile, but only at the critical points
117
# required to keep them from going into the libraries or docs.