###############################################################################
# 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_AARCH64)  Value associated with $(ASR_CPU_CHARS) = AA.
#	$(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
ASR_CPU_AARCH64 = 2048

# 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)","AARCH64")
ASR_CPU_TYPE = $(ASR_CPU_AARCH64)
ASR_CPU_CHARS = aa

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
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)","AARCH64")
ASR_HOST_CPU_TYPE = $(ASR_CPU_AARCH64)

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
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)","AARCH64")
ASR_TARGET_CPU_TYPE = $(ASR_CPU_AARCH64)

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
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_AARCH64=$(ASR_CPU_AARCH64) \
	-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
