debuggers.hg

view Config.mk @ 16988:0faf620bc749

build: Make PREFIX work by fixing LIBDIR

In the current tree, setting PREFIX does not work very well. This is
because of confusion about the meaning of LIBDIR. In some places it
is the pathname tail of directories containing libraries (lib, lib64
or lib/amd64). But in other places it is a destination pathname
(implicitly, including any PREFIX). This can result in PREFIX or /usr
being added the wrong number of times.

This patch splits LIBDIR into two variables, LIBLEAFDIR and
LIBDIR. LIBDIR is the directory into which Xen libraries and other
similar code is to be placed, and includes any PREFIX. LIBLEAFDIR is
just the library tail and can be appended to various different
prefixes; for example, to construct the X11 library directory for -L.

Neither variable contains the value of DESTDIR, which is of course
used only to redirect the results of `make install' when desired.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Thu Jan 31 09:38:34 2008 +0000 (2008-01-31)
parents 226de1674b2f
children a905c582a406
line source
1 # -*- mode: Makefile; -*-
3 # A debug build of Xen and tools?
4 debug ?= n
6 XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/ \
7 -e s/ppc/powerpc/ -e s/i86pc/x86_32/ \
8 -e s/amd64/x86_64/)
9 XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH)
10 XEN_OS ?= $(shell uname -s)
12 ifeq ($(XEN_TARGET_ARCH),x86_32)
13 XEN_TARGET_X86_PAE ?= y
14 endif
16 CONFIG_$(XEN_OS) := y
18 SHELL ?= /bin/sh
20 # Tools to run on system hosting the build
21 HOSTCC = gcc
22 HOSTCFLAGS = -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer
23 HOSTCFLAGS += -fno-strict-aliasing
25 DISTDIR ?= $(XEN_ROOT)/dist
26 DESTDIR ?= /
28 include $(XEN_ROOT)/config/$(XEN_OS).mk
29 include $(XEN_ROOT)/config/$(XEN_TARGET_ARCH).mk
31 ifneq ($(EXTRA_PREFIX),)
32 EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
33 EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)
34 endif
36 # cc-option: Check if compiler supports first option, else fall back to second.
37 # Usage: cflags-y += $(call cc-option,$(CC),-march=winchip-c6,-march=i586)
38 cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \
39 /dev/null 2>&1`"; then echo "$(2)"; else echo "$(3)"; fi ;)
41 # cc-ver: Check compiler is at least specified version. Return boolean 'y'/'n'.
42 # Usage: ifeq ($(call cc-ver,$(CC),0x030400),y)
43 cc-ver = $(shell if [ $$((`$(1) -dumpversion | awk -F. \
44 '{ printf "0x%02x%02x%02x", $$1, $$2, $$3}'`)) -ge $$(($(2))) ]; \
45 then echo y; else echo n; fi ;)
47 # cc-ver-check: Check compiler is at least specified version, else fail.
48 # Usage: $(call cc-ver-check,CC,0x030400,"Require at least gcc-3.4")
49 cc-ver-check = $(eval $(call cc-ver-check-closure,$(1),$(2),$(3)))
50 define cc-ver-check-closure
51 ifeq ($$(call cc-ver,$$($(1)),$(2)),n)
52 override $(1) = echo "*** FATAL BUILD ERROR: "$(3) >&2; exit 1;
53 cc-option := n
54 endif
55 endef
57 ifeq ($(debug),y)
58 CFLAGS += -g
59 endif
61 CFLAGS += -fno-strict-aliasing
63 CFLAGS += -std=gnu99
65 CFLAGS += -Wall -Wstrict-prototypes
67 # -Wunused-value makes GCC 4.x too aggressive for my taste: ignoring the
68 # result of any casted expression causes a warning.
69 CFLAGS += -Wno-unused-value
71 HOSTCFLAGS += $(call cc-option,$(HOSTCC),-Wdeclaration-after-statement,)
72 CFLAGS += $(call cc-option,$(CC),-Wdeclaration-after-statement,)
74 LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i))
75 CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i))
77 # Enable XSM security module. Enabling XSM requires selection of an
78 # XSM security module (FLASK_ENABLE or ACM_SECURITY).
79 XSM_ENABLE ?= n
80 FLASK_ENABLE ?= n
81 ACM_SECURITY ?= n
83 # Optional components
84 XENSTAT_XENTOP ?= y
85 VTPM_TOOLS ?= n
86 LIBXENAPI_BINDINGS ?= n
87 PYTHON_TOOLS ?= y
88 CONFIG_MINITERM ?= n
89 CONFIG_LOMOUNT ?= n
91 -include $(XEN_ROOT)/.config