initial commit of signal descriptors support
[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 xseg_pthread
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
23 COMMA=,
24 _initialize.c: drivers
25         $(BASE)/tools/create_initializer $(DRIVERS) > _initialize.c
26
27 xseg.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h $(BASE)/xtypes/xq.h
28         $(CC) $(CFLAGS) $(INC) -c -o $@ $<
29
30 xseg.pic.o: $(BASE)/xseg/xseg.c $(BASE)/xseg/xseg.h _initialize.c
31         $(CC) $(CFLAGS) $(INC) -fPIC -c -o $@ $<
32
33 libxseg.so: libxseg.so.$(MAJOR)
34         ln -sf $< $@
35         cp -vaf $@ $(LIB)
36
37 libxseg.so.$(MAJOR): libxseg.so.$(MAJOR).$(MINOR)
38         ln -sf $< $@
39         cp -vaf $@ $(LIB)
40
41 drivers:
42         make -C $(DRVDIR) $(addsuffix .o, $(DRIVERS))
43
44 xq/xq.o:
45         make -C xq xq.o
46
47 xq/xq.pic.o:
48         make -C xq xq.pic.o
49
50 xpool/xpool.o:
51         make -C xpool xpool.o
52
53 xpool/xpool.pic.o:
54         make -C xpool xpool.pic.o
55
56 xhash/xhash.o:
57         make -C xhash xhash.o
58
59 xhash/xhash.pic.o:
60         make -C xhash xhash.pic.o
61
62 xheap/xheap.o:
63         make -C xheap xheap.o
64
65 xheap/xheap.pic.o:
66         make -C xheap xheap.pic.o
67
68 xobj/xobj.o:
69         make -C xobj xobj.o
70
71 xobj/xobj.pic.o:
72         make -C xobj xobj.pic.o
73
74 xseg_user.o: xseg_user.c
75         $(CC) $(CFLAGS) $(INC) -Wall -O2 -finline-functions -fPIC -c -o $@ $<
76
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 > $@
82
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 \
94                         -ldl -lrt
95         cp -vaf $@ $(LIB)
96
97 libxseg.a: xseg.o xq/xq.o drivers _initialize.o
98         $(AR) r libxseg.a xseg.o xq/xq.o _initialize.o $(DRVOBJS)
99         cp -vaf $@ $(LIB)
100
101 clean:
102         make -C xq clean
103         make -C xpool clean
104         make -C xhash clean
105         make -C xheap clean
106         make -C xobj clean
107         make -C python clean
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)