1 .PHONY: default all clean drivers
3 include $(XSEG_HOME)/base.mk
9 DRIVERS=xseg_posix xseg_segdev xseg_pthread
10 DRVDIR=$(BASE)/drivers/user
11 DRVOBJS=$(addsuffix .o, $(addprefix $(DRVDIR)/, $(DRIVERS)))
16 all: libxseg.a libxseg.so
24 _initialize.c: drivers
25 $(BASE)/tools/create_initializer $(DRIVERS) > _initialize.c
27 xseg.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h $(BASE)/xtypes/xq.h
28 $(CC) $(CFLAGS) $(INC) -c -o $@ $<
30 xseg.pic.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h _initialize.c
31 $(CC) $(CFLAGS) $(INC) -fPIC -c -o $@ $<
33 libxseg.so: libxseg.so.$(MAJOR)
37 libxseg.so.$(MAJOR): libxseg.so.$(MAJOR).$(MINOR)
42 make -C $(DRVDIR) $(addsuffix .o, $(DRIVERS))
54 make -C xpool xpool.pic.o
60 make -C xhash xhash.pic.o
66 make -C xheap xheap.pic.o
72 make -C xobj xobj.pic.o
74 xseg_user.o: xseg_user.c
75 $(CC) $(CFLAGS) $(INC) -Wall -O2 -finline-functions -fPIC -c -o $@ $<
77 libxseg.map: $(BASE)/xtypes/xq_exports.h $(BASE)/xseg/xseg_exports.h \
78 $(BASE)/xtypes/xpool_exports.h $(BASE)/xtypes/xhash_exports.h\
79 $(BASE)/xtypes/xobj_exports.h
80 cat $(BASE)/xtypes/xq_exports.h $(BASE)/xseg/xseg_exports.h \
81 $(BASE)/xtypes/xpool_exports.h $(BASE)/xtypes/xhash_exports.h | ./make_symbol_map.sh > $@
83 libxseg.so.$(MAJOR).$(MINOR): xseg.pic.o xseg_user.o libxseg.map \
84 xq/xq.pic.o xpool/xpool.pic.o xhash/xhash.pic.o \
85 xheap/xheap.pic.o xobj/xobj.pic.o $(DRVOBJS)
86 $(CC) $(CFLAGS) -shared \
87 -Wl,-soname=libxseg.so.$(MAJOR) \
88 -o libxseg.so.$(MAJOR).$(MINOR) \
89 xseg.pic.o xseg_user.o xq/xq.pic.o \
90 xpool/xpool.pic.o xhash/xhash.pic.o\
91 xheap/xheap.pic.o xobj/xobj.pic.o \
92 _initialize.o $(DRVOBJS) \
93 -Wl,--version-script=libxseg.map \
97 libxseg.a: xseg.o xq/xq.o drivers _initialize.o
98 $(AR) r libxseg.a xseg.o xq/xq.o _initialize.o $(DRVOBJS)
108 rm -f _initialize.c _initialize.o
109 rm -f xseg.o xseg.pic.o xseg_user.o
110 rm -f libxseg.a libxseg.map
111 rm -f libxseg.so libxseg.so.$(MAJOR) libxseg.so.$(MAJOR).$(MINOR)