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