# make.defs - common variable definitions
#
# modification history
# --------------------
# 04-12-02,mj	created
#

DEPENDENCIES=makedeps

ifeq ($(TARGET_CPU),MIPS)

CPU_TOOL=mips

ifeq ($(TOR_VER),2.1)
CPU=MIPS64
CC_ARCH_SPEC1= -mips4 -G 0 -B$(VX_ROOT)/host/x86-win32/lib/gcc-lib/ -mno-branch-likely -fno-builtin -funroll-loops -Wall
else
CPU=R4000
CC_ARCH_SPEC1= -mcpu=r4000 -mips3 -mgp32 -mfp32 -G 0 -B$(VX_ROOT)/host/x86-win32/lib/gcc-lib/
endif

ifeq ($(ENDIAN),EL)
CC_ARCH_SPEC = -EL $(CC_ARCH_SPEC1)
else
CC_ARCH_SPEC = -EB $(CC_ARCH_SPEC1)
endif

# ARM CPU
else

CPU_TOOL=arm
CPU		= ARMARCH4
CC_ARCH_SPEC1 = -march=armv4 -mapcs-32

ifeq ($(ENDIAN),LE)
CC_ARCH_SPEC = $(CC_ARCH_SPEC1) -mlittle-endian
else
CC_ARCH_SPEC = $(CC_ARCH_SPEC1)
endif

endif

TOOL       = gnu

SW_ROOT = $(subst \,/,$(USER_BASE))
SRC_BASE_PATH = $(SW_ROOT)/src
QD_INCLUDE_PATH = $(SW_ROOT)/Include/h

VX_ROOT = $(subst \,/,$(WIND_BASE))
OS_INCLUDE_PATH = $(VX_ROOT)/target/h

LIB_DIR = $(SW_ROOT)/library
OBJDIR = obj

CC      =cc$(CPU_TOOL)
LD      =ld$(CPU_TOOL)
MAKE    =make
CD		=cd
RM      =del
ECHO	=echo

CFLAGS = $(CFLAGS1) $(CFLAGS2) $(INCLUDE_PATH) $(CDEBUG_DEFINES)

CFLAGS1 = -DCPU=$(CPU) -D_$(OS_RUN) $(CC_ARCH_SPEC) -g $(DEBUG_TYPE)
CFLAGS2 = $(CC_OPTIM) $(CC_COMPILER) $(CC_WARNINGS_ALL)

CC_OPTIM = $(CC_OPTIM_TARGET)

ifeq ($(TARGET_CPU),MIPS)
#CC_COMPILER	=  -ansi -nostdinc
CC_COMPILER	=  -ansi
else
CC_COMPILER	=  -ansi -fdollars-in-identifiers -mno-sched-prolog -fvolatile
endif

CC_OPTIM_TARGET	= -O2 -funroll-loops -fno-for-scope -fno-builtin
CC_WARNINGS_ALL	= -Wall

ifeq ($(RELEASE),NO)
CDEBUG_DEFINES=-DDEBUG=1 -DDEBUG_QD
else
CDEBUG_DEFINES=
endif

ifeq ($(TARGET_CPU),MIPS)
LDFLAGS1 = -nostdlib -r -X -N
ARFLAGS =  crus
else
#LDFLAGS	= -nostdlib -X -EL -r
LDFLAGS1	= -nostdlib -X -N -r
endif

ifeq ($(ENDIAN),EL)
LDFLAGS = $(LDFLAGS1) -EL
else
LDFLAGS = $(LDFLAGS1)
endif


INCLUDE_PATH = -I. \
               -I$(QD_INCLUDE_PATH)/driver \
               -I$(QD_INCLUDE_PATH)/msApi \
               -I$(QD_INCLUDE_PATH)/platform \
               -I$(SW_ROOT)/include \
               -I$(OS_INCLUDE_PATH)


