modify Makefile to include new xtypes
[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 python all
19
20 COMMA=,
21 _initialize.c: drivers
22         $(BASE)/tools/create_initializer $(DRIVERS) > _initialize.c
23
24 xseg.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h $(BASE)/xtypes/xq.h
25         $(CC) $(CFLAGS) $(INC) -c -o $@ $<
26
27 xseg.pic.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h _initialize.c
28         $(CC) $(CFLAGS) $(INC) -fPIC -c -o $@ $<
29
30 libxseg.so: libxseg.so.$(MAJOR)
31         ln -sf $< $@
32         cp -vaf $@ $(LIB)
33
34 libxseg.so.$(MAJOR): libxseg.so.$(MAJOR).$(MINOR)
35         ln -sf $< $@
36         cp -vaf $@ $(LIB)
37
38 drivers:
39         make -C $(DRVDIR) $(addsuffix .o, $(DRIVERS))
40
41 xq/xq.o:
42         make -C xq xq.o
43
44 xq/xq.pic.o:
45         make -C xq xq.pic.o
46
47 xpool/xpool.o:
48         make -C xpool xpool.o
49
50 xpool/xpool.pic.o:
51         make -C xpool xpool.pic.o
52
53 xhash/xhash.o:
54         make -C xhash xhash.o
55
56 xhash/xhash.pic.o:
57         make -C xhash xhash.pic.o
58
59 xheap/xheap.o:
60         make -C xheap xheap.o
61
62 xheap/xheap.pic.o:
63         make -C xheap xheap.pic.o
64
65 xobj/xobj.o:
66         make -C xobj xobj.o
67
68 xobj/xobj.pic.o:
69         make -C xobj xobj.pic.o
70
71 xseg_user.o: xseg_user.c
72         $(CC) $(CFLAGS) $(INC) -Wall -O2 -finline-functions -fPIC -c -o $@ $<
73
74 libxseg.map: $(BASE)/xtypes/xq_exports.h $(BASE)/xseg/xseg_exports.h
75         cat $(BASE)/xtypes/xq_exports.h $(BASE)/xseg/xseg_exports.h | ./make_symbol_map.sh > $@
76
77 libxseg.so.$(MAJOR).$(MINOR): xseg.pic.o xseg_user.o libxseg.map \
78                                  xq/xq.pic.o xpool/xpool.pic.o xhash/xhash.pic.o \
79                                  xheap/xheap.pic.o xobj/xobj.pic.o $(DRVOBJS)
80         $(CC) $(CFLAGS) -shared \
81                         -Wl,-soname=libxseg.so.$(MAJOR) \
82                         -o libxseg.so.$(MAJOR).$(MINOR) \
83                         xseg.pic.o xseg_user.o xq/xq.pic.o \
84                         xpool/xpool.pic.o xhash/xhash.pic.o\
85                         xheap/xheap.pic.o xobj/xobj.pic.o \
86                          _initialize.o $(DRVOBJS) \
87                         -Wl,--version-script=libxseg.map \
88                         -ldl -lrt
89         cp -vaf $@ $(LIB)
90
91 libxseg.a: xseg.o xq/xq.o drivers _initialize.o
92         $(AR) r libxseg.a xseg.o xq/xq.o _initialize.o $(DRVOBJS)
93         cp -vaf $@ $(LIB)
94
95 clean:
96         make -C xq clean
97         make -C xpool clean
98         make -C xhash clean
99         make -C python clean
100         rm -f _initialize.c _initialize.o
101         rm -f xseg.o xseg.pic.o xseg_user.o
102         rm -f libxseg.a libxseg.map
103         rm -f libxseg.so libxseg.so.$(MAJOR) libxseg.so.$(MAJOR).$(MINOR)