#//***************************************************************** #// Copyright policy is GNU/GPL and it is requested that #// you include author's name and email on all copies #// Author : Al Dev Email: alavoor@yahoo.com #//***************************************************************** .SUFFIXES: .pc .cpp .c .o CC=gcc CXX=g++ MAKEMAKE=mm LIBRARY=libString.a MY_DIR=$(HOME) DEST=$(MY_DIR)/lib # Note: You should set only ONE value of MYCFLAGS below, that is only # one line is uncommented and others are commented. # To build the library and main test program, uncomment 1st line only # to test without debug trace uncomment 2nd line only # to enable 'full debug ' tracing uncomment 3rd line only #MYCFLAGS=-O -Wall #MYCFLAGS=-g3 -Wall MYCFLAGS=-g3 -DDEBUG_STR -DDEBUG_MEM -DDEBUG_PRT -Wall # To create highly optimized code use 3 level optimization #MYCFLAGS=-O3 -Wall UNIXSYS=-D NOT_MSWINDOWS #PURIFY=purify -best-effort SRCS=my_malloc.cpp String.cpp StringTokenizer.cpp StringBuffer.cpp StringRW.cpp File.cpp debug.cpp example_String.cpp HDR=my_malloc.h String.h StringTokenizer.h File.h debug.h string_multi.h Double.h Float.h StringBuffer.h StringRW.h LIBOBJS=my_malloc.o String.o StringTokenizer.o StringBuffer.o StringRW.o File.o debug.o OBJS=example_String.o EXE=String # For generating makefile dependencies.. SHELL=/bin/sh CPPFLAGS=$(MYCFLAGS) $(UNIXSYS) $(OS_DEFINES) CFLAGS=$(MYCFLAGS) $(UNIXSYS) $(OS_DEFINES) # # If the libString.a is in the current # directory then use -L. (dash L dot) MYLIBDIR=-L$(MY_DIR)/libmy -L. ALLLDFLAGS= $(LDFLAGS) $(MYLIBDIR) COMMONLIBS=-lstdc++ -lm MYLIBS=-lString LIBS=$(COMMONLIBS) $(MYLIBS) all: $(LIBRARY) $(EXE) $(MAKEMAKE): @rm -f $(MAKEMAKE) $(PURIFY) $(CXX) -M $(INCLUDE) $(CPPFLAGS) *.cpp > $(MAKEMAKE) $(EXE): $(OBJS) $(LIBRARY) @echo "Creating a executable " $(PURIFY) $(CC) -o $(EXE) $(OBJS) $(ALLLDFLAGS) $(LIBS) $(LIBRARY): $(LIBOBJS) @echo "\n***********************************************" @echo " Loading $(LIBRARY) ... to $(DEST)" @echo "***********************************************" @mkdir -p $(DEST) @ar cru $(LIBRARY) $(LIBOBJS) @echo "\n " .cpp.o: $(SRCS) $(HDR) # @echo "Creating a object files from " $*.cpp " files " $(PURIFY) $(CXX) -c $(INCLUDE) $(CPPFLAGS) $*.cpp .c.o: $(SRCS) $(HDR) # @echo "Creating a object files from " $*.c " files " $(PURIFY) $(CC) -c $(INCLUDE) $(CFLAGS) $*.c clean: rm -f *.o *.log *~ *.log.old *.pid core err a.out nohup.out lib*.a afiedt.buf *.class tags rm -f $(EXE) rm -f $(MAKEMAKE) #%.d: %.c # @echo "Generating the dependency file *.d from *.c" # $(SHELL) -ec '$(CC) -M $(CPPFLAGS) $< | sed '\''s/$*.o/& $@/g'\'' > $@' #%.d: %.cpp # @echo "Generating the dependency file *.d from *.cpp" # $(SHELL) -ec '$(CC) -M $(CPPFLAGS) $< | sed '\''s/$*.o/& $@/g'\'' > $@' # Must include all the c flags for -M option #$(MAKEMAKE): # @echo "Generating the dependency file *.d from *.cpp" # $(CXX) -M $(INCLUDE) $(CPPFLAGS) *.cpp > $(MAKEMAKE) include $(MAKEMAKE) #include $(SRCS:.cpp=.d) #include $(SRCS:.c=.d)