1XEN_ROOT = $(CURDIR)/../../..
2include $(XEN_ROOT)/tools/Rules.mk
3
4MAJOR	= 1
5MINOR	= 0
6SHLIB_LDFLAGS += -Wl,--version-script=libxentoollog.map
7
8CFLAGS	+= -Werror -Wmissing-prototypes
9CFLAGS	+= -I./include
10
11SRCS-y	+= xtl_core.c
12SRCS-y	+= xtl_logger_stdio.c
13
14LIB_OBJS := $(patsubst %.c,%.o,$(SRCS-y))
15PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS-y))
16
17LIB := libxentoollog.a
18ifneq ($(nosharedlibs),y)
19LIB += libxentoollog.so
20endif
21
22PKG_CONFIG := xentoollog.pc
23PKG_CONFIG_VERSION := $(MAJOR).$(MINOR)
24
25ifneq ($(CONFIG_LIBXC_MINIOS),y)
26PKG_CONFIG_INST := $(PKG_CONFIG)
27$(PKG_CONFIG_INST): PKG_CONFIG_PREFIX = $(prefix)
28$(PKG_CONFIG_INST): PKG_CONFIG_INCDIR = $(includedir)
29$(PKG_CONFIG_INST): PKG_CONFIG_LIBDIR = $(libdir)
30endif
31
32PKG_CONFIG_LOCAL := $(foreach pc,$(PKG_CONFIG),$(PKG_CONFIG_DIR)/$(pc))
33
34$(PKG_CONFIG_LOCAL): PKG_CONFIG_PREFIX = $(XEN_ROOT)
35$(PKG_CONFIG_LOCAL): PKG_CONFIG_INCDIR = $(XEN_LIBXENTOOLLOG)/include
36$(PKG_CONFIG_LOCAL): PKG_CONFIG_LIBDIR = $(CURDIR)
37
38.PHONY: all
39all: build
40
41.PHONY: build
42build:
43	$(MAKE) libs
44
45.PHONY: libs
46libs: headers.chk $(LIB) $(PKG_CONFIG_INST) $(PKG_CONFIG_LOCAL)
47
48headers.chk: $(wildcard include/*.h)
49
50libxentoollog.a: $(LIB_OBJS)
51	$(AR) rc $@ $^
52
53libxentoollog.so: libxentoollog.so.$(MAJOR)
54	$(SYMLINK_SHLIB) $< $@
55libxentoollog.so.$(MAJOR): libxentoollog.so.$(MAJOR).$(MINOR)
56	$(SYMLINK_SHLIB) $< $@
57
58libxentoollog.so.$(MAJOR).$(MINOR): $(PIC_OBJS) libxentoollog.map
59	$(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxentoollog.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(APPEND_LDFLAGS)
60
61.PHONY: install
62install: build
63	$(INSTALL_DIR) $(DESTDIR)$(libdir)
64	$(INSTALL_DIR) $(DESTDIR)$(includedir)
65	$(INSTALL_SHLIB) libxentoollog.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)
66	$(INSTALL_DATA) libxentoollog.a $(DESTDIR)$(libdir)
67	$(SYMLINK_SHLIB) libxentoollog.so.$(MAJOR).$(MINOR) $(DESTDIR)$(libdir)/libxentoollog.so.$(MAJOR)
68	$(SYMLINK_SHLIB) libxentoollog.so.$(MAJOR) $(DESTDIR)$(libdir)/libxentoollog.so
69	$(INSTALL_DATA) include/xentoollog.h $(DESTDIR)$(includedir)
70	$(INSTALL_DATA) xentoollog.pc $(DESTDIR)$(PKG_INSTALLDIR)
71
72.PHONY: uinstall
73uninstall:
74	rm -f $(DESTDIR)$(PKG_INSTALLDIR)/xentoollog.pc
75	rm -f $(DESTDIR)$(includedir)/xentoollog.h
76	rm -f $(DESTDIR)$(libdir)/libxentoollog.so
77	rm -f $(DESTDIR)$(libdir)/libxentoollog.so.$(MAJOR)
78	rm -f $(DESTDIR)$(libdir)/libxentoollog.so.$(MAJOR).$(MINOR)
79	rm -f $(DESTDIR)$(libdir)/libxentoollog.a
80
81.PHONY: TAGS
82TAGS:
83	etags -t *.c *.h
84
85.PHONY: clean
86clean:
87	rm -rf *.rpm $(LIB) *~ $(DEPS_RM) $(LIB_OBJS) $(PIC_OBJS)
88	rm -f libxentoollog.so.$(MAJOR).$(MINOR) libxentoollog.so.$(MAJOR)
89	rm -f headers.chk
90	rm -f xentoollog.pc
91
92.PHONY: distclean
93distclean: clean
94