# Define CC and OLDCC as the same, so that the tests:
#	if [ x"$(OLDCC)" = x"$(CC)" ] ...
#
# will succeed (if OLDCC != CC, it is assumed that GCC is
# being used in secondary stage builds).

BUILD		=
CC		= $(OLDCC)
CLIB		= -lld
X_CFLAGS	= $(DEB_OPT) $(MSTATS) $(SHLIB) $(X_DEFINES)
X_CFLAGS_NODEBUG = $(NO_DEBUG) $(MSTATS) $(OPT) $(PROFILE) $(SHLIB) $(X_DEFINES) $(XCFLAGS)
CCLIBFLAGS	= -O -pic-extern
CPP_ABORT	= # -Dabort=fancy_abort
CPPFLAGS	= $(CPP_ABORT) $(SYSTEM_INCLUDES)
DEB_OPT		= $(OPT) $(DEBUG) $(PROFILE)
DEBUG		= 
DEBUG_COLLECT	= # -DDEBUG
CCLIBFLAGS	= -O -DNO_HALF_PIC
GCC_CFLAGS	= $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) -B./ -DPOSIX -DNO_HALF_PIC
LIBGCC2_CFLAGS	= -O2 $(GCC_CFLAGS) -g1 -pic-extern
LDFLAGS		=
MSTATS		= # -mstats
OLDCC		= /usr/ccs/gcc/gcc
OPT		= -O2
PROFILE		=
SHLIB		= -pic-none
SYSTEM_INCLUDES	= # -I${BUILD}/usr/include
X_DEFINES	= -Dvfork=fork

libdir		= /usr/ccs
mandir		= /usr/ccs/gcc/$(target)/$(version)
bindir		= /usr/ccs/gcc/$(target)/$(version)
