1#-------------------------------------------------------------
2#
3#
4#CC              =  gcc -pipe
5#CCOPTFLAGS      = -O2
6#CCDEBUGFLAGS    = -ggdb
7#CCWARNFLAGS     = -Wall -pedantic -W -Wshadow -Wnested-externs \
8#                  -Wwrite-strings -Wpointer-arith \
9#                  -Wmissing-declarations -Wredundant-decls -Winline \
10#		  -Wstrict-prototypes
11
12CC		=  cc
13CCOPTFLAGS	= -O2
14
15CCEXTRAFLAGS	= -DStandAlone
16
17OUTPUTDIR       = .
18INCLUDEDIR      = .
19
20INCLUDEFLAGS    = -I $(INCLUDEDIR) -I . -I ..
21
22# Default compile is release
23CCFLAGS         = $(CCOPTFLAGS) $(CCWARNFLAGS) $(CCEXTRAFLAGS)
24
25#CCFLAGS        = $(CCDEBUGFLAGS) $(CCWARNFLAGS) $(CCEXTRAFLAGS)
26
27.SUFFIXES:	.e .o
28
29
30LIBTARGET 	= libds
31LIBHEADER 	= ds.h
32HEADERS 	=
33OBJ 		=  avltree.o hashtbl.o heap.o parray.o queue.o stack.o set.o
34
35LINC	= -I ../include -I ../../include
36ARLIB	= $(LIBTARGET).a
37SOLIB   = $(LIBTARGET).so
38TARGET	= $(ARLIB)
39
40all:
41	$(MAKE) release
42release:
43	@-$(MAKE) CCFLAGS="$(CCOPTFLAGS) $(CCWARNFLAGS) $(CCEXTRAFLAGS)" \
44	$(TARGET)
45debug:
46	@-$(MAKE) CCFLAGS="$(CCDEBUGFLAGS) $(CCWARNFLAGS) $(CCEXTRAFLAGS)" \
47	$(TARGET)
48linux:
49	$(MAKE) CC="gcc -pipe" CCWARNFLAGS="-Wall"
50$(ARLIB):   $(OBJ)
51	@-ar r $(ARLIB) $(OBJ); ranlib $(ARLIB);\
52	ld -shared -o $(SOLIB) $(OBJ) -lc
53
54install:
55	install -m 664 -D libds.so /usr/local/lib/libds.so.2.0; \
56	ln -s /usr/local/lib/libds.so.2.0 /usr/local/lib/libds.so; \
57	install -m 644 -D libds.a /usr/local/lib/libds.a; \
58	install -m 644 -D ds.h /usr/local/include/ds.h
59
60.c.o:
61	$(CC) $(INCLUDEFLAGS) $(LINC) $(CPPFLAGS) $(CCFLAGS) -c $*.c
62.c.e:
63	$(CC) -E $(INCLUDEFLAGS) $(LINC) $(CPPFLAGS) $(CCFLAGS) $*.c > $@
64
65.PHONY: clean
66
67clean:
68	@-echo "Cleaning directory"
69	@-rm -f core *.e *.o *.obj *.ilk *.ncb *.pdb *.pch; \
70	rm -f *~ $(SOLIB) $(ARLIB)
71
72avltree.o: ./ds.h ./local.h
73
74heap.o: ./ds.h ./local.h
75
76parray.o: ./ds.h ./local.h
77
78queue.o: ./ds.h ./local.h
79
80stack.o: ./ds.h ./local.h
81
82hashtbl.o: ./ds.h ./local.h
83
84set.o: ./ds.h ./local.h
85