-BURG := $(TOOLDEBUG)/burg
-RunBurg := $(BURG) $(BURG_OPTS)
-
-
-# Enable this for profiling support with 'gprof'
-# This automatically enables optimized builds.
-ifdef ENABLE_PROFILING
- PROFILE = -pg
- ENABLE_OPTIMIZED = 1
-else
- PROFILE =
-endif
-
-# By default, strip symbol information from executable
-ifdef KEEP_SYMBOLS
-STRIP =
-STRIP_WARN_MSG =
-else
-STRIP = $(PLATFORMSTRIPOPTS)
-STRIP_WARN_MSG = "(without symbols) "
-endif
-
-# Allow gnu extensions...
-CPPFLAGS += -D_GNU_SOURCE
-
-# -Wno-unused-parameter
-CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused -I$(LEVEL)/include
-CompileOptimizeOpts := -O3 -DNDEBUG -finline-functions -fshort-enums
-
-# Compile a cpp file, don't link...
-Compile := $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CompileCommonOpts)
-CompileG := $(Compile) -g -D_DEBUG
-CompileO := $(Compile) $(CompileOptimizeOpts) -felide-constructors -fomit-frame-pointer
-CompileP := $(Compile) $(CompileOptimizeOpts) -felide-constructors $(PROFILE)
-
-# Compile a c file, don't link...
-CompileC := $(CC) -c $(CPPFLAGS) $(CCFLAGS) $(CompileCommonOpts)
-CompileCG := $(CompileC) -g -D_DEBUG
-CompileCO := $(CompileC) $(CompileOptimizeOpts) -felide-constructors -fomit-frame-pointer
-CompileCP := $(CompileC) $(CompileOptimizeOpts) -felide-constructors $(PROFILE)
-
-
-# Link final executable
-
-ifdef ENABLE_PURIFY # To enable purify, build with 'gmake ENABLE_PURIFY=1'
-Link := $(PURIFY) $(CXX) -static
-else
-Link := $(CXX)
-endif
-LinkG := $(Link) -g -L$(LIBDEBUG) $(STRIP)
-LinkO := $(Link) -O3 -L$(LIBRELEASE)
-LinkP := $(Link) -O3 -L$(LIBPROFILE) $(PROFILE)
-
-# Create one .o file from a bunch of .o files...
-Relink = ld -r
-
-# MakeSO - Create a .so file from a .o files...
-MakeSO := $(CXX) $(MakeSharedObjectOption)
-MakeSOO := $(MakeSO) -O3
-MakeSOP := $(MakeSOO) $(PROFILE)
-
-# Create dependancy file from CPP file, send to stdout.
-Depend := $(CXX) -MM -I$(LEVEL)/include $(CPPFLAGS)
-DependC := $(CC) -MM -I$(LEVEL)/include $(CPPFLAGS)
-
-# Archive a bunch of .o files into a .a file...
-AR = ar cq
-BISON = bison
-
-#----------------------------------------------------------
-
-# Source includes all of the cpp files, and objects are derived from the
-# source files...
-# The local Makefile can list other Source files via ExtraSource = ...
-#
-ifndef Source
-Source := $(ExtraSource) $(wildcard *.cpp *.c *.y *.l)
-endif
-
-Objs := $(sort $(patsubst Debug/%.o, %.o, $(addsuffix .o,$(basename $(Source)))))
-ObjectsO := $(addprefix $(BUILD_ROOT)/Release/,$(Objs))
-ObjectsP := $(addprefix $(BUILD_ROOT)/Profile/,$(Objs))
-ObjectsG := $(addprefix $(BUILD_ROOT)/Debug/,$(Objs))
-
-
-#---------------------------------------------------------
-# Handle the DIRS and PARALLEL_DIRS options
-#---------------------------------------------------------
-
-ifdef DIRS
-all install clean test ::
- $(VERB) for dir in ${DIRS}; do \
- (cd $$dir; $(MAKE) $@) || exit 1; \
- done
-endif
-
-# Handle PARALLEL_DIRS
-ifdef PARALLEL_DIRS
-all :: $(addsuffix /.makeall , $(PARALLEL_DIRS))
-install :: $(addsuffix /.makeinstall, $(PARALLEL_DIRS))
-clean :: $(addsuffix /.makeclean , $(PARALLEL_DIRS))
-test :: $(addsuffix /.maketest , $(PARALLEL_DIRS))
-
-%/.makeall %/.makeinstall %/.makeclean %/.maketest:
- $(VERB) cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@)
-endif
-
-#---------------------------------------------------------
-# Handle the LIBRARYNAME option - used when building libs...
-#---------------------------------------------------------
-#
-# When libraries are built, they are allowed to optionally define the
-# DONT_BUILD_RELINKED make variable, which, when defined, prevents a .o file
-# from being built for the library. This .o files may then be linked to by a
-# tool if the tool does not need (or want) the semantics a .a file provides
-# (linking in only object files that are "needed"). If a library is never to
-# be used in this way, it is better to define DONT_BUILD_RELINKED, and define
-# BUILD_ARCHIVE instead.
-#
-# Some libraries must be built as .a files (libscalar for example) because if
-# it's built as a .o file, then all of the constituent .o files in it will be
-# linked into tools (for example gccas) even if they only use one of the parts
-# of it. For this reason, sometimes it's useful to use libraries as .a files.
-
-ifdef LIBRARYNAME
-
-# Make sure there isn't any extranous whitespace on the LIBRARYNAME option
-LIBRARYNAME := $(strip $(LIBRARYNAME))
-
-LIBNAME_O := $(LIBRELEASE)/lib$(LIBRARYNAME).so
-LIBNAME_P := $(LIBPROFILE)/lib$(LIBRARYNAME).so
-LIBNAME_G := $(LIBDEBUG)/lib$(LIBRARYNAME).so
-LIBNAME_AO := $(LIBRELEASE)/lib$(LIBRARYNAME).a
-LIBNAME_AP := $(LIBPROFILE)/lib$(LIBRARYNAME).a
-LIBNAME_AG := $(LIBDEBUG)/lib$(LIBRARYNAME).a
-LIBNAME_OBJO := $(LIBRELEASE)/$(LIBRARYNAME).o
-LIBNAME_OBJP := $(LIBPROFILE)/$(LIBRARYNAME).o
-LIBNAME_OBJG := $(LIBDEBUG)/$(LIBRARYNAME).o
-
-
-ifndef ENABLE_OPTIMIZED
-BUILD_LIBNAME_G := $(LIBNAME_G)
-ifndef DONT_BUILD_RELINKED
-BUILD_LIBNAME_OBJG := $(LIBNAME_OBJG)
-endif
-ifdef BUILD_ARCHIVE
-BUILD_LIBNAME_AG := $(LIBNAME_AG)
-endif
-endif
-
-# If optimized builds are enabled...
-ifdef ENABLE_OPTIMIZED
- ifdef ENABLE_PROFILING
- BUILD_LIBNAME_O := $(LIBNAME_P)
- ifndef DONT_BUILD_RELINKED
- BUILD_LIBNAME_OBJO := $(LIBNAME_OBJP)
- endif
- ifdef BUILD_ARCHIVE
- BUILD_LIBNAME_AO := $(LIBNAME_AP)
- endif
- else
- BUILD_LIBNAME_O := $(LIBNAME_O)
- ifndef DONT_BUILD_RELINKED
- BUILD_LIBNAME_OBJO := $(LIBNAME_OBJO)
- endif
- ifdef BUILD_ARCHIVE
- BUILD_LIBNAME_AO := $(LIBNAME_AO)
- endif
- endif
-endif
-
-all:: $(BUILD_LIBNAME_AG) $(BUILD_LIBNAME_OBJG) # Debug
-all:: $(BUILD_LIBNAME_AO) $(BUILD_LIBNAME_OBJO) # Release
-all:: $(BUILD_LIBNAME_AP) $(BUILD_LIBNAME_OBJP) # Profile
-dynamic:: $(BUILD_LIBNAME_G) $(BUILD_LIBNAME_O) $(BUILD_LIBNAME_P) # .so files
-
-$(LIBNAME_O): $(ObjectsO) $(LibSubDirs) $(LIBRELEASE)/.dir
- @echo ======= Linking $(LIBRARYNAME) release library =======
- $(VERB) $(MakeSOO) -o $@ $(ObjectsO) $(LibSubDirs) $(LibLinkOpts)
-
-$(LIBNAME_P): $(ObjectsP) $(LibSubDirs) $(LIBPROFILE)/.dir
- @echo ======= Linking $(LIBRARYNAME) profile library =======
- $(VERB) $(MakeSOP) -o $@ $(ObjectsP) $(LibSubDirs) $(LibLinkOpts)
-
-$(LIBNAME_G): $(ObjectsG) $(LibSubDirs) $(LIBDEBUG)/.dir
- @echo ======= Linking $(LIBRARYNAME) debug library =======
- $(VERB) $(MakeSO) -g -o $@ $(ObjectsG) $(LibSubDirs) $(LibLinkOpts)
-
-$(LIBNAME_AO): $(ObjectsO) $(LibSubDirs) $(LIBRELEASE)/.dir
- @echo ======= Linking $(LIBRARYNAME) release library =======
- @rm -f $@
- $(VERB) $(AR) $@ $(ObjectsO) $(LibSubDirs)
-
-$(LIBNAME_AP): $(ObjectsP) $(LibSubDirs) $(LIBPROFILE)/.dir
- @echo ======= Linking $(LIBRARYNAME) profile library =======
- @rm -f $@
- $(VERB) $(AR) $@ $(ObjectsP) $(LibSubDirs)
-
-$(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(LIBDEBUG)/.dir
- @echo ======= Linking $(LIBRARYNAME) debug library =======
- @rm -f $@
- $(VERB) $(AR) $@ $(ObjectsG) $(LibSubDirs)
-
-$(LIBNAME_OBJO): $(ObjectsO) $(LibSubDirs) $(LIBRELEASE)/.dir
- @echo "Linking $@"
- $(VERB) $(Relink) -o $@ $(ObjectsO) $(LibSubDirs)
-
-$(LIBNAME_OBJP): $(ObjectsP) $(LibSubDirs) $(LIBPROFILE)/.dir
- @echo "Linking $@"
- $(VERB) $(Relink) -o $@ $(ObjectsP) $(LibSubDirs)
-
-$(LIBNAME_OBJG): $(ObjectsG) $(LibSubDirs) $(LIBDEBUG)/.dir
- @echo "Linking $@"
- $(VERB) $(Relink) -o $@ $(ObjectsG) $(LibSubDirs)
-
-endif
-
-#------------------------------------------------------------------------
-# Create a TAGS database for emacs
-#------------------------------------------------------------------------
-
-ifeq ($(LEVEL), .)
-tags:
- etags -l c++ `find include lib tools -name '*.cpp' -o -name '*.h'`
-all:: tags
-endif