config.mk revision faf0150036689985ecea64e78f2637093857cd7b
1b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar###
2b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Configuration variables.
3b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
4866d2824095a5bc78307c103347695b52f3d49f0Daniel DunbarOS := $(shell uname)
5866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar
6557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Assume make is always run from top-level of source directory. Note than an
7557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Apple style build overrides these variables later in the makefile.
8b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarProjSrcRoot := $(shell pwd)
9b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarProjObjRoot := $(ProjSrcRoot)
10b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
11b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarConfigs := Debug Release Profile
12866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar
13866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar# The full list of architectures we support.
14faf0150036689985ecea64e78f2637093857cd7bDaniel DunbarArchs := i386 ppc x86_64
15faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbar# armv6 armv7
16b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
17866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar# If TargetArch is defined, only build for that architecture (and don't use
18866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar# -arch).
19866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbarifeq ($(OS), Darwin)
20866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  TargetArch :=
21866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  TargetArchs := $(Archs)
22866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbarelse
23866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  TargetArch := i386
24866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  TargetArchs := $(TargetArch)
25866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbarendif
26866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar
27b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarCommon.CFLAGS := -Wall -Werror
28b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
29b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# These names must match the configs, see GetArgs function.
30b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarDebug.CFLAGS := -g
31b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarRelease.CFLAGS := -O3 -fomit-frame-pointer
32b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarProfile.CFLAGS := -pg -g
33b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
34866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar# Function: GetArchArgs arch
35866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar#
36866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar# Return the compiler flags for the given arch.
37866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbarifeq ($(OS), Darwin)
38866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  GetArchArgs = -arch $(1)
39866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbarelse
40866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  # Check that we are only trying to build the target arch.
41866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar  GetArchArgs = $(if $(subst $(TargetArch),,$(1)), \
42866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar	$(error "Invalid configuration, no -arch support: $(1)"), \
43866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar	)
44866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbarendif
45866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar
46b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Function: GetArgs config arch
47b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#
48b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Return the compiler flags for the given config & arch.
49866d2824095a5bc78307c103347695b52f3d49f0Daniel DunbarGetArgs = $(if $($(1).CFLAGS), \
50866d2824095a5bc78307c103347695b52f3d49f0Daniel Dunbar	        $(Common.CFLAGS) $($(1).CFLAGS) $(call GetArchArgs,$(2)), \
51b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar		$(error "Invalid configuration: $(1)"))
52b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
53b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar###
54b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Tool configuration variables.
55b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
56b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarCC := gcc
57b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# FIXME: LLVM uses autoconf/mkinstalldirs ?
58b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarMKDIR := mkdir -p
59b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarDATE := date
60b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarAR := ar
61b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# FIXME: Remove these pipes once ranlib errors are fixed.
62b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarAR.Flags := cru 2> /dev/null
63b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarRANLIB := ranlib
64b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# FIXME: Remove these pipes once ranlib errors are fixed.
65b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarRANLIB.Flags := 2> /dev/null
66b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarLIPO := lipo
67866d2824095a5bc78307c103347695b52f3d49f0Daniel DunbarCP := cp
68b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
69a68b0e41908d057f81f31e25346c8b96436b7e4bDaniel DunbarVERBOSE := 0
70faf0150036689985ecea64e78f2637093857cd7bDaniel DunbarDEBUGMAKE :=
71a68b0e41908d057f81f31e25346c8b96436b7e4bDaniel Dunbar
72b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar###
73b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Automatic and derived variables.
74b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
75b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Adjust settings for verbose mode
76a68b0e41908d057f81f31e25346c8b96436b7e4bDaniel Dunbarifneq ($(VERBOSE),1)
77b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar  Verb := @
78b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarelse
79557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar  Verb :=
80b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarendif
81b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
82b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarEcho := @echo
83b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarArchive := $(AR) $(AR.Flags)
84b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarRanlib := $(RANLIB) $(RANLIB.Flags)
85b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarLipo := $(LIPO)
86b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarifndef Summary
87b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar	Summary = $(Echo)
88b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarendif
89