Unix: Rework build system
authorSimon Wilkinson <sxw@your-file-system.com>
Mon, 4 Oct 2010 12:49:16 +0000 (13:49 +0100)
committerDerrick Brashear <shadow@dementia.org>
Mon, 11 Oct 2010 15:00:29 +0000 (08:00 -0700)
commitf22ae5f7d8b3c143de21355f819ab872a0cf76fd
tree45111e59b30f2c2b35ef81c3a72df65b0c710024
parent1466cd755ce3b48d312fb4404f494934840e586b
Unix: Rework build system

Rework the unix build system so that we support taking CFLAGS and
LDFLAGS from the command line, and don't replace them with our own
settings. Also, take the opportunity to bring some sanity and
consistency into our Makefiles.

The standard Makefile.config  now defines rules for LWP, pthreaded
and shared library builds. The CFLAGS settings for these are
called LWP_CFLAGS, PTH_CFLAGS and SHD_CFLAGS, respectively.
Similarly named variables are provided for LDFLAGS.

A module may select to use a particular build type for its suffix
rule by including either Makefile.lwp, Makefile.pthread or
Makefile.shared from src/config. This creates an appropriate .c.o
suffix rule, defines AFS_CFLAGS and AFS_LDFLAGS as appropriate, and
creates two rules AFS_CCRULE and AFS_LDRULE, which can be used to
build, and link objects. For example:

foo.o: foo.c
$(AFS_CCRULE) foo.c

foo: foo.o
$(AFS_LDRULE) foo.o

If a you wish to override the CFLAGS or LDFLAGS for an object build
using these rules (or through the .c.o suffix rule) you can do so,
by defining CFLAGS_<object> or LDFLAGS_<object>. For example:

CFLAGS_foo.o= -DDEBUG
LDFLAGS_foo = -ldebugging

A module may also alter the behaviour of the compile and link steps
module wide by defining MODULE_CFLAGS or MODULE_LDFLAGS.

This functionality is now used throughout the tree:
    *) Suffix rules are used wherever possible, removing a number of
       unecessary build rules.
    *) All link steps are replaced with AFS_LDRULE
    *) All standard compile steps are replaced with AFS_CCRULE
    *) Unusal compile steps are defined, as far as possible, int
       terms of the LWP_ PTH_ and SHD_ variables.
    *) The use of $? has been removed entirely, as it makes it
       impossible to provide build rules with dependency information

Change-Id: If76207e45da402a0ed9d7c1bdbe83c58c911a4f2
Reviewed-on: http://gerrit.openafs.org/2896
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
116 files changed:
Makefile.in
configure.ac
src/afs/Makefile.in
src/afsd/Makefile.in
src/afsmonitor/Makefile.in
src/afsweb/Makefile.in
src/aklog/Makefile.in
src/audit/Makefile.in
src/auth/Makefile.in
src/auth/test/Makefile.in
src/bozo/Makefile.in
src/bozo/test/Makefile.in
src/bu_utils/Makefile.in
src/bubasics/Makefile.in
src/bucoord/Makefile.in
src/budb/Makefile.in
src/butc/Makefile.in
src/butm/Makefile.in
src/cf/osconf.m4
src/cmd/Makefile.in
src/cmd/test/Makefile.in
src/comerr/Makefile.in
src/comerr/test/Makefile.in
src/config/.gitignore
src/config/Makefile.config.in
src/config/Makefile.in
src/config/Makefile.lwp.in [new file with mode: 0644]
src/config/Makefile.pthread.in [new file with mode: 0644]
src/config/Makefile.shared.in [new file with mode: 0644]
src/crypto/hcrypto/Makefile.in
src/des/Makefile.in
src/des/test/Makefile.in
src/dir/Makefile.in
src/dir/test/Makefile.in
src/dviced/Makefile.in
src/dvolser/Makefile.in
src/export/Makefile.in
src/finale/Makefile.in
src/fsint/Makefile.in
src/fsprobe/Makefile.in
src/gtx/Makefile.in
src/kauth/Makefile.in
src/kauth/test/Makefile.in
src/kopenafs/Makefile.in
src/libacl/Makefile.in
src/libacl/test/Makefile.in
src/libadmin/Makefile.in
src/libadmin/adminutil/Makefile.in
src/libadmin/bos/Makefile.in
src/libadmin/cfg/Makefile.in
src/libadmin/cfg/test/Makefile.in
src/libadmin/client/Makefile.in
src/libadmin/kas/Makefile.in
src/libadmin/pts/Makefile.in
src/libadmin/samples/Makefile.in
src/libadmin/test/Makefile.in
src/libadmin/vos/Makefile.in
src/libafsauthent/Makefile.in
src/libafsrpc/Makefile.in
src/log/Makefile.in
src/log/test/Makefile.in
src/lwp/Makefile.in
src/lwp/test/Makefile.in
src/pam/Makefile.in
src/platform/DARWIN/Makefile.in
src/platform/DARWIN/growlagent/Makefile.in
src/platform/SOLARIS/Makefile.in
src/procmgmt/Makefile.in
src/procmgmt/test/Makefile.in
src/ptserver/Makefile.in
src/rx/Makefile.in
src/rx/bulk.example/Makefile.in
src/rx/bulktest/Makefile.in
src/rx/multi.example/Makefile.in
src/rx/simple.example/Makefile.in
src/rx/test/Makefile.in
src/rxdebug/Makefile.in
src/rxgen/Makefile.in
src/rxkad/Makefile.in
src/rxkad/test/Makefile.in
src/rxstat/Makefile.in
src/scout/Makefile.in
src/sgistuff/Makefile.in
src/shlibafsauthent/Makefile.in
src/shlibafsrpc/Makefile.in
src/sys/Makefile.in
src/tbudb/Makefile.in
src/tbutc/Makefile.in
src/tests/Makefile.in
src/tptserver/Makefile.in
src/tsalvaged/Makefile.in
src/tsm41/Makefile.in
src/tubik/Makefile.in
src/tviced/Makefile.in
src/tvlserver/Makefile.in
src/tvolser/Makefile.in
src/ubik/Makefile.in
src/update/Makefile.in
src/usd/Makefile.in
src/usd/test/Makefile.in
src/uss/Makefile.in
src/util/Makefile.in
src/util/test/Makefile.in
src/venus/Makefile.in
src/venus/test/Makefile.in
src/vfsck/Makefile.in
src/viced/Makefile.in
src/vlserver/Makefile.in
src/vol/Makefile.in
src/vol/test/Makefile.in
src/volser/Makefile.in
src/xstat/Makefile.in
tests/Makefile.in
tests/rpctestlib/Makefile.in
tests/tap/Makefile.in
tests/util/Makefile.in