###############################################################################
# Defines $(ASR_GLOBAL_DEFINES) (among other things) that specify a build.
#
# !!! NOTE:	This file must be kept synchronized with builddef.h
# !!!		Also the values of $(ASR_OPTIMIZE), $(ASR_PROFILE), & $(ASR_TRACE) must
# !!!		be compatible with the corresponding values in buildddef.h
#
# Required macros set in macros.mak:
#	$(ASR_OS)			The name of the operating system.
#	$(ASR_CPU)			The name of the CPU architecture.
#	$(ASR_COMPILER)		The name of the compiler.
#	$(ASR_BUILD)		A string that defines what type of build to perform.
#	$(ASR_UI)			The name of the type of user interface.
#
# The important macros defined herein are:
# *	$(ASR_GLOBAL_DEFINES)The compiler defines based on the values of:
#					$(ASR_OS), $(ASR_CPU), $(ASR_COMPILER), $(ASR_BUILD), & $(ASR_UI).
# *	$(ASR_SUB_DIR)		The object, library, & binary sub-directory name.
# *	$(ASR_OPTIMIZE)		Used by $(ASR_COMPILER_CHAR)flags.mak to enable optimization.
# *	$(ASR_PROFILE)		Used by $(ASR_COMPILER_CHAR)flags.mak to enable profiling.
# *	$(ASR_TRACE)		Used by $(ASR_COMPILER_CHAR)flags.mak to enable tracing.
#
# Other macros incidentally valid on exit:
# *	$(ASR_OS_TYPE)		Value corresponding to the type of operating system.
#	$(ASR_CPU_TYPE)		Value corresponding to the type of CPU architecture.
#	$(ASR_COMPILER_TYPE)Value corresponding to the type of compiler.
# *	$(ASR_BUILD_TYPE)	Value corresponding to the type of build to perform.
#	$(ASR_UI_TYPE)		Value corresponding to the type of user interface.
#	$(ASR_OS_CHAR)		Character corresponding to the type of operating system.
#	$(ASR_CPU_CHARS)	Characters corresponding to the type of CPU architecture.
# *	$(ASR_COMPILER_CHAR)Character corresponding to the type of compiler.
#	$(ASR_BUILD_CHAR)	Character corresponding to the type of build to perform.
#	$(ASR_OS_MSDOS)		Value associated with $(ASR_OS_CHAR) = D.
#	$(ASR_OS_WIN32)		Value associated with $(ASR_OS_CHAR) = W.
#	$(ASR_OS_MAC)		Value associated with $(ASR_OS_CHAR) = M.
#	$(ASR_OS_UNIX)		Value associated with $(ASR_OS_CHAR) = U.
#	$(ASR_OS_EMBEDDED)	Value associated with $(ASR_OS_CHAR) = E.
#	$(ASR_OS_VXWORKS)	Value associated with $(ASR_OS_CHAR) = V.
#	$(ASR_OS_QNX)		Value associated with $(ASR_OS_CHAR) = Q.
#	$(ASR_OS_PSOS)		Value associated with $(ASR_OS_CHAR) = S.
#	$(ASR_OS_WINCE)		Value associated with $(ASR_OS_CHAR) = C.
#	$(ASR_OS_PALM)		Value associated with $(ASR_OS_CHAR) = P.
#	$(ASR_OS_JAVA)		Value associated with $(ASR_OS_CHAR) = J.
#	$(ASR_CPU_I86)		Value associated with $(ASR_CPU_CHARS) = IN.
#	$(ASR_CPU_68K)		Value associated with $(ASR_CPU_CHARS) = MO.
#	$(ASR_CPU_MIPS)		Value associated with $(ASR_CPU_CHARS) = MI.
#	$(ASR_CPU_ALPHA)	Value associated with $(ASR_CPU_CHARS) = AL.
#	$(ASR_CPU_PPC)		Value associated with $(ASR_CPU_CHARS) = PP.
#	$(ASR_CPU_SPARC)	Value associated with $(ASR_CPU_CHARS) = SP.
#	$(ASR_CPU_ARM)		Value associated with $(ASR_CPU_CHARS) = AR.
#	$(ASR_CPU_STRONGARM)Value associated with $(ASR_CPU_CHARS) = SA.
#	$(ASR_CPU_TMS320X)	Value associated with $(ASR_CPU_CHARS) = TI.
#	$(ASR_CPU_SH3)		Value associated with $(ASR_CPU_CHARS) = HI.
#	$(ASR_CPU_SH4)		Value associated with $(ASR_CPU_CHARS) = HI.
#	$(ASR_CPU_FAMILY_TMS320C30)Value associated with $(ASR_CPU_FAMILY) = 3.
#	$(ASR_CPU_FAMILY_TMS320C40)Value associated with $(ASR_CPU_FAMILY) = 4.
#	$(ASR_CPU_FAMILY_TMS320C2XX)Value associated with $(ASR_CPU_FAMILY) = 2.
#	$(ASR_CPU_FAMILY_TMS320C54X)Value associated with $(ASR_CPU_FAMILY) = 5.
#	$(ASR_C_BORLAND)	Value associated with $(ASR_COMPILER_CHAR) = B.
#	$(ASR_C_MICROSOFT)	Value associated with $(ASR_COMPILER_CHAR) = M.
#	$(ASR_C_HIGH)		Value associated with $(ASR_COMPILER_CHAR) = H.
#	$(ASR_C_INTEL)		Value associated with $(ASR_COMPILER_CHAR) = I.
#	$(ASR_C_ZORTECH)	Value associated with $(ASR_COMPILER_CHAR) = Z.
#	$(ASR_C_WATCOM)		Value associated with $(ASR_COMPILER_CHAR) = W.
#	$(ASR_C_GNU)		Value associated with $(ASR_COMPILER_CHAR) = G.
#	$(ASR_C_SUNPRO)		Value associated with $(ASR_COMPILER_CHAR) = S.
#	$(ASR_C_DECCXX)		Value associated with $(ASR_COMPILER_CHAR) = D.
#	$(ASR_C_METROWERKS)	Value associated with $(ASR_COMPILER_CHAR) = C.
#	$(ASR_C_GHS)		Value associated with $(ASR_COMPILER_CHAR) = X.
#	$(ASR_C_TICXC)		Value associated with $(ASR_COMPILER_CHAR) = T.
#	$(ASR_C_ARM)		Value associated with $(ASR_COMPILER_CHAR) = A.
#	$(ASR_BUILD_SHIP)	Value associated with $(ASR_BUILD_CHAR) = S.
#	$(ASR_BUILD_INHOUSE)Value associated with $(ASR_BUILD_CHAR) = I.
#	$(ASR_BUILD_DEBUGO)	Value associated with $(ASR_BUILD_CHAR) = G.
#	$(ASR_BUILD_DEBUG)	Value associated with $(ASR_BUILD_CHAR) = X.
#	$(ASR_BUILD_PROFILE)Value associated with $(ASR_BUILD_CHAR) = P.
#	$(ASR_BUILD_TRACE)	Value associated with $(ASR_BUILD_CHAR) = L.
#
# !!! NOTE:	Should these UI macros be used?
#
#	$(ASR_UI_NONE)
#	$(ASR_UI_TTY)
#	$(ASR_UI_GUI)
#
# Optional (for certain values of $(ASR_CPU)) macros used herein:
#	$(ASR_CPU_FAMILY)	OPTIONAL single-character name of the $(ASR_CPU) family.
#
# Optional (for certain values of $(ASR_CPU)) macros defined herein:
# *	$(ASR_CPU_FAMILY_TYPE)For OPTIONAL CPU-specifics in $(ASR_COMPILER_CHAR)flags.mak.
#
# *	Used outside of this makefile. All macros with the suffix ``_TYPE''
#	used outside of this makefile can be &ed with macros with the
#	corresponding prefix. Threfore it is implied that those macros are
#	also available outside of this makefile.
###############################################################################

# Makefile.config configures the ASR build.  Include this first!
include $(ASR_MAKE_DIR)/Makefile.config

# Makefile.common contains settings available to all ASR modules
include $(ASR_MAKE_DIR)/Makefile.common

# Define $(ASR_OS_*), $(ASR_CPU_*), $(ASR_COMPILER_*), $(ASR_BUILD_*) & $(ASR_UI_*) values.

# OS

ASR_OS_MSDOS = 1
ASR_OS_WIN32 = 2
ASR_OS_MAC = 4
ASR_OS_UNIX = 8
ASR_OS_EMBEDDED = 16
ASR_OS_VXWORKS = 32
ASR_OS_PSOS = 64
ASR_OS_WINCE = 128
ASR_OS_PALM = 256
ASR_OS_JAVA = 512
ASR_OS_QNX = 1024

# CPU

ASR_CPU_I86 = 1
ASR_CPU_68K = 2
ASR_CPU_MIPS = 4
ASR_CPU_ALPHA = 8
ASR_CPU_PPC = 16
ASR_CPU_SPARC = 32
ASR_CPU_ARM = 64
ASR_CPU_STRONGARM = 128
ASR_CPU_TMS320X = 256
ASR_CPU_SH3 = 512
ASR_CPU_SH4 = 1024

# Used only by TFLAGS.MAK.

ASR_CPU_FAMILY_TMS320C30 = 1
ASR_CPU_FAMILY_TMS320C40 = 2
ASR_CPU_FAMILY_TMS320C2XX = 4
ASR_CPU_FAMILY_TMS320C54X = 8

# COMPILER

ASR_C_BORLAND = 1
ASR_C_MICROSOFT = 2
ASR_C_INTEL = 4
ASR_C_HIGH = 8
ASR_C_ZORTECH = 16
ASR_C_WATCOM = 32
ASR_C_GNU = 64
ASR_C_SUNPRO = 128
ASR_C_DECCXX = 256
ASR_C_METROWERKS = 512
ASR_C_GHS = 1024
ASR_C_TICXC = 2048
ASR_C_ARM = 4096
ASR_C_DIABDATA = 8192

# BUILD (must be synchronized with vcc_helper.h included by buildopt.h)

ASR_BUILD_SHIP = 1
ASR_BUILD_INHOUSE = 2
ASR_BUILD_DEBUGO = 4
ASR_BUILD_DEBUG = 8
ASR_BUILD_PROFILE = 16
ASR_BUILD_TRACE = 32

ASR_OFF = 0

# UI

ASR_UI_NONE = 1
ASR_UI_TTY = 2
ASR_UI_GUI = 4

########################################################################
#
# Define $(ASR_*_TYPE) and $(ASR_*_CHAR[S]) to be used to define $(ASR_GLOBAL_DEFINES)
# and $(ASR_SUB_DIR).

################################## OS ##################################

ifeq ("$(ASR_OS)","MSDOS")
ASR_OS_TYPE = $(ASR_OS_MSDOS)

else								# same as OS = "Windows_NT"
ifeq ("$(ASR_OS)","WIN32")
ASR_OS_TYPE = $(ASR_OS_WIN32)

else								# same as OS = "WIN32"
ifeq ("$(ASR_OS)","Windows_NT")
ASR_OS_TYPE = $(ASR_OS_WIN32)

else
ifeq ("$(ASR_OS)","MAC")
ASR_OS_TYPE = $(ASR_OS_MAC)

else
ifeq ("$(ASR_OS)","UNIX")
ASR_OS_TYPE = $(ASR_OS_UNIX)

else
ifeq ("$(ASR_OS)","EMBEDDED")
ASR_OS_TYPE = $(ASR_OS_EMBEDDED)

else
ifeq ("$(ASR_OS)","VXWORKS")
ASR_OS_TYPE = $(ASR_OS_VXWORKS)

else
ifeq ("$(ASR_OS)","PSOS")
ASR_OS_TYPE = $(ASR_OS_PSOS)

else
ifeq ("$(ASR_OS)","Wince")
ASR_OS_TYPE = $(ASR_OS_WINCE)

else
ifeq ("$(ASR_OS)","PALM")
ASR_OS_TYPE = $(ASR_OS_PALM)

else
ifeq ("$(ASR_OS)","JAVA")
ASR_OS_TYPE = $(ASR_OS_JAVA)

else
ifeq ("$(ASR_OS)","QNX")
ASR_OS_TYPE = $(ASR_OS_QNX)

else
ERROR += \
$(subst $(space),|,'Failed to select operating system with $$(ASR_OS) == "$(ASR_$(ASR_OS))"')
ASR_OS_TYPE = ASR_BAD_OS
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif


################################## HOST_OS ##################################

ifeq ("$(ASR_HOST_OS)","MSDOS")
ASR_HOST_OS_TYPE = $(ASR_OS_MSDOS)

else								# same as OS = "Windows_NT"
ifeq ("$(ASR_HOST_OS)","WIN32")
ASR_HOST_OS_TYPE = $(ASR_OS_WIN32)

else								# same as OS = "WIN32"
ifeq ("$(ASR_HOST_OS)","Windows_NT")
ASR_HOST_OS_TYPE = $(ASR_OS_WIN32)

else
ifeq ("$(ASR_HOST_OS)","MAC")
ASR_HOST_OS_TYPE = $(ASR_OS_MAC)

else
ifeq ("$(ASR_HOST_OS)","UNIX")
ASR_HOST_OS_TYPE = $(ASR_OS_UNIX)

else
ifeq ("$(ASR_HOST_OS)","EMBEDDED")
ASR_HOST_OS_TYPE = $(ASR_OS_EMBEDDED)

else
ifeq ("$(ASR_HOST_OS)","VXWORKS")
ASR_HOST_OS_TYPE = $(ASR_OS_VXWORKS)

else
ifeq ("$(ASR_HOST_OS)","PSOS")
ASR_HOST_OS_TYPE = $(ASR_OS_PSOS)

else
ifeq ("$(ASR_HOST_OS)","Wince")
ASR_HOST_OS_TYPE = $(ASR_OS_WINCE)

else
ifeq ("$(ASR_HOST_OS)","PALM")
ASR_HOST_OS_TYPE = $(ASR_OS_PALM)

else
ifeq ("$(ASR_HOST_OS)","JAVA")
ASR_HOST_OS_TYPE = $(ASR_OS_JAVA)

else
ifeq ("$(ASR_HOST_OS)","QNX")
ASR_HOST_OS_TYPE = $(ASR_OS_QNX)

else
ERROR += \
$(subst $(space),|,'Failed to select operating system with $$(ASR_HOST_OS) == "$(ASR_HOST_OS)"')
ASR_HOST_OS_TYPE = ASR_BAD_OS
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif

################################## TARGET_OS ##################################

ifeq ("$(ASR_TARGET_OS)","MSDOS")
ASR_TARGET_OS_TYPE = $(ASR_OS_MSDOS)

else								# same as OS = "Windows_NT"
ifeq ("$(ASR_TARGET_OS)","WIN32")
ASR_TARGET_OS_TYPE = $(ASR_OS_WIN32)

else								# same as OS = "WIN32"
ifeq ("$(ASR_TARGET_OS)","Windows_NT")
ASR_TARGET_OS_TYPE = $(ASR_OS_WIN32)

else
ifeq ("$(ASR_TARGET_OS)","MAC")
ASR_TARGET_OS_TYPE = $(ASR_OS_MAC)

else
ifeq ("$(ASR_TARGET_OS)","UNIX")
ASR_TARGET_OS_TYPE = $(ASR_OS_UNIX)

else
ifeq ("$(ASR_TARGET_OS)","EMBEDDED")
ASR_TARGET_OS_TYPE = $(ASR_OS_EMBEDDED)

else
ifeq ("$(ASR_TARGET_OS)","VXWORKS")
ASR_TARGET_OS_TYPE = $(ASR_OS_VXWORKS)

else
ifeq ("$(ASR_TARGET_OS)","PSOS")
ASR_TARGET_OS_TYPE = $(ASR_OS_PSOS)

else
ifeq ("$(ASR_TARGET_OS)","Wince")
ASR_TARGET_OS_TYPE = $(ASR_OS_WINCE)

else
ifeq ("$(ASR_TARGET_OS)","PALM")
ASR_TARGET_OS_TYPE = $(ASR_OS_PALM)

else
ifeq ("$(ASR_TARGET_OS)","JAVA")
ASR_TARGET_OS_TYPE = $(ASR_OS_JAVA)

else
ifeq ("$(ASR_TARGET_OS)","QNX")
ASR_TARGET_OS_TYPE = $(ASR_OS_QNX)

else
ERROR += \
$(subst $(space),|,'Failed to select operating system with $$(ASR_TARGET_OS) == "$(ASR_TARGET_OS)"')
ASR_TARGET_OS_TYPE = ASR_BAD_OS
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif

################################## CPU #################################

ifeq ("$(ASR_CPU)","I86")
ASR_CPU_TYPE = $(ASR_CPU_I86)
ASR_CPU_CHARS = in

else
ifeq ("$(ASR_CPU)", "SIMNT")
ASR_CPU_TYPE = $(ASR_CPU_I86)
ASR_CPU_CHARS = in

else
ifeq ("$(ASR_CPU)","68K")
ASR_CPU_TYPE = $(ASR_CPU_68K)
ASR_CPU_CHARS = mo

else
ifeq ("$(ASR_CPU)","MIPS")
ASR_CPU_TYPE = $(ASR_CPU_MIPS)
ASR_CPU_CHARS = mi

else
ifeq ("$(ASR_CPU)","ALPHA")
ASR_CPU_TYPE = $(ASR_CPU_ALPHA)
ASR_CPU_CHARS = al

else
ifeq ("$(ASR_CPU)","PPC")
ASR_CPU_TYPE = $(ASR_CPU_PPC)
ASR_CPU_CHARS = pp

else
ifeq ("$(ASR_CPU)","SPARC")
ASR_CPU_TYPE = $(ASR_CPU_SPARC)
ASR_CPU_CHARS = pp

else
ifeq ("$(ASR_CPU)","ARM")
ASR_CPU_TYPE = $(ASR_CPU_ARM)
ASR_CPU_CHARS = ar

else
ifeq ("$(ASR_CPU)","STRONGARM")
ASR_CPU_TYPE = $(ASR_CPU_STRONGARM)
ASR_CPU_CHARS = sa

else
ifeq ("$(ASR_CPU)","TMS320X")
ASR_CPU_TYPE = $(ASR_CPU_TMS320X)
ASR_CPU_CHARS = ti

ifndef CPU_FAMILY
CPU_FAMILY_TYPE = 0
MESSAGE += \
$(subst $(space),|,'$$(ASR_CPU_FAMILY_TYPE) defaulted to "$(ASR_CPU_FAMILY_TYPE)"')

else
ASR_CPU_CHARS = T$(ASR_CPU_FAMILY)

ifeq ("$(ASR_CPU_FAMILY)","3")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C30)

else
ifeq ("$(ASR_CPU_FAMILY)","4")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C40)

else
ifeq ("$(ASR_CPU_FAMILY)","2")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C2XX)

else
ifeq ("$(ASR_CPU_FAMILY)","5")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C54X)

else
ERROR += \
$(subst $(space),|,\
'Failed to select CPU family with $$(ASR_CPU_FAMILY) == "$(ASR_CPU_FAMILY)"')
ASR_CPU_FAMILY_TYPE=ASR_BAD_CPU_FAMILY
endif
endif
endif
endif
endif

else
ifeq ("$(ASR_CPU)","SH3")
ASR_CPU_TYPE = $(ASR_CPU_SH3)
ASR_CPU_CHARS = hi

else
ifeq ("$(ASR_CPU)","SH4")
ASR_CPU_TYPE = $(ASR_CPU_SH4)
ASR_CPU_CHARS = hi

else
ERROR += \
$(subst $(space),|,\
'Failed to select CPU architecture with $$(ASR_CPU) == "$(ASR_$(ASR_CPU))"')
ASR_CPU_TYPE = ASR_BAD_CPU
ASR_CPU_CHARS = ASR_BAD_CPU
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif

################################## HOST_CPU #################################

ifeq ("$(ASR_HOST_CPU)","I86")
ASR_HOST_CPU_TYPE = $(ASR_CPU_I86)

else
ifeq ("$(ASR_HOST_CPU)","68K")
ASR_HOST_CPU_TYPE = $(ASR_CPU_68K)

else
ifeq ("$(ASR_HOST_CPU)","MIPS")
ASR_HOST_CPU_TYPE = $(ASR_CPU_MIPS)

else
ifeq ("$(ASR_HOST_CPU)","ALPHA")
ASR_HOST_CPU_TYPE = $(ASR_CPU_ALPHA)

else
ifeq ("$(ASR_HOST_CPU)","PPC")
ASR_HOST_CPU_TYPE = $(ASR_CPU_PPC)

else
ifeq ("$(ASR_HOST_CPU)","SPARC")
ASR_HOST_CPU_TYPE = $(ASR_CPU_SPARC)

else
ifeq ("$(ASR_HOST_CPU)","ARM")
ASR_HOST_CPU_TYPE = $(ASR_CPU_ARM)

else
ifeq ("$(ASR_HOST_CPU)","STRONGARM")
ASR_HOST_CPU_TYPE = $(ASR_CPU_STRONGARM)

else
ifeq ("$(ASR_HOST_CPU)","TMS320X")
ASR_HOST_CPU_TYPE = $(ASR_CPU_TMS320X)

ifndef CPU_FAMILY
ASR_CPU_FAMILY_TYPE = 0
MESSAGE += \
$(subst $(space),|,'$$(ASR_CPU_FAMILY_TYPE) defaulted to "$(ASR_CPU_FAMILY_TYPE)"')

else

ifeq ("$(ASR_CPU_FAMILY)","3")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C30)

else
ifeq ("$(ASR_CPU_FAMILY)","4")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C40)

else
ifeq ("$(ASR_CPU_FAMILY)","2")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C2XX)

else
ifeq ("$(ASR_CPU_FAMILY)","5")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C54X)

else
ERROR += \
$(subst $(space),|,\
'Failed to select CPU family with $$(ASR_CPU_FAMILY) == "$(ASR_CPU_FAMILY)"')
ASR_CPU_FAMILY_TYPE=ASR_BAD_CPU_FAMILY
endif
endif
endif
endif
endif

else
ifeq ("$(ASR_HOST_CPU)","SH3")
ASR_HOST_CPU_TYPE = $(ASR_CPU_SH3)

else
ifeq ("$(ASR_HOST_CPU)","SH4")
ASR_HOST_CPU_TYPE = $(ASR_CPU_SH4)


else
ERROR += \
$(subst $(space),|,\
'Failed to select CPU architecture with $$(ASR_HOST_CPU) == "$(ASR_HOST_CPU)"')
ASR_HOST_CPU_TYPE = ASR_BAD_CPU
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif

################################## TARGET_CPU #################################

ifeq ("$(ASR_TARGET_CPU)","I86")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_I86)

else
ifeq ("$(ASR_TARGET_CPU)","68K")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_68K)

else
ifeq ("$(ASR_TARGET_CPU)","MIPS")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_MIPS)

else
ifeq ("$(ASR_TARGET_CPU)","ALPHA")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_ALPHA)

else
ifeq ("$(ASR_TARGET_CPU)","PPC")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_PPC)

else
ifeq ("$(ASR_TARGET_CPU)","SPARC")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_SPARC)

else
ifeq ("$(ASR_TARGET_CPU)","ARM")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_ARM)

else
ifeq ("$(ASR_TARGET_CPU)","STRONGARM")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_STRONGARM)

else
ifeq ("$(ASR_TARGET_CPU)","TMS320X")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_TMS320X)

ifndef CPU_FAMILY
ASR_CPU_FAMILY_TYPE = 0
MESSAGE += \
$(subst $(space),|,'$$(ASR_CPU_FAMILY_TYPE) defaulted to "$(ASR_CPU_FAMILY_TYPE)"')

else

ifeq ("$(ASR_CPU_FAMILY)","3")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C30)

else
ifeq ("$(ASR_CPU_FAMILY)","4")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C40)

else
ifeq ("$(ASR_CPU_FAMILY)","2")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C2XX)

else
ifeq ("$(ASR_CPU_FAMILY)","5")
ASR_CPU_FAMILY_TYPE = $(ASR_CPU_FAMILY_TMS320C54X)

else
ERROR += \
$(subst $(space),|,\
'Failed to select CPU family with $$(ASR_CPU_FAMILY) == "$(ASR_CPU_FAMILY)"')
ASR_CPU_FAMILY_TYPE=ASR_BAD_CPU_FAMILY
endif
endif
endif
endif
endif

else
ifeq ("$(ASR_TARGET_CPU)","SH3")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_SH3)

else
ifeq ("$(ASR_TARGET_CPU)","SH4")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_SH4)

else

ERROR += \
$(subst $(space),|,\
'Failed to select CPU architecture with $$(ASR_TARGET_CPU) == "$(ASR_TARGET_CPU)"')
ASR_TARGET_CPU_TYPE = ASR_BAD_CPU
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif


############################### COMPILER ###############################
#
# $(ASR_COMPILER_CHAR) is also used to select which flags makefile to include.

ifeq ("$(ASR_COMPILER)","BORLAND")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_BORLAND)

else								# same as COMPILER = "M$$"
ifeq ("$(ASR_COMPILER)","MS")
ASR_COMPILER_TYPE = $(ASR_C_MICROSOFT)

else
ifeq ("$(ASR_COMPILER)","INTEL")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_INTEL)

else
ifeq ("$(ASR_COMPILER)","HIGH")			# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_HIGH)

else
ifeq ("$(ASR_COMPILER)","ZORTECH")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_ZORTECH)

else
ifeq ("$(ASR_COMPILER)","WATCOM")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_WATCOM)

else
ifeq ("$(ASR_COMPILER)","GNU")			# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_GNU)

else
ifeq ("$(ASR_COMPILER)","SUNPRO")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_SUNPRO)

else
ifeq ("$(ASR_COMPILER)","DECCXX")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_DECCXX)

else
ifeq ("$(ASR_COMPILER)","METROWERKS")	# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_METROWERKS)

else
ifeq ("$(ASR_COMPILER)","GHS")			# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_GHS)

else
ifeq ("$(ASR_COMPILER)","TICXC")		# !!! NOT SURE WHAT STRING TO USE !!!
ASR_COMPILER_TYPE = $(ASR_C_TICXC)

else
ifeq ("$(ASR_COMPILER)","ARM")			# !!! NOT ANY PARTICULAR COMPILER !!!
ASR_COMPILER_TYPE = $(ASR_C_ARM)

else
ifeq ("$(ASR_COMPILER)","DIABDATA")			# !!! NOT ANY PARTICULAR COMPILER !!!
ASR_COMPILER_TYPE = $(ASR_C_DIABDATA)

else
ERROR += \
$(subst $(space),|,\
'Failed to select compiler with $$(ASR_COMPILER) == "$(ASR_COMPILER)"')
ASR_COMPILER_TYPE = ASR_BAD_COMPILER
ASR_COMPILER_CHAR = ASR_BAD_COMPILER
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif

################################# BUILD ################################
#
# Define OPTIMIZE, PROFILE, and TRACE for use in $(ASR_COMPILER_CHAR)flags.mak.
# These values must be compatible with the corresponding ones in builddef.h.

ASR_OPTIMIZE = $(ASR_OFF)
ASR_PROFILE = $(ASR_OFF)
ASR_TRACE = $(ASR_OFF)

#									# BUILD  CHAR  OPTIMIZE  PROFILE  TRACE
#									  ----   ----  --------  -------  -----
ifeq ("$(ASR_BUILD)","SHIP")			# SHIP    `S'  OPTIMIZE
ASR_BUILD_TYPE = $(ASR_BUILD_SHIP)
ASR_BUILD_CHAR = s
ASR_OPTIMIZE = $(ASR_BUILD_TYPE)

else
ifeq ("$(ASR_BUILD)","NDEBUG")			# SHIP    `S'  OPTIMIZE
ASR_BUILD_TYPE = $(ASR_BUILD_SHIP)
ASR_BUILD_CHAR = s
ASR_OPTIMIZE = $(ASR_BUILD_TYPE)

else
ifeq ("$(ASR_BUILD)","INHOUSE")			# INHOUSE `I'  OPTIMIZE
ASR_BUILD_TYPE = $(ASR_BUILD_INHOUSE)
ASR_BUILD_CHAR = i
ASR_OPTIMIZE = $(ASR_BUILD_TYPE)

else
ifeq ("$(ASR_BUILD)","DEBUGO")			# DEBUG   `G'  OPTIMIZE
ASR_BUILD_TYPE = $(ASR_BUILD_DEBUGO)
ASR_BUILD_CHAR = g
ASR_OPTIMIZE = $(ASR_BUILD_TYPE)

else
ifeq ("$(ASR_BUILD)","DEBUG")			# DEBUG   `X'
ASR_BUILD_TYPE = $(ASR_BUILD_DEBUG)
ASR_BUILD_CHAR = x

else
ifeq ("$(ASR_BUILD)","PROFILE")			# INHOUSE `P'  OPTIMIZE  PROFILE
ASR_BUILD_TYPE = $(ASR_BUILD_PROFILE)
ASR_BUILD_CHAR = p
ASR_OPTIMIZE = $(ASR_BUILD_TYPE)
ASR_PROFILE = $(ASR_BUILD_TYPE)

else
ifeq ("$(ASR_BUILD)","TRACE")			# INHOUSE `L'  OPTIMIZE           TRACE
ASR_BUILD_TYPE = $(ASR_BUILD_TRACE)
ASR_BUILD_CHAR = l
ASR_OPTIMIZE = $(ASR_BUILD_TYPE)
ASR_TRACE = $(ASR_BUILD_TYPE)

else
ERROR += \
$(subst $(space),|,'Failed to select build type with $$(ASR_BUILD) == "$(ASR_BUILD)"')
ASR_BUILD_TYPE = ASR_BAD_BUILD
ASR_BUILD_CHAR = ASR_BAD_BUILD
endif
endif
endif
endif
endif
endif
endif

################################# UI #################################
#
# !!! NOT USED !!!

######################################################################
#
# Finally define the macros of interest.

ASR_GLOBAL_DEFINES = \
	-DOS_UNIX=$(ASR_OS_UNIX) \
	-DOS_EMBEDDED=$(ASR_OS_EMBEDDED) \
	-DOS_VXWORKS=$(ASR_OS_VXWORKS) \
	-DOS_PSOS=$(ASR_OS_PSOS) \
	-DOS_QNX=$(ASR_OS_QNX) \
	-DOS=$(ASR_OS_TYPE) \
	-DHOST_OS=$(ASR_HOST_OS_TYPE) \
	-DTARGET_OS=$(ASR_TARGET_OS_TYPE) \
	-DCPU_PPC=$(ASR_CPU_PPC) \
	-DCPU_SPARC=$(ASR_CPU_SPARC) \
	-DCPU_ARM=$(ASR_CPU_ARM) \
	-DCPU_STRONGARM=$(ASR_CPU_STRONGARM) \
	-DCPU_TMS320X=$(ASR_CPU_TMS320X) \
	-DCPU_SH3=$(ASR_CPU_SH3) \
	-DCPU_SH4=$(ASR_CPU_SH4) \
	-DCPU=$(ASR_CPU_TYPE) \
	-DHOST_CPU=$(ASR_HOST_CPU_TYPE) \
	-DTARGET_CPU=$(ASR_TARGET_CPU_TYPE) \
	-DC_GNU=$(ASR_C_GNU) \
	-DC_SUNPRO=$(ASR_C_SUNPRO) \
	-DC_METROWERKS=$(ASR_C_METROWERKS) \
	-DC_TICXC=$(ASR_C_TICXC) \
	-DC_ARM=$(ASR_C_ARM) \
	-DCOMPILER=$(ASR_COMPILER_TYPE) \
	-DBUILD_SHIP=$(ASR_BUILD_SHIP) \
	-DBUILD_DEBUG=$(ASR_BUILD_DEBUG) \
	-DBUILD=$(ASR_BUILD_TYPE) \

# Include these from Makefile.common
ASR_GLOBAL_DEFINES += $(ASR_COMMON_DEFINES) $(ASR_WORKAROUND_DEFINES)

# OS specific defines
ifeq ($(ASR_TARGET_OS),UNIX)
ASR_GLOBAL_DEFINES += -DPOSIX -D__linux
endif


# BUILD specific defines and flags
ASR_GLOBAL_CPPFLAGS =

ifeq ($(ASR_BUILD),SHIP)
ASR_GLOBAL_DEFINES += -DNDEBUG -D_SHIP -DFINAL_RELEASE
#ASR_GLOBAL_CPPFLAGS += -O3 -fno-strict-aliasing
endif

ifeq ($(ASR_BUILD),NDEBUG)
ASR_GLOBAL_DEFINES += -DNDEBUG
#ASR_GLOBAL_CPPFLAGS +=
endif

ifeq ($(ASR_BUILD),INHOUSE)
ASR_GLOBAL_DEFINES += -D_INHOUSE
#ASR_GLOBAL_CPPFLAGS += -g3
endif

ifeq ($(ASR_BUILD),DEBUGO)
ASR_GLOBAL_DEFINES += -D_DEBUG
#ASR_GLOBAL_CPPFLAGS += -g
endif

ifeq ($(ASR_BUILD),DEBUG)
ASR_GLOBAL_DEFINES += -D_DEBUG
#ASR_GLOBAL_CPPFLAGS += -g
endif

ifneq ($(ASR_OPTIMIZE),$(ASR_OFF))
ASR_GLOBAL_DEFINES += -D_OPTIMIZE
#ASR_GLOBAL_CPPFLAGS += -O3
endif

ifneq ($(ASR_PROFILE),$(ASR_OFF))
ASR_GLOBAL_DEFINES += -D_PROFILE
#ASR_GLOBAL_CPPFLAGS += -g3
endif

ifneq ($(ASR_TRACE),$(ASR_OFF))
ASR_GLOBAL_DEFINES += -D_TRACE
#ASR_GLOBAL_CPPFLAGS +=
endif
