#-----------------------------------------------------------------------------#
# This source file is hereby placed in the public domain.  -fjh (the author).
#-----------------------------------------------------------------------------#

MAIN_TARGET=all

depend: mercury_main.depend
all: mercury_main

#-----------------------------------------------------------------------------#

.SUFFIXES: .cc
.cc.o:
	$(CXX) $(HACK) $(CXXFLAGS) -c $<

CXX=$(MGNUC) $(ALL_GRADEFLAGS) $(ALL_MGNUCFLAGS)
CXXFLAGS=

# We need to link in the C++ standard library.
MLLIBS = -lstdc++

# Another alternative, rather than explicitly linking in -lstdc++ like we
# do above, would be to use g++ rather than gcc to do the linking, like
# this:
#ML =		MERCURY_C_COMPILER=g++ \
#		MERCURY_LINK_SHARED_OBJ="g++ -shared" \
#		ml

# Due to a bug in g++ 2.7, global register variables don't work in C++.
# Hence we need to ensure that we don't include the global register
# variable declarations.  The following hack seems to do the trick.
# This is commented out now because it should not be needed with
# g++ 2.95 or later.
#
HACK=
#HACK=		-DMR_MACHDEPS_ALPHA_REGS_H \
#		-DMR_MACHDEPS_MIPS_REGS_H \
#		-DMR_MACHDEPS_SPARC_REGS_H \
#		-DMR_MACHDEPS_I386_REGS_H \
#		-DMR_MACHDEPS_PA_REGS_H \
#		-DMR_MACHDEPS_RS6000_REGS_H

#-----------------------------------------------------------------------------#

# tell the Mercury linker to link in cpp_main.o
MLOBJS=cpp_main.o

# tell mmake that it needs to make cpp_main.o before it can make mercury_main
mercury_main: cpp_main.o

# make sure that `mmake clean' removes cpp_main.o
clean_local:
	rm -f cpp_main.o

#-----------------------------------------------------------------------------#
