added necessary compiler memory barrier to xlock_release
[archipelago] / xseg / sys / user / Makefile
1 .PHONY: default all clean drivers
2
3 include $(XSEG_HOME)/base.mk
4
5 MAJOR=0
6 MINOR=0.1
7 AR=ar
8
9 DRIVERS=xseg_posix xseg_segdev
10 DRVDIR=$(BASE)/drivers/user
11 DRVOBJS=$(addsuffix .o, $(addprefix $(DRVDIR)/, $(DRIVERS)))
12 SHELL=/bin/bash
13
14 default: all
15
16 all: libxseg.a libxseg.so
17         make -C xq all
18         make -C xpool all
19         make -C xhash all
20         make -C xheap all
21         make -C xobj all
22         make -C python all
23
24 COMMA=,
25 _initialize.c: drivers
26         $(BASE)/tools/create_initializer $(DRIVERS) > _initialize.c
27
28 xseg.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h $(BASE)/xtypes/xq.h
29         $(CC) $(CFLAGS) $(INC) -c -o $@ $<
30
31 xseg.pic.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h _initialize.c
32         $(CC) $(CFLAGS) $(INC) -fPIC -c -o $@ $<
33
34 libxseg.so: libxseg.so.$(MAJOR)
35         ln -sf $< $@
36         cp -vaf $@ $(LIB)
37
38 libxseg.so.$(MAJOR): libxseg.so.$(MAJOR).$(MINOR)
39         ln -sf $< $@
40         cp -vaf $@ $(LIB)
41
42 drivers:
43         make -C $(DRVDIR) $(addsuffix .o, $(DRIVERS))
44
45 xq/xq.o:
46         make -C xq xq.o
47
48 xq/xq.pic.o:
49         make -C xq xq.pic.o
50
51 xpool/xpool.o:
52         make -C xpool xpool.o
53
54 xpool/xpool.pic.o:
55         make -C xpool xpool.pic.o
56
57 xhash/xhash.o:
58         make -C xhash xhash.o
59
60 xhash/xhash.pic.o:
61         make -C xhash xhash.pic.o
62
63 xheap/xheap.o:
64         make -C xheap xheap.o
65
66 xheap/xheap.pic.o:
67         make -C xheap xheap.pic.o
68
69 xobj/xobj.o:
70         make -C xobj xobj.o
71
72 xobj/xobj.pic.o:
73         make -C xobj xobj.pic.o
74
75 xseg_user.o: xseg_user.c
76         $(CC) $(CFLAGS) $(INC) -Wall -O2 -finline-functions -fPIC -c -o $@ $<
77
78 libxseg.map: $(BASE)/xtypes/xq_exports.h $(BASE)/xseg/xseg_exports.h
79         cat $(BASE)/xtypes/xq_exports.h $(BASE)/xseg/xseg_exports.h | ./make_symbol_map.sh > $@
80
81 libxseg.so.$(MAJOR).$(MINOR): xseg.pic.o xseg_user.o libxseg.map \
82                                  xq/xq.pic.o xpool/xpool.pic.o xhash/xhash.pic.o \
83                                  xheap/xheap.pic.o xobj/xobj.pic.o $(DRVOBJS)
84         $(CC) $(CFLAGS) -shared \
85                         -Wl,-soname=libxseg.so.$(MAJOR) \
86                         -o libxseg.so.$(MAJOR).$(MINOR) \
87                         xseg.pic.o xseg_user.o xq/xq.pic.o \
88                         xpool/xpool.pic.o xhash/xhash.pic.o\
89                         xheap/xheap.pic.o xobj/xobj.pic.o \
90                          _initialize.o $(DRVOBJS) \
91                         -Wl,--version-script=libxseg.map \
92                         -ldl -lrt
93         cp -vaf $@ $(LIB)
94
95 libxseg.a: xseg.o xq/xq.o drivers _initialize.o
96         $(AR) r libxseg.a xseg.o xq/xq.o _initialize.o $(DRVOBJS)
97         cp -vaf $@ $(LIB)
98
99 clean:
100         make -C xq clean
101         make -C xpool clean
102         make -C xhash clean
103         make -C python clean
104         rm -f _initialize.c _initialize.o
105         rm -f xseg.o xseg.pic.o xseg_user.o
106         rm -f libxseg.a libxseg.map
107         rm -f libxseg.so libxseg.so.$(MAJOR) libxseg.so.$(MAJOR).$(MINOR)