1 #******************************************************************************
2 # DDD & DVDVDVD XROMA PROJECT
3 # XROMA: Makefile.rules
4 #******************************************************************************
8 # Common rules for building the targets
17 #******************************************************************************
18 #This document is distributed under the Xroma public license.
19 #See the accompanying license file for information.
20 #******************************************************************************
22 #* Revision : $Revision: 1.7 $
23 #* Date : $Date: 2001/11/26 06:07:06 $
24 #******************************************************************************
26 CPPFLAGS= $(DEFINES) $(DEFINES_$(BUILDENV)) \
27 $(DEFINES_all) $(DEFINES_$(TARGET)) \
28 $(INCLUDES) -I$(BROOT)
29 CFLAGS= $(CPPFLAGS) $(CFLAGS_$(TARGET)) $(CFLAGS_all)
30 CXXFLAGS= $(CPPFLAGS) $(CXXFLAGS_$(TARGET)) $(CXXFLAGS_all)
31 LDFLAGS= $(LDFLAGS_$(TARGET)) $(LDFLAGS_all)
34 DIR= $(shell pwd | (cd ./$(BROOT); sed -e s@$$(pwd)@@g))
36 OBJROOT= $(BROOT)obj/$(BUILDENV)/$(TARGET)
37 OBJDIR= $(OBJROOT)$(DIR)
38 INCDIR= $(BROOT)obj/$(BUILDENV)/include
39 OBJECTS= $(SOURCES:%=$(OBJDIR)/%.o)
40 OBJLIBRARY= $(LIBRARY:%=$(OBJROOT)/%)
41 OBJDRIVER= $(DRIVER:%=$(OBJROOT)/%)
43 OBJLIBRARIES= $(LIBRARIES:%.a=$(OBJROOT)/%.a)
44 OBJLIBDEP= $(filter %.a, $(OBJLIBRARIES))
45 MZINFO_DEPS= $(OBJLIBDEP)
51 everything: hello recurse build goodbye
54 @$(MAKE) everything TARGET=$@ RECURSE=everything
60 rm -f $(GARBAGE) $(TOCLEAN)
61 $(MAKE) recurse RECURSE=dirclean
67 depend: $(OBJDIR)/Makefile.depend
70 @echo ----------- Making $(TARGET) in $$(pwd) ------------
72 @echo ---------- Done with $(TARGET) in $$(pwd) ----------
77 $(OBJDIR) $(OBJECTS) $(OBJLIBRARY) $(OBJDRIVER) $(OBJEXE) \
80 # "Hooks" for pre and post build steps
85 #------------------------------------------------------------------------------
87 #------------------------------------------------------------------------------
89 recurse: $(SUBDIRS:%=%.recurse)
92 $(MAKE) BROOT=../$(BROOT) DIR=$(DIR)/$* TARGET=$(TARGET) $(RECURSE)
95 cd ./$(BROOT); $(MAKE) $*
100 $(MAKE) -s --no-print-directory $* 2> build.err
102 $(MAKE) v-$* 2>&1 | tee buildlog
104 #------------------------------------------------------------------------------
105 # Product generation rules
106 #------------------------------------------------------------------------------
108 V=@if [ ! -z "$<" ]; then echo Compiling $<; fi;
109 R=@if [ ! -z "$@" ]; then echo Building $@; fi;
113 $R mkdir -p $(OBJDIR)
116 $(OBJEXE) exe: $(OBJECTS) $(OBJLIBDEP)
117 $R $(LD) $(LDFLAGS) $(LDFLAGS_$(OBJEXE)) \
118 $(OBJECTS) -L$(OBJROOT) $(OBJLIBRARIES) -o $(OBJEXE)
120 $(OBJLIBRARY) lib: $(OBJECTS)
121 $R $(AR) -r $@ $(OBJECTS); $(RANLIB) $@
123 $(OBJDRIVER) dvr: $(OBJECTS) $(OBJLIBDEP)
124 $R $(DRIVER_LD) $@ $(LDFLAGS) $(LDFLAGS_$*) \
125 $(OBJECTS) -L$(OBJROOT) $(OBJLIBRARIES)
128 #------------------------------------------------------------------------------
130 #------------------------------------------------------------------------------
133 $V $(CC) $(CFLAGS) $(CPPFLAGS_$*) $(CFLAGS_$*) -o $@ -c $<
135 $V $(CXX) $(CXXFLAGS) $(CPPFLAGS_$*) $(CXXFLAGS_$*) -o $@ -c $<
136 $(OBJDIR)/%.cpp.o: %.cpp
137 $V $(CXX) $(CXXFLAGS) $(CPPFLAGS_$*) $(CXXFLAGS_$*) -o $@ -c $<
138 $(MZINFO).mzinfo.cpp: # $(MZINFO_HEADER) $(MZINFO_SOURCES) $(MZINFO_DEPS)
141 -i $(MZINFO).mzinfo.h \
142 -o $(MZINFO).mzinfo.cpp \
143 $(MZINFO_DEPS:%=-e %) \
144 $(MZINFO_HEADERS) -x $(MZINFO_SOURCES)
146 # Dependencies generation
148 -e 's@$(@:.mkdepend=).o:@$(OBJDIR)/$(@:.mkdepend=).o:@g' \
149 -e 's@$*.o:@$(OBJDIR)/$(@:.mkdepend=).o:@g' \
150 < _tmp.depend >> $(OBJDIR)/_Makefile.depend && \
153 $(OBJDIR)/Makefile.depend: $(SOURCES)
154 $R mkdir -p $(OBJDIR); touch $@; $(MAKE) TARGET=$(TARGET) mkdepend
156 $(OBJDIR)/Makefile.depend:
158 mkdepend: predepend $(SOURCES:%=%.mkdepend)
159 @touch $(OBJDIR)/_Makefile.depend; \
160 mv $(OBJDIR)/_Makefile.depend $(OBJDIR)/Makefile.depend
162 @echo > $(OBJDIR)/_Makefile.depend
164 $V $(CC_DEPEND) $*.c && $(CAT_DEPEND)
166 $V $(CXX_DEPEND) $*.C && $(CAT_DEPEND)
168 $V $(CXX_DEPEND) $*.cpp && $(CAT_DEPEND)
170 $V $(AS_DEPEND) $*.S && $(CAT_DEPEND)
172 $V $(AS_DEPEND) $*.s && $(CAT_DEPEND)
173 %.mzinfo.cpp.mkdepend:
174 @echo No dependency for $*.mzinfo.cpp
176 @echo No dependency for $*.mzinfo.h
179 # Include dependencies from current directory
181 -include $(OBJDIR)/Makefile.depend