1 | XEN_ROOT = ../.. |
---|
2 | include $(XEN_ROOT)/tools/Rules.mk |
---|
3 | |
---|
4 | MAJOR = 3.0 |
---|
5 | MINOR = 0 |
---|
6 | |
---|
7 | CTRL_SRCS-y := |
---|
8 | CTRL_SRCS-y += xc_core.c |
---|
9 | CTRL_SRCS-$(CONFIG_X86) += xc_core_x86.c |
---|
10 | CTRL_SRCS-$(CONFIG_IA64) += xc_core_ia64.c |
---|
11 | CTRL_SRCS-$(CONFIG_POWERPC) += xc_core_powerpc.c |
---|
12 | CTRL_SRCS-y += xc_domain.c |
---|
13 | CTRL_SRCS-y += xc_evtchn.c |
---|
14 | CTRL_SRCS-y += xc_misc.c |
---|
15 | CTRL_SRCS-y += xc_acm.c |
---|
16 | CTRL_SRCS-y += xc_physdev.c |
---|
17 | CTRL_SRCS-y += xc_private.c |
---|
18 | CTRL_SRCS-y += xc_sedf.c |
---|
19 | CTRL_SRCS-y += xc_csched.c |
---|
20 | CTRL_SRCS-y += xc_tbuf.c |
---|
21 | CTRL_SRCS-y += xc_resume.c |
---|
22 | CTRL_SRCS-$(CONFIG_X86) += xc_pagetab.c |
---|
23 | CTRL_SRCS-$(CONFIG_Linux) += xc_linux.c |
---|
24 | CTRL_SRCS-$(CONFIG_SunOS) += xc_solaris.c |
---|
25 | CTRL_SRCS-$(CONFIG_X86_Linux) += xc_ptrace.c xc_ptrace_core.c |
---|
26 | |
---|
27 | GUEST_SRCS-y := |
---|
28 | GUEST_SRCS-y += xg_private.c |
---|
29 | GUEST_SRCS-$(CONFIG_MIGRATE) += xc_domain_restore.c xc_domain_save.c |
---|
30 | GUEST_SRCS-$(CONFIG_HVM) += xc_hvm_build.c |
---|
31 | |
---|
32 | # symlink libelf from xen/common/libelf/ |
---|
33 | LIBELF_SRCS := libelf-tools.c libelf-loader.c |
---|
34 | LIBELF_SRCS += libelf-dominfo.c libelf-relocate.c |
---|
35 | |
---|
36 | libelf-tools.o: libelf-tools.c libelf-private.h |
---|
37 | libelf-loader.o: libelf-loader.c libelf-private.h |
---|
38 | libelf-dominfo.o: libelf-dominfo.c libelf-private.h |
---|
39 | libelf-relocate.o: libelf-relocate.c libelf-private.h |
---|
40 | |
---|
41 | $(LIBELF_SRCS) libelf-private.h: |
---|
42 | ln -s ../../xen/common/libelf/$@ $@ |
---|
43 | |
---|
44 | # add libelf bits to libxc |
---|
45 | GUEST_SRCS-y += $(LIBELF_SRCS) |
---|
46 | |
---|
47 | # new domain builder |
---|
48 | GUEST_SRCS-y += xc_dom_core.c xc_dom_boot.c |
---|
49 | GUEST_SRCS-y += xc_dom_elfloader.c |
---|
50 | GUEST_SRCS-y += xc_dom_binloader.c |
---|
51 | GUEST_SRCS-y += xc_dom_compat_linux.c |
---|
52 | |
---|
53 | GUEST_SRCS-$(CONFIG_X86) += xc_dom_x86.c |
---|
54 | GUEST_SRCS-$(CONFIG_IA64) += xc_dom_ia64.c |
---|
55 | GUEST_SRCS-$(CONFIG_POWERPC) += xc_dom_powerpc.c |
---|
56 | |
---|
57 | -include $(XEN_TARGET_ARCH)/Makefile |
---|
58 | |
---|
59 | CFLAGS += -Werror -Wmissing-prototypes |
---|
60 | CFLAGS += -fno-strict-aliasing |
---|
61 | CFLAGS += $(INCLUDES) -I. -I../xenstore |
---|
62 | |
---|
63 | # Needed for posix_fadvise64() in xc_linux.c |
---|
64 | CFLAGS-$(CONFIG_Linux) += -D_GNU_SOURCE |
---|
65 | |
---|
66 | # Define this to make it possible to run valgrind on code linked with these |
---|
67 | # libraries. |
---|
68 | #CFLAGS += -DVALGRIND -O0 -ggdb3 |
---|
69 | |
---|
70 | # Get gcc to generate the dependencies for us. |
---|
71 | CFLAGS += -Wp,-MD,.$(@F).d |
---|
72 | LDFLAGS += -L. |
---|
73 | DEPS = .*.d |
---|
74 | |
---|
75 | CTRL_LIB_OBJS := $(patsubst %.c,%.o,$(CTRL_SRCS-y)) |
---|
76 | CTRL_PIC_OBJS := $(patsubst %.c,%.opic,$(CTRL_SRCS-y)) |
---|
77 | |
---|
78 | GUEST_LIB_OBJS := $(patsubst %.c,%.o,$(GUEST_SRCS-y)) |
---|
79 | GUEST_PIC_OBJS := $(patsubst %.c,%.opic,$(GUEST_SRCS-y)) |
---|
80 | |
---|
81 | LIB := libxenctrl.a |
---|
82 | LIB += libxenctrl.so libxenctrl.so.$(MAJOR) libxenctrl.so.$(MAJOR).$(MINOR) |
---|
83 | |
---|
84 | LIB += libxenguest.a |
---|
85 | LIB += libxenguest.so libxenguest.so.$(MAJOR) libxenguest.so.$(MAJOR).$(MINOR) |
---|
86 | |
---|
87 | .PHONY: all |
---|
88 | all: build |
---|
89 | |
---|
90 | .PHONY: build |
---|
91 | build: check-for-zlib mk-symlinks |
---|
92 | $(MAKE) $(LIB) |
---|
93 | |
---|
94 | .PHONY: check-for-zlib |
---|
95 | check-for-zlib: |
---|
96 | @if [ ! -e /usr/include/zlib.h ]; then \ |
---|
97 | echo "***********************************************************"; \ |
---|
98 | echo "ERROR: install zlib header files (http://www.gzip.org/zlib)"; \ |
---|
99 | echo "***********************************************************"; \ |
---|
100 | false; \ |
---|
101 | fi |
---|
102 | |
---|
103 | .PHONY: install |
---|
104 | install: build |
---|
105 | [ -d $(DESTDIR)/usr/$(LIBDIR) ] || $(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR) |
---|
106 | [ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) $(DESTDIR)/usr/include |
---|
107 | $(INSTALL_PROG) libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR) |
---|
108 | $(INSTALL_DATA) libxenctrl.a $(DESTDIR)/usr/$(LIBDIR) |
---|
109 | ln -sf libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenctrl.so.$(MAJOR) |
---|
110 | ln -sf libxenctrl.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenctrl.so |
---|
111 | $(INSTALL_DATA) xenctrl.h $(DESTDIR)/usr/include |
---|
112 | |
---|
113 | $(INSTALL_PROG) libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR) |
---|
114 | $(INSTALL_DATA) libxenguest.a $(DESTDIR)/usr/$(LIBDIR) |
---|
115 | ln -sf libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenguest.so.$(MAJOR) |
---|
116 | ln -sf libxenguest.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenguest.so |
---|
117 | $(INSTALL_DATA) xenguest.h $(DESTDIR)/usr/include |
---|
118 | |
---|
119 | .PHONY: TAGS |
---|
120 | TAGS: |
---|
121 | etags -t *.c *.h |
---|
122 | |
---|
123 | .PHONY: clean |
---|
124 | clean: |
---|
125 | rm -rf *.rpm $(LIB) *~ $(DEPS) xen \ |
---|
126 | $(CTRL_LIB_OBJS) $(CTRL_PIC_OBJS) \ |
---|
127 | $(GUEST_LIB_OBJS) $(GUEST_PIC_OBJS) |
---|
128 | |
---|
129 | .PHONY: rpm |
---|
130 | rpm: build |
---|
131 | rm -rf staging |
---|
132 | mkdir staging |
---|
133 | mkdir staging/i386 |
---|
134 | rpmbuild --define "staging$$PWD/staging" --define '_builddir.' \ |
---|
135 | --define "_rpmdir$$PWD/staging" -bb rpm.spec |
---|
136 | mv staging/i386/*.rpm . |
---|
137 | rm -rf staging |
---|
138 | |
---|
139 | # libxenctrl |
---|
140 | |
---|
141 | libxenctrl.a: $(CTRL_LIB_OBJS) |
---|
142 | $(AR) rc $@ $^ |
---|
143 | |
---|
144 | libxenctrl.so: libxenctrl.so.$(MAJOR) |
---|
145 | ln -sf $< $@ |
---|
146 | libxenctrl.so.$(MAJOR): libxenctrl.so.$(MAJOR).$(MINOR) |
---|
147 | ln -sf $< $@ |
---|
148 | |
---|
149 | libxenctrl.so.$(MAJOR).$(MINOR): $(CTRL_PIC_OBJS) |
---|
150 | $(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenctrl.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $^ -lpthread |
---|
151 | |
---|
152 | # libxenguest |
---|
153 | |
---|
154 | libxenguest.a: $(GUEST_LIB_OBJS) |
---|
155 | $(AR) rc $@ $^ |
---|
156 | |
---|
157 | libxenguest.so: libxenguest.so.$(MAJOR) |
---|
158 | ln -sf $< $@ |
---|
159 | libxenguest.so.$(MAJOR): libxenguest.so.$(MAJOR).$(MINOR) |
---|
160 | ln -sf $< $@ |
---|
161 | |
---|
162 | libxenguest.so.$(MAJOR).$(MINOR): $(GUEST_PIC_OBJS) libxenctrl.so |
---|
163 | $(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenguest.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $(GUEST_PIC_OBJS) -lz -lxenctrl -lpthread |
---|
164 | |
---|
165 | -include $(DEPS) |
---|
166 | |
---|