Fix examples
[ftsbench.git] / Makefile.global
1
2 ECHO=echo
3
4 ifndef OS
5 OS=$(shell uname)
6 endif
7
8 CFLAGS=-Wall -pedantic -ansi -O2 -g -pthread 
9 ifeq ($(OS), FreeBSD)
10 CFLAGS+= -DHAVE_POLL_H
11 endif
12
13 ifeq ($(OS), Linux)
14 CFLAGS+= -DHAVE_SYS_POLL_H -D_GNU_SOURCE -D_LARGE_FILES -D_FILE_OFFSET_BITS=64
15 endif
16
17 CFLAGS+=$(EXTRAFLAGS)
18
19 CC=gcc
20 AR=ar
21 RANLIB=ranlib
22 LD=ld
23 LIB=-lpthread $(EXTRALIB)
24
25
26 INCLUDE=-I$(topbuilddir)/include -I. $(EXTRAINCLUDE) 
27 ARFLAGS=rcv
28 LDFLAGS=-r
29
30 ifdef SUBOBJ
31 SUBSYS=SUBSYS.o
32 endif 
33
34 ifdef SUBDIRS
35 SUBDIROBJS  := $(SUBDIRS:%=%/SUBSYS.o)
36 endif
37
38 ifdef PROGRAM
39 PROGRAMOBJ  := $(PROGRAM:%=%.o)
40 endif
41
42 .SUFFIXES: .o.c
43
44 .c.o:
45         $(CC) $(CFLAGS) $(INCLUDE) -c $<
46
47 all: $(SUBSYS) $(LIBRARY) $(PROGRAM)
48
49 ifdef PROGRAM
50 ifdef LIBRARY
51 $(PROGRAM): $(LIBRARY)
52 endif
53
54 $(PROGRAM): %: %.o 
55         $(CC) -o $@ $< $(LIBRARY) $(LIB) 
56 endif
57
58 ifdef LIBRARY
59 $(LIBRARY): $(LIBOBJ) $(SUBDIROBJS)
60         $(AR) $(ARFLAGS) $@ $(LIBOBJ) $(SUBDIROBJS) 
61         $(RANLIB) $@
62 endif
63
64 ifdef SUBOBJ
65 $(SUBSYS): $(SUBOBJ)
66         $(LD) $(LDFLAGS) -o $@ $(SUBOBJ)
67 endif
68
69 ifdef SUBDIRS
70 $(SUBDIROBJS): $(SUBDIRS:%=%-recursive) ;
71
72 $(SUBDIRS:%=%-recursive):
73         $(MAKE) -C $(subst -recursive,,$@) -f Makefile SUBSYS.o
74 endif
75  
76 clean:
77 ifdef OBJ
78         rm -rf $(OBJ)
79 endif 
80 ifdef LIBOBJ
81         rm -rf $(LIBOBJ)
82 endif 
83 ifdef PROGRAM
84         rm -rf $(PROGRAM) $(PROGRAMOBJ) *core core.*
85 endif
86 ifdef LIBRARY
87         rm -rf $(LIBRARY)
88 endif
89 ifdef SUBOBJ
90         rm -rf $(SUBOBJ) $(SUBSYS)
91 endif
92 ifdef SUBDIRS
93         for dir in $(SUBDIRS); do $(MAKE) -f Makefile -C $$dir clean || exit; done
94 endif