# $Id: Makefile.post,v 1.95.2.8 2003/02/18 19:36:33 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


ifeq ($(HAS_REPO),true)
ifeq ($(USE_REPO),true)
	CFLAGS += $(REPO_FLAG)
	CXXFLAGS += $(REPO_FLAG)
endif
endif

ifneq ($(MAKE_SEPARATE_DEPENDENCY),1)
	CFLAGS += $(DFLAG_INTEGRATED)
	CXXFLAGS += $(DFLAG_INTEGRATED)
endif

PURIFY = purify
PURIFY5 = /usr/pure/purify-5.3-solaris2/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))

ifeq ($(VOCAL_BUILD_SHARED_LIBS),yes)
.dependlibs: $(patsubst %.a,%.so,$(DEPEND_FILES))
else
.dependlibs: $(DEPEND_FILES)
endif
	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 fakepre cppdoc

SRC += $(SRC_$(OSCLASS))

TESTPROGRAMS += $(VERIFY_TESTCASES)

ALLSRC += $(TESTPROGRAMS) $(SRC)

OBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(SRC))) $(EXTRA_OBJS)
TESTPROGRAM_OBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(TESTPROGRAMS))) $(EXTRA_OBJS)
HWOBJS = $(patsubst %.c,$(OBJ)/%.o,$(patsubst %.cxx,$(OBJ)/%.o,$(HWSRC)))

DEPENDENCIES = $(patsubst %.c,$(OBJ)/%.d,$(patsubst %.cxx,$(OBJ)/%.d,$(ALLSRC)))

SHARED_LIB = $(patsubst %,$(OBJ)/%.so,$(strip $(TARGET_LIBRARY)))
STATIC_LIB = $(patsubst %,$(OBJ)/%.a,$(strip $(TARGET_LIBRARY)))

LIBTARGETS += $(STATIC_LIB)
ifeq ($(BUILD_SHARED_LIBRARY),true)
LIBTARGETS += $(SHARED_LIB)
endif

ifeq ($(VOCAL_BUILD_SHARED_LIBS),yes)
LIBTARGETS += $(SHARED_LIB)
endif

LIBTARGETS_PURE5 = $(patsubst %.a,$(OBJ)/%_pure_p9_c0_103222355_32.a,$(filter %.a,$(TARGET_LIBRARY)))

EXTRAS = $(HWOBJS)

HEADERS =  $(wildcard *.h)  $(wildcard *.hxx) $(wildcard *.h) $(EXTRA_HEADERS)

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,$(strip $(CODETARGETS)))
endif

ifdef USE_LTNEW
$(LTNEW):
	cd $(ROOT)/contrib/andreasen/newLT ; $(MAKE) all

CODETARGETS_LT = $(patsubst %,%.ltnew,$(strip $(CODETARGETS)))
endif

ifdef USE_LTHEAP
$(LTNEW):
	cd $(ROOT)/contrib/andreasen/Heap ; $(MAKE)

CODETARGETS_LT = $(patsubst %,%.ltheap,$(strip $(CODETARGETS)))
endif


CODETARGETS_PURE = $(patsubst %,%.pure,$(strip $(CODETARGETS)))
CODETARGETS_PURE5 = $(patsubst %,%.pure5,$(strip $(CODETARGETS)))
CODETARGETS_QUANTIFY = $(patsubst %,%.quantify,$(strip $(CODETARGETS)))

ifneq "$(strip $(COPYFILES))" ""
COPY += copy-files
endif

ifdef CROSS_COMPILE
	CROSS_FLAG = -c
endif

# here is the start of the appropriate rules

HEADERS_SPECIAL = $(BUILD)/vocalconfig-config.h

#DATESTAMP   = $(BUILD)/vocal_build_date.c
DATESTAMP   =
#DATESTAMP_DIR = $(BUILD)/$(OBJ)
#DATESTAMP = $(BUILD)/$(OBJ)/vocal_build_date.o

code: $(HEADERS_SPECIAL) $(OBJ) $(HWOBJS) $(BIN) $(AUTO_FILES) $(TARGETS) $(LIBTARGETS) $(CODETARGETS) $(CODETARGETS_LT) $(COPY) $(TESTPROGRAM_OBJS)

# this rule does anything that needs to be done before dependency generation

$(BUILD)/fakepre: $(HEADERS_SPECIAL)
	@touch $(BUILD)/fakepre

# this is a special rule for building vocalconfig.h if it doesn't
# exist.

$(BUILD)/installpath:
	sed -e 's#@prefix@#default#g' < $(BUILD)/installpath.in > $(BUILD)/installpath

$(BUILD)/vocalconfig-config.h: $(BUILD)/vocalconfig-defaults.h $(BUILD)/installpath
	$(BUILD)/buildhfile $(BUILD)

#	$(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

cppdoc: cppdoc_dir
	DIR=`pwd` ; ( cd cppdoc_dir ; cppdoc  -D__FAKE_CPPDOC__ -accept3slash -namespaces-global $$DIR )

cppdoc_dir:
	-mkdir $@

clean:
	-rm -f *.rpo core *~ \#* .make* *.a *.d *.S
	-rm -rf html
	-rm obj.*/*.[oda] 
	-rm obj.*/*/*.[oda] 
	-rm bin.*/*
	-rm bin.*/*/*

cleanall: clean
	-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
ifdef CODE_SUBDIRS
	-@ for subdir in $(CODE_SUBDIRS) ;  do ( mkdir -p $(BIN)/$$subdir ) ; done 
endif

$(OBJ):
	-@ $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs

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_report: $(BIN) $(OBJ) $(VERIFY_TESTCASE_PROGRAMS) 
	@( for program in $(VERIFY_TESTCASE_PROGRAMS) ; do ( ./$$program  2>&1 ) ; done )  | grep '^VerifySummary'

verify: $(BIN) $(VERIFY_TESTCASE_PROGRAMS)
	@$(TOOLS)/run-tests $(VERIFY_TESTCASE_PROGRAMS)

verifyall: $(BIN) $(VERIFY_TESTCASE_PROGRAMS)
	@$(TOOLS)/run-tests -a $(VERIFY_TESTCASE_PROGRAMS)


$(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
ifdef CODE_SUBDIRS
	-@ for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(HEADERCHECKDIR)/$$subdir ) ; done
endif

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 $< > $@


#$(DATESTAMP_DIR):
#	mkdir -p $@

#$(DATESTAMP): $(DATESTAMP_DIR)
#	$(CC) $(CFLAGS) -c -o $@ $(DATESRC)


# build executables
$(BIN)/%: $(OBJ)/%.o $(OBJS)  $(EXTRAS)  .dependlibs
	$(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(patsubst %.dependlibs,%, $^) $(LDLIBS)


# build leaktraced version of executable
ifdef USE_LEAKTRACE
.dependlibs: $(LEAKTRACE)
$(BIN)/%.lt: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
	$(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LEAKTRACE)

endif

ifdef USE_LTNEW
.dependlibs: $(LTNEW)
$(BIN)/%.ltnew: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
	$(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LTNEW)

endif

ifdef USE_LTHEAP
.dependlibs: $(LTNEW)
$(BIN)/%.ltheap: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
	$(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(patsubst %.dependlibs,%, $^) $(LDLIBS) $(LTHEAP)

endif

# build purified version of executable
$(BIN)/%.pure: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
	$(PURIFY) $(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)

# build purified version of executable
$(BIN)/%.pure5: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
	$(PURIFY5) $(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(patsubst %.dependlibs,%, $^) $(LDLIBS_PURE)

# build quantify version of executable
$(BIN)/%.quantify: $(OBJ)/%.o $(OBJS) $(EXTRAS)  .dependlibs
	$(QUANTIFY) $(LINKER) $(LDFLAGS) -o $@ $(DATESTAMP) $(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
ifdef CODE_SUBDIRS
	-@for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
endif
ifeq ($(MAKE_SEPARATE_DEPENDENCY),1)
	@echo "Making $@"
	@$(SHELL) -ec '$(DEP) $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(DFLAGS) $< \
		$(DMANGLE) | sed -e "s#^$(*F).o[ :]*#$(@D)\/$(*F).o $@ : #" \
		> $@; [ -s $@ ] || rm -f $@'
endif

$(OBJ)/%.d: %.cxx $(NOCOMPILE_SRC) $(ROOT)/.make_prefs
	-@ $(TOOLS)/mkbuildlinks $(OBJ) $(ROOT)/.make_prefs
ifdef CODE_SUBDIRS
	-@for subdir in $(CODE_SUBDIRS) ; do ( mkdir -p $(OBJ)/$$subdir ) ; done
endif
ifeq ($(MAKE_SEPARATE_DEPENDENCY),1)
	@echo "Making $@"
	@$(SHELL) -ec '$(DEP) $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(DFLAGS) $< \
		$(DMANGLE) | sed -e "s#^$(*F).o[ :]*#$(@D)\/$(*F).o $@ : #" \
		> $@; [ -s $@ ] || rm -f $@'
endif

endif

.SECONDARY: $(DEPENDENCIES) $(OBJS)

# 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)/$(strip $(TARGET_LIBRARY)).a: $(OBJS) $(OTHERLIBS)
	-@ /bin/rm $@
ifeq ($(USE_REPO),true)
	-@echo 'int main(){return 0;}' > $(OBJ)/closure.cxx
	$(LINKER) $(LDFLAGS) -o $(OBJ)/closure $(OBJ)/closure.cxx $(patsubst %.dependlibs,%, $^) $(LDLIBS)
endif
	$(AR) $(ARFLAGS) $@ $^ || rm $@
	$(RANLIB) $@ || rm $@

$(OBJ)/$(strip $(TARGET_LIBRARY)).so: $(OBJS) $(OTHERLIBS)
	-@ /bin/rm $@
ifeq ($(USE_REPO),true)
	-@echo 'int main(){return 0;}' > $(OBJ)/closure.cxx
	$(LINKER) $(LDFLAGS) -o $(OBJ)/closure $(OBJ)/closure.cxx $(patsubst %.dependlibs,%, $^) $(LDLIBS)
endif
	$(MKSHLIB) -o $@ $^
	-@ mkdir -p $(ROOT)/lib.$(TARGET_NAME)
	-@ ln -s $(shell pwd)/$@ $(ROOT)/lib.$(TARGET_NAME)

$(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 || rm $@
endif

-include $(DEPENDENCIES)

# this MUST be the last item in the makefile -- it will be done first always.
-include $(BUILD)/fakepre


syntax highlighted by Code2HTML, v. 0.9.1