Makefile.post
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:13k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. # $Id: Makefile.post,v 1.64 2001/07/13 01:02:48 bko Exp $
  2. # The license applies to all software incorporated in the "Vovida
  3. # Open Communication Application Library" except for those portions
  4. # incorporating third party software specifically identified as being
  5. # licensed under separate license.
  6. # The Vovida Software License, Version 1.0 
  7. # Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
  8. # Redistribution and use in source and binary forms, with or without
  9. # modification, are permitted provided that the following conditions
  10. # are met:
  11. # 1. Redistributions of source code must retain the above copyright
  12. #    notice, this list of conditions and the following disclaimer.
  13. # 2. Redistributions in binary form must reproduce the above copyright
  14. #    notice, this list of conditions and the following disclaimer in
  15. #    the documentation and/or other materials provided with the
  16. #    distribution.
  17. # 3. The names "VOCAL", "Vovida Open Communication Application Library",
  18. #    and "Vovida Open Communication Application Library (VOCAL)" must
  19. #    not be used to endorse or promote products derived from this
  20. #    software without prior written permission. For written
  21. #    permission, please contact vocal@vovida.org.
  22. # 4. Products derived from this software may not be called "VOCAL", nor
  23. #    may "VOCAL" appear in their name, without prior written
  24. #    permission of Vovida Networks, Inc.
  25. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  26. # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  27. # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  28. # NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
  29. # NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
  30. # IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
  31. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  32. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  33. # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  34. # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  35. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  36. # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  37. # DAMAGE.
  38. # ====================================================================
  39. # This software consists of voluntary contributions made by Vovida
  40. # Networks, Inc. and many individuals on behalf of Vovida Networks,
  41. # Inc.  For more information on Vovida Networks, Inc., please see
  42. # <http://www.vovida.org/>.
  43. # All third party licenses and copyright notices and other required
  44. # legends also need to be complied with as well.
  45. ifdef USE_DMALLOC
  46.   LDLIBS   += -L/usr/local/lib -ldmallocth
  47. endif
  48. -include $(BUILD)/Makefile.pkg
  49. PURIFY = purify
  50. PURIFY5 = /usr/local/purify-5.1-beta-L2-solaris2/purify-5.1-beta-L2-solaris2/purify
  51. QUANTIFY = quantify
  52. # this section adds the appropriate flags, headers, etc. for packages.
  53. # See the Makefile.pkg for further information about how packages work.
  54. INCDIRS  += $(foreach package,$(PACKAGES), $($(package)_INCLUDEDIRS))
  55. CXXFLAGS += $(foreach package,$(PACKAGES), $($(package)_CXXFLAGS))
  56. LDFLAGS  += $(foreach package,$(PACKAGES), $($(package)_LDFLAGS))
  57. LIBDIRS  += $(foreach package,$(PACKAGES), $($(package)_LIBDIRS))
  58. LIBNAMES += $(foreach package,$(PACKAGES), $($(package)_LIBNAME) )
  59. LDLIBS_LAST += $(foreach package,$(PACKAGES), $($(package)_LDLIBS_LAST))
  60. LDLIBS  += $(foreach libs,$(LIBDIRS), -L$(libs)) $(foreach libs,$(LIBNAMES), -l$(libs))
  61. DEFINES += $(foreach package,$(PACKAGES), $($(package)_DEFINES) )
  62. LDLIBS_PURE = $(LDLIBS)
  63. # because order is important
  64. LDLIBS   += $(LDLIBS_LAST)
  65. ifndef LDLIBS_LAST_PURE
  66. LDLIBS_LAST_PURE = $(LDLIBS_LAST)
  67. endif
  68. LDLIBS_PURE   +=  $(LDLIBS_LAST_PURE)
  69. DEPEND_FILES += $(foreach pkg,$(PACKAGES), $($(pkg)_DEPENDS))
  70. DEPEND_TARGETS += $(foreach pkg,$(PACKAGES), $($(pkg)_TARGETS))
  71. .dependlibs: $(DEPEND_FILES)
  72. touch .dependlibs
  73. LEAKTRACE = $(patsubst %/build,%/contrib/andreasen/LeakTracer/LeakTracer.o, $(BUILD))
  74. LTNEW = $(patsubst %/build,%/contrib/andreasen/newLT/LeakTracer.o, $(BUILD))
  75. LTHEAP = $(patsubst %/build,%/contrib/andreasen/Heap/Heap.o, $(BUILD))
  76. RELEASE = $(patsubst %/build,%/release, $(BUILD))
  77. INCLUDE_LIST = $(foreach dir,$(INCDIRS),-I$(dir))
  78. DEFINE_LIST = $(foreach dir,$(DEFINES),-D$(dir))
  79. CXXFLAGS += $(INCLUDE_LIST) $(DEFINE_LIST)
  80. CFLAGS += $(INCLUDE_LIST) $(DEFINE_LIST)
  81. OBJ = obj.$(TARGET_NAME)
  82. #OBJ = $(shell $(TOOLS)/reportbuilddir $(ROOT)/.make_prefs)/obj.$(TARGET_NAME)
  83. BIN = bin.$(TARGET_NAME)
  84. #BIN = $(shell $(TOOLS)/reportbuilddir $(ROOT)/.make_prefs)/bin.$(TARGET_NAME)
  85. .PHONY : all code clean default install copy-files doc $(BIN) $(OBJ) test prefs full headercheck verify
  86. SRC += $(SRC_$(OSCLASS))
  87. TESTPROGRAMS += $(VERIFY_TESTCASES)
  88. ALLSRC += $(TESTPROGRAMS) $(SRC)
  89. OBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(SRC))) $(EXTRA_OBJS)
  90. HWOBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(HWSRC)))
  91. DEPENDENCIES = $(patsubst %.c,$(OBJ)/%.d,$(patsubst %.cxx,$(OBJ)/%.d,$(ALLSRC)))
  92. LIBTARGETS = $(patsubst %.a,$(OBJ)/%.a,$(filter %.a,$(TARGET_LIBRARY)))
  93. LIBTARGETS_PURE5 = $(patsubst %.a,$(OBJ)/%_pure_p9_c0_103222355_32.a,$(filter %.a,$(TARGET_LIBRARY)))
  94. EXTRAS = $(HWOBJS)
  95. HEADERS =  $(wildcard *.h)  $(wildcard *.hxx)
  96. HEADERCHECKDIR = headercheck.$(TARGET_NAME)
  97. HEADERCHECK = $(patsubst %.hxx, $(HEADERCHECKDIR)/%.oxx, $(patsubst %.h, $(HEADERCHECKDIR)/%.o, $(HEADERS)))
  98. HEADERCHECKOBJS = $(patsubst %.cxx, %.o, $(HEADERCHECK))
  99. CODETARGETS = $(patsubst %.c,$(BIN)/%,$(patsubst %.cxx,$(BIN)/%,$(TESTPROGRAMS)))
  100. TESTCASE_PROGRAMS = $(patsubst %,$(BIN)/%,$(TESTCASES))
  101. VERIFY_TESTCASE_PROGRAMS = $(patsubst %.c,$(BIN)/%,$(patsubst %.cxx,$(BIN)/%,$(VERIFY_TESTCASES)))
  102. ifdef USE_LEAKTRACE
  103. $(LEAKTRACE):
  104. cd $(ROOT)/contrib ; $(MAKE) all
  105. CODETARGETS_LT = $(patsubst %,%.lt,$(CODETARGETS))
  106. endif
  107. ifdef USE_LTNEW
  108. $(LTNEW):
  109. cd $(ROOT)/contrib/andreasen/newLT ; $(MAKE) all
  110. CODETARGETS_LT = $(patsubst %,%.ltnew,$(CODETARGETS))
  111. endif
  112. ifdef USE_LTHEAP
  113. $(LTNEW):
  114. cd $(ROOT)/contrib/andreasen/Heap ; $(MAKE)
  115. CODETARGETS_LT = $(patsubst %,%.ltheap,$(CODETARGETS))
  116. endif
  117. CODETARGETS_PURE = $(patsubst %,%.pure,$(CODETARGETS))
  118. CODETARGETS_PURE5 = $(patsubst %,%.pure5,$(CODETARGETS))
  119. CODETARGETS_QUANTIFY = $(patsubst %,%.quantify,$(CODETARGETS))
  120. ifneq "$(strip $(COPYFILES))" ""
  121. COPY += copy-files
  122. endif
  123. ifdef CROSS_COMPILE
  124. CROSS_FLAG = -c
  125. endif
  126. # here is the start of the appropriate rules
  127. code: $(OBJ) $(HWOBJS) $(BIN) $(AUTO_FILES) $(TARGETS) $(LIBTARGETS) $(CODETARGETS) $(CODETARGETS_LT) $(COPY)
  128. # $(TOOLS)/makeprefs $@
  129. $(ROOT)/.make_prefs:
  130. echo 'USE_BUILDDIR=no' > $@
  131.         include $(ROOT)/.make_prefs
  132. prefs:
  133. $(TOOLS)/makeprefs $(ROOT)/.make_prefs
  134. dependencies: $(DEPENDENCIES)
  135. ifdef ROOT_TARGET
  136. target:
  137. cd $(ROOT) ; $(MAKE) $(ROOT_TARGET)
  138. endif
  139. all: code test
  140. copy-files:
  141. cp -r $(COPYFILES) $(COPYTO)
  142. foo:
  143. echo html/$(subst .a,,$(PROG)).html
  144. install-lib:
  145. -$(INSTALL) -m 0644 $(LIBTARGETS) $(RELEASE)/lib.$(TARGET_NAME)
  146. for hfile in *.hxx *.h ; do ( $(INSTALL) -m 0644 $$hfile  $(RELEASE)/include ) ; done
  147. install-code:
  148. $(INSTALL) -m 0755 $(CODETARGETS) $(RELEASE)/bin.$(TARGET_NAME)
  149. install-subdirs:
  150. for subdirectory in $(SUBDIR) ; do ( cd $$subdirectory ; $(MAKE) install ) ; done
  151. ifneq "$(strip $(LIBTARGETS))" ""
  152. INSTALL_TARGETS += install-lib
  153. endif
  154. ifneq "$(strip $(CODETARGETS))" ""
  155. INSTALL_TARGETS += install-code
  156. endif
  157. ifneq "$(strip $(SUBDIR))" ""
  158. INSTALL_TARGETS += install-subdirs
  159. endif
  160. install: $(INSTALL_TARGETS)
  161. #install_bin: 
  162. doc: html html/HIER.html html/$(subst .a,,$(PROG)).html
  163. clean:
  164. echo "foo"
  165. -rm -f *.rpo core *~ #* .make* *.a *.d *.S
  166. -rm -rf html
  167. -rm obj.*/*.[oda] bin.*/*
  168. cleanall: clean
  169. echo "foo"
  170. -rm -rf bin.* obj.*
  171. pure: $(CODETARGETS_PURE)
  172. pure5: $(CODETARGETS_PURE5)
  173. pure5_lib: $(LIBTARGETS_PURE5)
  174. quantify: $(CODETARGETS_QUANTIFY)
  175. backup:
  176. tar cvf - $(SRC) $(OSRC) | gzip > `date +"backup_$(PROG)-%Y%m%d-%H%M.tgz"`
  177. $(BIN):
  178. - $(TOOLS)/mkbuildlinks $(BIN) $(ROOT)/.make_prefs
  179. -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(BIN)/$$subdir ) ; done
  180. $(OBJ):
  181. - $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
  182. -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
  183. test: code
  184. -if [ -d test ] ; then cd test ; $(MAKE) test ; fi
  185. -$(ROOT)/tools/run-tests $(CROSS_FLAG) $(ROOT) `pwd` $(BIN) TESTS $(ROOT)/testall.log
  186. verify: $(VERIFY_TESTCASE_PROGRAMS)
  187. for program in $(VERIFY_TESTCASE_PROGRAMS) ; do ( ./$$program ) ; done
  188. # $(CXX) $(CXXFLAGS) -c -o $@ $<
  189. $(HEADERCHECKDIR)/%.o: %.h
  190. $(CXX) -x c++ $(CXXFLAGS) -c -o $@ $<
  191. $(HEADERCHECKDIR)/%.oxx: %.hxx
  192. $(CXX) -x c++ $(CXXFLAGS) -c -o $@ $<
  193. $(HEADERCHECKDIR):
  194. - $(TOOLS)/mkbuildlinks $(HEADERCHECKDIR) $(ROOT)/.make_prefs
  195. -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(HEADERCHECKDIR)/$$subdir ) ; done
  196. headercheck: $(HEADERCHECKDIR) $(HEADERCHECKOBJS)
  197. test_report: test
  198. -$(MAKE) test > /dev/null 2>&1
  199. -@if [ -f T_RESULTS.$(BIN) ] ; then $(ROOT)/tools/test-analyzer -r T_RESULTS.$(BIN) $(BIN)/testresults.log ; fi
  200. html:
  201. - mkdir html
  202. html/HIER.html: $(HEADERS)
  203. doc++ -H -B noBanner -p -d html $^
  204. html/$(subst .a,,$(PROG)).html: $(ALLSRC) $(HEADERS)
  205. # cvs2html -a -k -o html
  206. ifeq ($(CXXFLAGS),$(shell cat $(OBJ)/cxxflags))
  207. else
  208. .PHONY: $(OBJ)/cflags $(OBJ)/cxxflags
  209. endif
  210. $(OBJ)/cflags:
  211. echo '$(CFLAGS)' > $@
  212. $(OBJ)/cxxflags:
  213. echo '$(CXXFLAGS)' > $@
  214. ifeq ($(USE_VARARG_HACK),1)
  215. %.i: %.cxx $(OBJ)/%.d $(OBJ)/cxxflags
  216. if [ "z$<" != "zcpLog.cxx"  ] ; then $(FILEPP) -p -lrn -V -u -k '-DcpLog(priority__,fmt__)=do {if (priority__ <= cpLogGetPriority()) cpLog_impl_ (priority__, __FILE__, __LINE__, fmt__);}while (0)' -lcn $< > $@ ; else cp $< $@ ; fi
  217. $(OBJ)/%.o: %.i $(OBJ)/%.d $(OBJ)/cflags
  218. $(CXX) $(CXXFLAGS) -c -o $@ $<
  219. endif
  220. ifeq ($(OSTYPE),cygwin)
  221. OUTPUT_FLAG=-Fo
  222. else
  223. OUTPUT_FLAG=-o 
  224. endif
  225. # compile c code 
  226. $(OBJ)/%.o: %.c $(OBJ)/%.d $(OBJ)/cflags
  227. $(CC) $(CFLAGS) -c $(OUTPUT_FLAG)$@ $<
  228. ifeq ($(ACCEPT_I_FILES),1)
  229. else
  230. # compile c++ code
  231. $(OBJ)/%.o: %.cxx $(OBJ)/%.d $(OBJ)/cxxflags
  232. $(CXX) $(CXXFLAGS) -c $(OUTPUT_FLAG)$@ $<
  233. endif
  234. # build assembly listings 
  235. %.S: %.cxx
  236. $(CXX) $(CXXFLAGS)  -fverbose-asm -g -Wa,-ahln -c 
  237. -o /tmp/cjJunk.o $< > $@
  238. # build executables
  239. $(BIN)/%: $(OBJ)/%.o $(OBJS)  $(EXTRAS)  .dependlibs
  240. $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS)
  241. # build leaktraced version of executable
  242. ifdef USE_LEAKTRACE
  243. .dependlibs: $(LEAKTRACE)
  244. $(BIN)/%.lt: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
  245. $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LEAKTRACE)
  246. endif
  247. ifdef USE_LTNEW
  248. .dependlibs: $(LTNEW)
  249. $(BIN)/%.ltnew: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
  250. $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LTNEW)
  251. endif
  252. ifdef USE_LTHEAP
  253. .dependlibs: $(LTNEW)
  254. $(BIN)/%.ltheap: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
  255. $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LTHEAP)
  256. endif
  257. # build purified version of executable
  258. $(BIN)/%.pure: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
  259. $(PURIFY) $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)
  260. # build purified version of executable
  261. $(BIN)/%.pure5: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
  262. $(PURIFY5) $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)
  263. # build quantify version of executable
  264. $(BIN)/%.quantify: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
  265. $(QUANTIFY) $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)
  266. # these rules build dependency files in the cases that need them.
  267. ifeq ($(OSTYPE),cygwin)
  268. $(OBJ)/%.d: %.c $(OBJ)
  269. echo > $@
  270. $(OBJ)/%.d: %.cxx $(OBJ)
  271. echo > $@
  272. else
  273. $(OBJ)/%.d: %.c $(NOCOMPILE_SRC) $(ROOT)/.make_prefs
  274. - $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
  275. -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
  276. $(SHELL) -ec '$(DEP) $(CPPFLAGS) $(DFLAGS) $(CFLAGS) $< 
  277. $(DMANGLE) | sed -e "s#^$(*F).o[ :]*#$(@D)/$(*F).o $@ : #" 
  278. > $@; [ -s $@ ] || rm -f $@'
  279. $(OBJ)/%.d: %.cxx $(NOCOMPILE_SRC) $(ROOT)/.make_prefs
  280. - $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
  281. -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
  282. $(SHELL) -ec '$(DEP) $(CPPFLAGS) $(DFLAGS) $(CFLAGS) $< 
  283. $(DMANGLE) | sed -e "s#^$(*F).o[ :]*#$(@D)/$(*F).o $@ : #" 
  284. > $@; [ -s $@ ] || rm -f $@'
  285. endif
  286. # this rule builds a target library if that is what is called for in
  287. # the make file.  If not, the object files are not linked together.
  288. ifdef TARGET_LIBRARY
  289. $(OBJ)/$(TARGET_LIBRARY): $(OBJS) $(OTHERLIBS)
  290. -/bin/rm $@
  291. $(AR) $(ARFLAGS) $@ $^
  292. $(OBJ)/%_pure_p9_c0_103222355_32.a:
  293. $(PURIFY5) -force-rebuild -nolink ld ./obj.debug.sun4u/*.o
  294. $(AR) -$(ARFLAGS) $@ $(OBJ)/*_pure_p9_c0_103222355_32.o
  295. endif
  296. -include $(DEPENDENCIES)