| 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 | |
|---|