1: ###################################################################################################
     2: ## Very generic Makefile:
     3: ## It generates the object files from all cpp or cc files in a directory and links them together. 
     4: ## You only have to supply it with your TARGET, LIBS, FLAGS, PATHS etc.
     5: ###################################################################################################
     6: 
     7: CC           :=	gcc
     8: CXX          :=	g++
     9: CFLAGS       :=	-pipe -W -Wall -g -O3 -fomit-frame-pointer  
    10: CXXFLAGS     :=	-pipe -W -Wall -g -O3 
    11: INCPATH      :=  
    12: LINK         :=	g++
    13: LFLAGS       :=	
    14: LIBS         :=	
    15: LIBPATH      :=	
    16: 
    17: TAR          :=	tar -cf
    18: GZIP         :=	gzip -9f
    19: BZIP         :=	bzip2
    20: RM           :=	rm -vf
    21: TAGS         :=	ctags
    22: # FILE THAT STORES THE DEPENDENCIES AND IS INCLUDED IN THE MAKEFILE AUTOMATICALLY
    23: DEPS         := Makefile.dep
    24: # FLAG HOW TO GENERATE THE DEPENDENCIES 
    25: # ( '-M' generates all dependencies '-MM' generates only dependencies of user created source files
    26: DEP_FLAG     := -MM
    27: HEADERS      := $(wildcard *.h)
    28: SOURCES      := $(wildcard *.c) $(wildcard *.cc)
    29: OBJECTS      := $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCES)))
    30: 
    31: TARGET       := ARP_TEST
    32: 
    33: ####### Implicit rules
    34: 
    35: .SUFFIXES: .cpp .cxx .cc .C .c
    36: 
    37: .cpp.o:
    38: 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
    39: 
    40: .cxx.o:
    41: 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
    42: 
    43: .cc.o:
    44: 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
    45: 
    46: .C.o:
    47: 	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
    48: 
    49: .c.o:
    50: 	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
    51: 
    52: ####### Build rules
    53: 
    54: .PHONY : all depend objects clean proper world
    55: 
    56: 
    57: all : $(TARGET)
    58: 
    59: $(TARGET): $(OBJECTS) 
    60: 	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBPATH) $(LIBS)
    61: 
    62: depend :
    63: 	$(CXX) $(DEP_FLAG) $(SOURCES) > $(DEPS)
    64: 
    65: objects : $(OBJECTS)
    66: 
    67: clean :
    68: 	$(RM) $(TARGET)
    69: 	$(RM) $(OBJECTS)
    70: 	$(RM) *.d
    71: 	$(RM) *~ core
    72: 
    73: proper: clean
    74: 	$(RM) *.a
    75: 	$(RM) *.bak
    76: 	$(RM) *.old
    77: 	$(RM) *.rpo
    78: 	$(RM) $(DEPS)
    79: 	$(RM) tags
    80: 	$(RM) *~
    81: 
    82: tags:
    83: 	$(TAGS) *
    84: 
    85: world: proper tags depend all
    86: 
    87: -include $(DEPS)
    88: