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