Makefile.post
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:13k
- # $Id: Makefile.post,v 1.64 2001/07/13 01:02:48 bko Exp $
- # The license applies to all software incorporated in the "Vovida
- # Open Communication Application Library" except for those portions
- # incorporating third party software specifically identified as being
- # licensed under separate license.
- #
- #
- #
- # The Vovida Software License, Version 1.0
- # Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
- # are met:
- #
- # 1. Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- #
- # 2. Redistributions in binary form must reproduce the above copyright
- # notice, this list of conditions and the following disclaimer in
- # the documentation and/or other materials provided with the
- # distribution.
- #
- # 3. The names "VOCAL", "Vovida Open Communication Application Library",
- # and "Vovida Open Communication Application Library (VOCAL)" must
- # not be used to endorse or promote products derived from this
- # software without prior written permission. For written
- # permission, please contact vocal@vovida.org.
- #
- # 4. Products derived from this software may not be called "VOCAL", nor
- # may "VOCAL" appear in their name, without prior written
- # permission of Vovida Networks, Inc.
- #
- # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
- # NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
- # NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
- # IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- # DAMAGE.
- #
- # ====================================================================
- #
- # This software consists of voluntary contributions made by Vovida
- # Networks, Inc. and many individuals on behalf of Vovida Networks,
- # Inc. For more information on Vovida Networks, Inc., please see
- # <http://www.vovida.org/>.
- #
- #
- # All third party licenses and copyright notices and other required
- # legends also need to be complied with as well.
- #
- ifdef USE_DMALLOC
- LDLIBS += -L/usr/local/lib -ldmallocth
- endif
- -include $(BUILD)/Makefile.pkg
- PURIFY = purify
- PURIFY5 = /usr/local/purify-5.1-beta-L2-solaris2/purify-5.1-beta-L2-solaris2/purify
- QUANTIFY = quantify
- # this section adds the appropriate flags, headers, etc. for packages.
- # See the Makefile.pkg for further information about how packages work.
- INCDIRS += $(foreach package,$(PACKAGES), $($(package)_INCLUDEDIRS))
- CXXFLAGS += $(foreach package,$(PACKAGES), $($(package)_CXXFLAGS))
- LDFLAGS += $(foreach package,$(PACKAGES), $($(package)_LDFLAGS))
- LIBDIRS += $(foreach package,$(PACKAGES), $($(package)_LIBDIRS))
- LIBNAMES += $(foreach package,$(PACKAGES), $($(package)_LIBNAME) )
- LDLIBS_LAST += $(foreach package,$(PACKAGES), $($(package)_LDLIBS_LAST))
- LDLIBS += $(foreach libs,$(LIBDIRS), -L$(libs)) $(foreach libs,$(LIBNAMES), -l$(libs))
- DEFINES += $(foreach package,$(PACKAGES), $($(package)_DEFINES) )
- LDLIBS_PURE = $(LDLIBS)
- # because order is important
- LDLIBS += $(LDLIBS_LAST)
- ifndef LDLIBS_LAST_PURE
- LDLIBS_LAST_PURE = $(LDLIBS_LAST)
- endif
- LDLIBS_PURE += $(LDLIBS_LAST_PURE)
- DEPEND_FILES += $(foreach pkg,$(PACKAGES), $($(pkg)_DEPENDS))
- DEPEND_TARGETS += $(foreach pkg,$(PACKAGES), $($(pkg)_TARGETS))
- .dependlibs: $(DEPEND_FILES)
- touch .dependlibs
- LEAKTRACE = $(patsubst %/build,%/contrib/andreasen/LeakTracer/LeakTracer.o, $(BUILD))
- LTNEW = $(patsubst %/build,%/contrib/andreasen/newLT/LeakTracer.o, $(BUILD))
- LTHEAP = $(patsubst %/build,%/contrib/andreasen/Heap/Heap.o, $(BUILD))
- RELEASE = $(patsubst %/build,%/release, $(BUILD))
- INCLUDE_LIST = $(foreach dir,$(INCDIRS),-I$(dir))
- DEFINE_LIST = $(foreach dir,$(DEFINES),-D$(dir))
- CXXFLAGS += $(INCLUDE_LIST) $(DEFINE_LIST)
- CFLAGS += $(INCLUDE_LIST) $(DEFINE_LIST)
- OBJ = obj.$(TARGET_NAME)
- #OBJ = $(shell $(TOOLS)/reportbuilddir $(ROOT)/.make_prefs)/obj.$(TARGET_NAME)
- BIN = bin.$(TARGET_NAME)
- #BIN = $(shell $(TOOLS)/reportbuilddir $(ROOT)/.make_prefs)/bin.$(TARGET_NAME)
- .PHONY : all code clean default install copy-files doc $(BIN) $(OBJ) test prefs full headercheck verify
- SRC += $(SRC_$(OSCLASS))
- TESTPROGRAMS += $(VERIFY_TESTCASES)
- ALLSRC += $(TESTPROGRAMS) $(SRC)
- OBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(SRC))) $(EXTRA_OBJS)
- HWOBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(HWSRC)))
- DEPENDENCIES = $(patsubst %.c,$(OBJ)/%.d,$(patsubst %.cxx,$(OBJ)/%.d,$(ALLSRC)))
- LIBTARGETS = $(patsubst %.a,$(OBJ)/%.a,$(filter %.a,$(TARGET_LIBRARY)))
- LIBTARGETS_PURE5 = $(patsubst %.a,$(OBJ)/%_pure_p9_c0_103222355_32.a,$(filter %.a,$(TARGET_LIBRARY)))
- EXTRAS = $(HWOBJS)
- HEADERS = $(wildcard *.h) $(wildcard *.hxx)
- HEADERCHECKDIR = headercheck.$(TARGET_NAME)
- HEADERCHECK = $(patsubst %.hxx, $(HEADERCHECKDIR)/%.oxx, $(patsubst %.h, $(HEADERCHECKDIR)/%.o, $(HEADERS)))
- HEADERCHECKOBJS = $(patsubst %.cxx, %.o, $(HEADERCHECK))
- CODETARGETS = $(patsubst %.c,$(BIN)/%,$(patsubst %.cxx,$(BIN)/%,$(TESTPROGRAMS)))
- TESTCASE_PROGRAMS = $(patsubst %,$(BIN)/%,$(TESTCASES))
- VERIFY_TESTCASE_PROGRAMS = $(patsubst %.c,$(BIN)/%,$(patsubst %.cxx,$(BIN)/%,$(VERIFY_TESTCASES)))
- ifdef USE_LEAKTRACE
- $(LEAKTRACE):
- cd $(ROOT)/contrib ; $(MAKE) all
- CODETARGETS_LT = $(patsubst %,%.lt,$(CODETARGETS))
- endif
- ifdef USE_LTNEW
- $(LTNEW):
- cd $(ROOT)/contrib/andreasen/newLT ; $(MAKE) all
- CODETARGETS_LT = $(patsubst %,%.ltnew,$(CODETARGETS))
- endif
- ifdef USE_LTHEAP
- $(LTNEW):
- cd $(ROOT)/contrib/andreasen/Heap ; $(MAKE)
- CODETARGETS_LT = $(patsubst %,%.ltheap,$(CODETARGETS))
- endif
- CODETARGETS_PURE = $(patsubst %,%.pure,$(CODETARGETS))
- CODETARGETS_PURE5 = $(patsubst %,%.pure5,$(CODETARGETS))
- CODETARGETS_QUANTIFY = $(patsubst %,%.quantify,$(CODETARGETS))
- ifneq "$(strip $(COPYFILES))" ""
- COPY += copy-files
- endif
- ifdef CROSS_COMPILE
- CROSS_FLAG = -c
- endif
- # here is the start of the appropriate rules
- code: $(OBJ) $(HWOBJS) $(BIN) $(AUTO_FILES) $(TARGETS) $(LIBTARGETS) $(CODETARGETS) $(CODETARGETS_LT) $(COPY)
- # $(TOOLS)/makeprefs $@
- $(ROOT)/.make_prefs:
- echo 'USE_BUILDDIR=no' > $@
- include $(ROOT)/.make_prefs
- prefs:
- $(TOOLS)/makeprefs $(ROOT)/.make_prefs
- dependencies: $(DEPENDENCIES)
- ifdef ROOT_TARGET
- target:
- cd $(ROOT) ; $(MAKE) $(ROOT_TARGET)
- endif
- all: code test
- copy-files:
- cp -r $(COPYFILES) $(COPYTO)
- foo:
- echo html/$(subst .a,,$(PROG)).html
- install-lib:
- -$(INSTALL) -m 0644 $(LIBTARGETS) $(RELEASE)/lib.$(TARGET_NAME)
- for hfile in *.hxx *.h ; do ( $(INSTALL) -m 0644 $$hfile $(RELEASE)/include ) ; done
- install-code:
- $(INSTALL) -m 0755 $(CODETARGETS) $(RELEASE)/bin.$(TARGET_NAME)
- install-subdirs:
- for subdirectory in $(SUBDIR) ; do ( cd $$subdirectory ; $(MAKE) install ) ; done
- ifneq "$(strip $(LIBTARGETS))" ""
- INSTALL_TARGETS += install-lib
- endif
- ifneq "$(strip $(CODETARGETS))" ""
- INSTALL_TARGETS += install-code
- endif
- ifneq "$(strip $(SUBDIR))" ""
- INSTALL_TARGETS += install-subdirs
- endif
- install: $(INSTALL_TARGETS)
- #install_bin:
- doc: html html/HIER.html html/$(subst .a,,$(PROG)).html
- clean:
- echo "foo"
- -rm -f *.rpo core *~ #* .make* *.a *.d *.S
- -rm -rf html
- -rm obj.*/*.[oda] bin.*/*
- cleanall: clean
- echo "foo"
- -rm -rf bin.* obj.*
- pure: $(CODETARGETS_PURE)
- pure5: $(CODETARGETS_PURE5)
- pure5_lib: $(LIBTARGETS_PURE5)
- quantify: $(CODETARGETS_QUANTIFY)
- backup:
- tar cvf - $(SRC) $(OSRC) | gzip > `date +"backup_$(PROG)-%Y%m%d-%H%M.tgz"`
- $(BIN):
- - $(TOOLS)/mkbuildlinks $(BIN) $(ROOT)/.make_prefs
- -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(BIN)/$$subdir ) ; done
- $(OBJ):
- - $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
- -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
- test: code
- -if [ -d test ] ; then cd test ; $(MAKE) test ; fi
- -$(ROOT)/tools/run-tests $(CROSS_FLAG) $(ROOT) `pwd` $(BIN) TESTS $(ROOT)/testall.log
- verify: $(VERIFY_TESTCASE_PROGRAMS)
- for program in $(VERIFY_TESTCASE_PROGRAMS) ; do ( ./$$program ) ; done
- # $(CXX) $(CXXFLAGS) -c -o $@ $<
- $(HEADERCHECKDIR)/%.o: %.h
- $(CXX) -x c++ $(CXXFLAGS) -c -o $@ $<
- $(HEADERCHECKDIR)/%.oxx: %.hxx
- $(CXX) -x c++ $(CXXFLAGS) -c -o $@ $<
- $(HEADERCHECKDIR):
- - $(TOOLS)/mkbuildlinks $(HEADERCHECKDIR) $(ROOT)/.make_prefs
- -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(HEADERCHECKDIR)/$$subdir ) ; done
- headercheck: $(HEADERCHECKDIR) $(HEADERCHECKOBJS)
- test_report: test
- -$(MAKE) test > /dev/null 2>&1
- -@if [ -f T_RESULTS.$(BIN) ] ; then $(ROOT)/tools/test-analyzer -r T_RESULTS.$(BIN) $(BIN)/testresults.log ; fi
- html:
- - mkdir html
- html/HIER.html: $(HEADERS)
- doc++ -H -B noBanner -p -d html $^
- html/$(subst .a,,$(PROG)).html: $(ALLSRC) $(HEADERS)
- # cvs2html -a -k -o html
- ifeq ($(CXXFLAGS),$(shell cat $(OBJ)/cxxflags))
- else
- .PHONY: $(OBJ)/cflags $(OBJ)/cxxflags
- endif
- $(OBJ)/cflags:
- echo '$(CFLAGS)' > $@
- $(OBJ)/cxxflags:
- echo '$(CXXFLAGS)' > $@
- ifeq ($(USE_VARARG_HACK),1)
- %.i: %.cxx $(OBJ)/%.d $(OBJ)/cxxflags
- 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
- $(OBJ)/%.o: %.i $(OBJ)/%.d $(OBJ)/cflags
- $(CXX) $(CXXFLAGS) -c -o $@ $<
- endif
- ifeq ($(OSTYPE),cygwin)
- OUTPUT_FLAG=-Fo
- else
- OUTPUT_FLAG=-o
- endif
- # compile c code
- $(OBJ)/%.o: %.c $(OBJ)/%.d $(OBJ)/cflags
- $(CC) $(CFLAGS) -c $(OUTPUT_FLAG)$@ $<
- ifeq ($(ACCEPT_I_FILES),1)
- else
- # compile c++ code
- $(OBJ)/%.o: %.cxx $(OBJ)/%.d $(OBJ)/cxxflags
- $(CXX) $(CXXFLAGS) -c $(OUTPUT_FLAG)$@ $<
- endif
- # build assembly listings
- %.S: %.cxx
- $(CXX) $(CXXFLAGS) -fverbose-asm -g -Wa,-ahln -c
- -o /tmp/cjJunk.o $< > $@
- # build executables
- $(BIN)/%: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS)
- # build leaktraced version of executable
- ifdef USE_LEAKTRACE
- .dependlibs: $(LEAKTRACE)
- $(BIN)/%.lt: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LEAKTRACE)
- endif
- ifdef USE_LTNEW
- .dependlibs: $(LTNEW)
- $(BIN)/%.ltnew: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LTNEW)
- endif
- ifdef USE_LTHEAP
- .dependlibs: $(LTNEW)
- $(BIN)/%.ltheap: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LTHEAP)
- endif
- # build purified version of executable
- $(BIN)/%.pure: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(PURIFY) $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)
- # build purified version of executable
- $(BIN)/%.pure5: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(PURIFY5) $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)
- # build quantify version of executable
- $(BIN)/%.quantify: $(OBJ)/%.o $(OBJS) $(EXTRAS) .dependlibs
- $(QUANTIFY) $(LINKER) $(LDFLAGS) -o $@ $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)
- # these rules build dependency files in the cases that need them.
- ifeq ($(OSTYPE),cygwin)
- $(OBJ)/%.d: %.c $(OBJ)
- echo > $@
- $(OBJ)/%.d: %.cxx $(OBJ)
- echo > $@
- else
- $(OBJ)/%.d: %.c $(NOCOMPILE_SRC) $(ROOT)/.make_prefs
- - $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
- -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
- $(SHELL) -ec '$(DEP) $(CPPFLAGS) $(DFLAGS) $(CFLAGS) $<
- $(DMANGLE) | sed -e "s#^$(*F).o[ :]*#$(@D)/$(*F).o $@ : #"
- > $@; [ -s $@ ] || rm -f $@'
- $(OBJ)/%.d: %.cxx $(NOCOMPILE_SRC) $(ROOT)/.make_prefs
- - $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
- -for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
- $(SHELL) -ec '$(DEP) $(CPPFLAGS) $(DFLAGS) $(CFLAGS) $<
- $(DMANGLE) | sed -e "s#^$(*F).o[ :]*#$(@D)/$(*F).o $@ : #"
- > $@; [ -s $@ ] || rm -f $@'
- endif
- # this rule builds a target library if that is what is called for in
- # the make file. If not, the object files are not linked together.
- ifdef TARGET_LIBRARY
- $(OBJ)/$(TARGET_LIBRARY): $(OBJS) $(OTHERLIBS)
- -/bin/rm $@
- $(AR) $(ARFLAGS) $@ $^
- $(OBJ)/%_pure_p9_c0_103222355_32.a:
- $(PURIFY5) -force-rebuild -nolink ld ./obj.debug.sun4u/*.o
- $(AR) -$(ARFLAGS) $@ $(OBJ)/*_pure_p9_c0_103222355_32.o
- endif
- -include $(DEPENDENCIES)