!IF 0

Copyright (c) 1997  Microsoft Corporation

Module Name:

    axp64mk.inc

Abstract:

        This module contains the AXP64 specific build controls.  It is included
        by makefile.def.

Revision History:

!ENDIF

DELAYLOAD_SUPPORTED=1
!ifndef DELAYLOAD_VERSION
DELAYLOAD_VERSION=0x0200
!endif
!ifndef DELAYLOAD_VERSION
DELAYLOAD_VERSION=0x0200
!endif

#
# axp64 option control
#

!undef USE_MAPSYM
!undef USE_CV
USE_PDB=1

UMBASE=$(UMBASE:*=axp64)
UMLIBS=$(UMLIBS:*=axp64)
NTRES=$(NTRES:*=axp64)
UMRES=$(UMRES:*=axp64)
UMOBJS=$(UMOBJS:*=axp64)
LINKLIBS=$(LINKLIBS:*=axp64)
GDI_DRIVER_LIBS=$(GDI_DRIVER_LIBS:*=axp64)
DLLBASE=$(DLLBASE:*=axp64)
DLLDEF=$(DLLDEF:*=axp64)
MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS:*=axp64)
TARGET=$(TARGET:*=axp64)
DYNLINK_LIB=$(DYNLINK_LIB:*=axp64)
TARGETEXEFILES=$(TARGETEXEFILES:*=axp64)
TARGETLIBFILES=$(TARGETLIBFILES:*=axp64)
TARGETOBJFILES=$(TARGETOBJFILES:*=axp64)
UMOBJFILES=$(UMOBJFILES:*=axp64)
UMEXEFILES=$(UMEXEFILES:*=axp64)
HEADERFILE=$(HEADERFILE:*=axp64)
HEADEROBJNAME=$(HEADEROBJNAME:*=axp64)
HEADEROBJ=$(HEADEROBJ:*=axp64)
PRECOMPILED=$(PRECOMPILED:*=axp64)
PRECOMPILED_CXX=$(PRECOMPILED_CXX:*=axp64)
PRECOMPILED_TARGET=$(PRECOMPILED_TARGET:*=axp64)
MFC_STATIC_LIB=$(MFC_STATIC_LIB:*=axp64)
CRT_LIB_PATH=$(CRT_LIB_PATH:*=axp64)
SDK_LIB_PATH=$(SDK_LIB_PATH:*=axp64)
ORDER=$(ORDER:*=axp64)
OBJLIBFILES=$(OBJLIBFILES:*=axp64)
MISCFILES=$(MISCFILES) $(AXP64_MISCFILES)

!ifdef NTTARGETFILES
NTTARGETFILES=$(NTTARGETFILES:*=axp64)
!endif
!ifdef NTTARGETFILE0
NTTARGETFILE0=$(NTTARGETFILE0:*=axp64)
!endif
!ifdef NTTARGETFILE1
NTTARGETFILE1=$(NTTARGETFILE1:*=axp64)
!endif

!IF "$(GPSIZE)" != "0"

!ifdef DEBUG_CRTS
LIBC_LIB=$(SDK_LIB_PATH)\smalld.lib $(LIBC_LIB)
!else
LIBC_LIB=$(SDK_LIB_PATH)\small.lib $(LIBC_LIB)
!endif
LINKGPSIZE=-gpsize:$(GPSIZE)

!ENDIF

ENTRY_SUFFIX=
GDI_ENTRY_SUFFIX=

ADDITIONAL_ATL_LIBS = $(ADDITIONAL_ATL_LIBS)

!IFDEF AXP64_WARNING_LEVEL
MSC_WARNING_LEVEL=$(AXP64_WARNING_LEVEL)
!ENDIF

!ifdef AXP64_PERFFLAGS
PERFFLAGS = $(AXP64_PERFFLAGS)
!endif

# Set MSC_OPTIMIZATION.
# Order of precedence:
#   Platform specific override
#   Environment variable
#   System Default

!if defined(AXP64_OPTIMIZATION)
MSC_OPTIMIZATION=$(AXP64_OPTIMIZATION)
!elseif !defined(MSC_OPTIMIZATION)
MSC_OPTIMIZATION=$(DEFAULT_MSC_OPT)
!endif

DBGFLAGS=$(DBGFLAGS) $(MSC_OPTIMIZATION)

!IFDEF AXP64_CPPFLAGS
MSC_CPPFLAGS=$(AXP64_CPPFLAGS)
!ENDIF

AXP64_AS=asaxp -nologo -Ap64

AXP64_START_FILE=start.obj

!ifndef USE_PDB_TO_COMPILE
DBGFLAGS=$(DBGFLAGS:/Zi=-Z7)
DBGFLAGS=$(DBGFLAGS:-Zi=-Z7)
!else
! if "$(TARGETTYPE)" == "LIBRARY"
DBGFLAGS=$(DBGFLAGS) /Fd$(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).pdb
! else
DBGFLAGS=$(DBGFLAGS) /Fd$(MAKEDIR)\$(_OBJ_DIR)\axp64^\
! endif
!endif

!ifndef NO_BROWSER_INFO
! ifdef BROWSER_INFO
DBGFLAGS=$(DBGFLAGS) /FR$(MAKEDIR)\$(_OBJ_DIR)\axp64^\
! endif
!endif

!IFDEF NTBBT
DBGFLAGS=$(DBGFLAGS) /Z7 /QAl
ADBGFLAGS=-Zi
LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup
!ENDIF

ENV_DEFINES=$(LIBC_DEFINES) $(C_DEFINES) $(NET_C_DEFINES) $(MSC_CPPFLAGS) $(NTCPPFLAGS)
STD_DEFINES=-D_WIN64=1 -D_AXP64_=1 -D_M_AXP64 -DALPHA=1 -D_ALPHA_=1 -DNO_EXT_KEYS -DCONDITION_HANDLING=1 $(STD_DEFINES)

!ifdef NO_READONLY_STRINGS
STRING_POOLING = /Gf
!else
STRING_POOLING = /GF
!endif

!ifdef USE_NATIVE_EH
EH_FLAGS=/GX
!else
EH_FLAGS=/GX-
!endif

! ifdef USE_RTTI
RTTI_FLAGS=/GR
! else
RTTI_FLAGS=/GR-
! endif

!ifndef AXP64_FLAGS
AXP64_FLAGS=/QA21164A
!endif

AXP64ILPMODEL = /Ap64
STDFLAGS= $(AXP64ILPMODEL) /D_M_ALPHA64 /Wp64 /c /Zel /Zp8 /Gy $(EH_FLAGS) $(RTTI_FLAGS) $(STRING_POOLING) $(MSC_WARNING_LEVEL)
CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES) $(MFC_DEFINES)
CFLAGS=$(AXP64_FLAGS) $(NTAXP64FLAGS) $(STDFLAGS) $(DBGFLAGS) $(PERFFLAGS)

AXP64_CDEFINES=$(CDEFINES)
AXP64_CFLAGS=$(CFLAGS)

!IFNDEF _AXPACC_
_AXPACC_=0
!ENDIF

AXP64_CC = cl -nologo $(USER_C_FLAGS)

C_COMPILER_NAME = $(AXP64_CC)
CXX_COMPILER_NAME = $(AXP64_CC)
C_PREPROCESSOR_NAME = $(AXP64_CC)

GLOBAL_C_FLAGS = $(CBSTRING) -Ialpha\ -I. \
                 $(INCPATH0) $(CDEFINES) \
                $(AXP64_OPTIONS) $(CFLAGS) \
                /Gt$(GPSIZE) -DFPO=1

NP_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(COMPILER_WARNINGS)

C_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED)
CXX_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED_CXX)
C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) -EP -Tc

C_PREPROCESSOR = $(C_PREPROCESSOR_NAME) $(C_PREPROCESSOR_FLAGS)
C_COMPILER= $(C_COMPILER_NAME) $(C_COMPILER_FLAGS)
NP_C_COMPILER  = $(C_COMPILER_NAME) $(NP_COMPILER_FLAGS)
CXX_COMPILER=$(CXX_COMPILER_NAME) $(CXX_COMPILER_FLAGS)

AXP64_ASSEMBLER=$(AXP64_AS) -O1 -Ialpha\ -I. $(INCPATH0) $(CDEFINES) \
                    $(AXP64_FLAGS) $(NTAXP64FLAGS) $(ADBGFLAGS) \
                    -D_LANGUAGE_ASSEMBLY $(ASM_DEFINES)

ECHO_MSG=ClAxp64 $< " $(C_COMPILER) "
ECHO_MSG_P=ClAxp64 $** " $(NP_C_COMPILER) "
ECHO_CXX_MSG=ClAxp64 $< " $(CXX_COMPILER) "

ECHO_PRECOMPILED_MSG1=CpAxp64 $(PRECOMPILED_INCLUDE) \
                     "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE) \
                      $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"

ECHO_PRECOMPILED_MSG2=CpAxp64 $(PRECOMPILED_INCLUDE) \
                     "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) \
                      $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"

{..\alpha\}.s{$(_OBJ_DIR)\axp64\}.obj:
    @-erase $@ >nul 2>&1
    @echo AsAxp64 $<            " $(AXP64_ASSEMBLER) "
    @$(AXP64_ASSEMBLER) -o $@ $(MAKEDIR)\..\alpha\$(<F)

{alpha\}.s{$(_OBJ_DIR)\axp64\}.obj:
    @-erase $@ >nul 2>&1
    @echo AsAxp64 $<            " $(AXP64_ASSEMBLER) "
    @$(AXP64_ASSEMBLER) -o $@ $(MAKEDIR)\alpha\$(<F)

{..\axp64\}.s{$(_OBJ_DIR)\axp64\}.obj:
    @-erase $@ >nul 2>&1
    @echo AsAxp64 $<            " $(AXP64_ASSEMBLER) "
    @$(AXP64_ASSEMBLER) -o $@ $(MAKEDIR)\..\axp64\$(<F)

{axp64\}.s{$(_OBJ_DIR)\axp64\}.obj:
    @-erase $@ >nul 2>&1
    @echo AsAxp64 $<            " $(AXP64_ASSEMBLER) "
    @$(AXP64_ASSEMBLER) -o $@ $(MAKEDIR)\axp64\$(<F)

{..\alpha\}.s{}.pp:
    $(C_COMPILER_NAME) @<<$(CL_RSP) /E /FC $(USECXX_FLAG) $< > $@
$(C_COMPILER_FLAGS: =
)
$(C_COMPILER_FLAGS:##= )
<<NOKEEP

{alpha\}.s{}.pp:
    $(C_COMPILER_NAME) @<<$(CL_RSP) /E /FC $(USECXX_FLAG) $< > $@
$(C_COMPILER_FLAGS: =
)
$(C_COMPILER_FLAGS:##= )
<<NOKEEP

{..\axp64\}.s{}.pp:
    $(C_COMPILER_NAME) @<<$(CL_RSP) /E /FC $(USECXX_FLAG) $< > $@
$(C_COMPILER_FLAGS: =
)
$(C_COMPILER_FLAGS:##= )
<<NOKEEP

{axp64\}.s{}.pp:
    $(C_COMPILER_NAME) @<<$(CL_RSP) /E /FC $(USECXX_FLAG) $< > $@
$(C_COMPILER_FLAGS: =
)
$(C_COMPILER_FLAGS:##= )
<<NOKEEP

.SUFFIXES: .il

{}.il{}.cod:
    @-erase $@ >nul 2>&1
    @type <<
$(ECHO_MSG)
<<NOKEEP
    @$(C_COMPILER_NAME) @<< -FAac -Fa$(<B).cod -B1..\bootbin\null.exe -Bk$(<B). -Fo$(MAKEDIR)\$(_OBJ_DIR)\axp64\$(<B).o $(MAKEDIR)\$(<B).c
$(C_COMPILER_FLAGS: =
)
$(C_COMPILER_FLAGS:##= )
<<NOKEEP
    @del $(_OBJ_DIR)\axp64\$(<B).o

{}.il{$(_OBJ_DIR)\axp64\}.obj:
    @-erase $@ >nul 2>&1
    @type <<
$(ECHO_MSG)
<<NOKEEP
    @$(C_COMPILER_NAME) @<< -B1..\bootbin\null.exe -Bk$(<B). -Fo$(MAKEDIR)\$@  $(MAKEDIR)\$(<B).c
$(C_COMPILER_FLAGS: =
)
$(C_COMPILER_FLAGS:##= )
<<NOKEEP

!IFDEF _NTAXP64LIBS
_NTLIBS=$(_NTAXP64LIBS)
!ENDIF

COPYDST=$(AXP64COPYDST)

LIB_COPY=ntalphacp.cmd

NTTEST_LINK_OPTIONS= -base:0xffffffff80080000 -fixed -entry:KiSystemStartup

