~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
cvs/emstar/fusd/external/make.include


  1 
  2 # auto-dependency generation makefile
  3 
  4 
  5 #### Default values
  6 
  7 SRCEXTENSIONS := c C cpp
  8 CC := gcc
  9 CPP := g++
 10 LD := ld
 11 AR := ar
 12 
 13 #### build object directory token 
 14 
 15 CPU := $(shell uname -m)
 16 OS := $(shell uname -s | tr '[A-Z]' '[a-z]')
 17 
 18 DEFAULT_ARCH := $(CPU)-$(OS)
 19 
 20 ifeq ($(strip $(ARCH)),)
 21         ARCH := $(DEFAULT_ARCH)
 22 endif
 23 
 24 OBJTOKEN := obj.$(ARCH)
 25 
 26 #
 27 #  Under most circumstances, paths are simple
 28 #
 29 
 30 ifeq ($(POSTROOT),..)
 31         MODPATH := .
 32         OBJDIR := $(OBJTOKEN)
 33 else
 34         MODPATH := $(POSTROOT)/$(MODULENAME)
 35         OBJDIR := $(MODPATH)/$(OBJTOKEN)
 36 endif
 37 
 38 
 39 #
 40 # Directories
 41 #
 42 
 43 MODLIBS := \
 44         -L$(OBJDIR) \
 45         $(foreach dir, $(MODULES), -L$(POSTROOT)/$(dir)/$(OBJTOKEN))
 46 MODINCLUDES := \
 47         -I$(MODPATH)/include \
 48         $(foreach dir, $(MODULES), -I$(POSTROOT)/$(dir)/include)
 49 ALLTARGETS := \
 50         $(foreach targ, $(TARGETS), $(OBJDIR)/$(targ))
 51 VPATH := \
 52         $(MODPATH)/include \
 53         $(foreach dir, $(SRCDIRS), $(MODPATH)/$(dir)) \
 54         $(foreach dir, $(MODULES), $(POSTROOT)/$(dir)/include)
 55 
 56 
 57 #### include paths
 58 
 59 LIBPATH := $(MODLIBS)
 60 INCLUDEPATH += -I. -Iinclude $(MODINCLUDES)
 61 KCFLAGS = -O2 \
 62  -Wall -Werror -Wstrict-prototypes \
 63  -fno-strict-aliasing -fomit-frame-pointer \
 64  -DMODULE -D__KERNEL__ 
 65 
 66 CFLAGS :=  -fPIC -Wall -O2 -g
 67 CCFLAGS := -Werror
 68 CPPFLAGS := -ftemplate-depth-30
 69 
 70 #### Architecture deps
 71 
 72 KERNEL_INCLUDE := $(KERNEL_HOME)/include
 73 BINSTRIP := strip
 74 
 75 KCFLAGS += -I$(KERNEL_INCLUDE) $(INCLUDEPATH)
 76 CFLAGS += $(INCLUDEPATH) $(LIBPATH)
 77 
 78 CCFLAGS += $(CFLAGS)
 79 CPPFLAGS += $(CFLAGS)
 80 
 81 #
 82 #  targets
 83 # 
 84 
 85 default:        $(ALLTARGETS)
 86 
 87 ####################################################
 88 
 89 
 90 #
 91 #  Dependency generation
 92 #
 93 
 94 
 95 # Get list of all source files
 96 SOURCES := \
 97         $(notdir $(wildcard \
 98                 $(foreach dir, $(SRCDIRS), \
 99                         $(foreach ext, $(SRCEXTENSIONS), $(dir)/*.$(ext)))))
100 
101 # Convert all .c, .cpp, .C to .d
102 SRC_AND_DEPENDS := $(foreach ext, $(SRCEXTENSIONS),\
103         $(patsubst %.$(ext),%.d,$(SOURCES)))
104 
105 DEPENDS := $(foreach file, $(filter %.d,$(SRC_AND_DEPENDS)), $(OBJDIR)/$(file))
106 
107 
108 
109 BASE = $(subst /,\/,$*)
110 ODIR = $(subst /,\/,$(OBJDIR))
111 
112 # This magic is from the 'make' manual (with mods by jelson)
113 $(OBJDIR)/%.d: %.c 
114         @mkdir -p $(OBJDIR)
115         set -e; $(CC) -MM -I$(KERNEL_INCLUDE) $(CFLAGS) $< \
116         | sed 's/\($(BASE)\)\.o[ :]*/$(ODIR)\/$(BASE).o $(ODIR)\/$(BASE).d : /g' > $@; \
117         [ -s $@ ] || rm -f $@
118 
119 $(OBJDIR)/%.d: %.C 
120         @mkdir -p $(OBJDIR)
121         set -e; $(CC) -MM $(CPPFLAGS) $< \
122         | sed 's/\($(BASE)\)\.o[ :]*/$(ODIR)\/$(BASE).o $(ODIR)\/$(BASE).d : /g' > $@; \
123         [ -s $@ ] || rm -f $@
124 
125 $(OBJDIR)/%.d: %.cpp 
126         @mkdir -p $(OBJDIR)
127         set -e; $(CC) -MM $(CPPFLAGS) $< \
128         | sed 's/\($(BASE)\)\.o[ :]*/$(ODIR)\/$(BASE).o $(ODIR)\/$(BASE).d : /g' > $@; \
129         [ -s $@ ] || rm -f $@
130 
131 
132 #
133 # Rules
134 #
135 
136 $(OBJDIR)/%.o: %.cpp
137         $(CPP) $(CPPFLAGS) $< -c -o $@
138 
139 $(OBJDIR)/%.o: %.C
140         $(CPP) $(CPPFLAGS) $< -c -o $@
141 
142 $(OBJDIR)/%.o: %.c
143         $(CC) $(CCFLAGS) $< -c -o $@
144 
145 clean:
146         rm -f $(ALLTARGETS) $(OBJDIR)/*.[oa] $(OBJDIR)/*.so.* $(DEPENDS)
147 
148 
149 include $(DEPENDS)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.