TARGETNAME=advapi32
TARGETPATH=obj
TARGETTYPE=DYNLINK

DLLENTRY=DllInitialize
DLLDEF=$(O)\advapi32.def

LINKLIBS=  \
    $(ADMIN_LIB_PATH)\idletskc.lib \
    $(DS_LIB_PATH)\sys003.lib \
    $(DS_LIB_PATH)\randlibn.lib \
    $(DS_LIB_PATH)\lsaudll.lib \
    $(DS_LIB_PATH)\appmgmt.lib \
    $(DS_LIB_PATH)\winsafer.lib \
    $(DS_LIB_PATH)\accsrc.lib \
    $(BASE_LIB_PATH)\wmiclnt.lib \
    $(BASE_LIB_PATH)\winreg.lib \
    $(BASE_LIB_PATH)\svcctrl.lib \
    $(SDK_LIB_PATH)\wintrust.lib \
    $(BASE_LIB_PATH)\wow64reg.lib \
    $(DS_LIB_PATH)\rsa32.lib \
    $(SDK_LIB_PATH)\elfapi.lib

TARGETLIBS= \
    $(DS_LIB_PATH)\lsacomm.lib \
    $(DS_LIB_PATH)\seclogon_c.lib \
    $(BASE_LIB_PATH)\sclib.lib \
    $(BASE_LIB_PATH)\localreg.lib \
    $(BASE_LIB_PATH)\perflib.lib \
    $(BASE_LIB_PATH)\regconn.lib \
    $(BASE_LIB_PATH)\wrlib.lib \
    $(SDK_LIB_PATH)\kernl32p.lib \
    $(SDK_LIB_PATH)\rpcrt4.lib   \
    $(SDK_LIB_PATH)\rpcndr.lib   \
    $(SDK_LIB_PATH)\rpcutil.lib  \
    $(SDK_LIB_PATH)\secur32.lib \
    $(SDK_LIB_PATH)\winspool.lib

INCLUDES=\
    $(DS_INC_PATH); \
    $(WINDOWS_INC_PATH);\
    $(BASE_INC_PATH);\
    $(NET_INC_PATH);\
    $(TERMSRV_INC_PATH); \
    $(DS_INC_PATH)\crypto;

!ifdef TEST_BUILD_EXPONENT
! if "$(TEST_BUILD_EXPONENT)" == "$(TEST_BUILD_EXPONENT:0x=)"
!  error TEST_BUILD_EXPONENT value must start with 0x
! endif
C_DEFINES=$(C_DEFINES) -DTEST_BUILD_EXPONENT=$(TEST_BUILD_EXPONENT)
!endif

# Turn this on before shipping.
# !if "" == "$(OFFICIAL_BUILD_MACHINE)"
# If this isn't an official build lab, allow unsigned CSPs.
# C_DEFINES=$(C_DEFINES) -DPROMISCUOUS_ADVAPI
# !endif

# Don't allow both Enigma and Vaultsign to be enabled
!if "1" == "$(ENIGMA)"
! if "1" == "$(VAULTSIGN)"
!  error Both Enigma and VaultSign are defined in the build environment
! endif
!endif

!if "1" != "$(ENIGMA)" 

! if "1" != "$(VAULTSIGN)"
# No signing flag is set, so allows unsigned CSP's
C_DEFINES=$(C_DEFINES) -DPROMISCUOUS_ADVAPI

! else
# VAULTSIGN is set so binplace a marker to flag this case
MISCFILES=advapi_vaultsign.txt
! endif

!else
# ENIGMA is set so binplace a marker to flag this case
MISCFILES=advapi_enigma.txt
!endif

C_DEFINES=$(C_DEFINES) -D_ADVAPI32_ -DNTCRYPTO

# Be sure to build with VaultSign for shipping binaries!
!if "1" != "$(VAULTSIGN)"
C_DEFINES=$(C_DEFINES) -DMS_INTERNAL_KEY
!endif

USE_NTDLL=1

PASS0_SOURCEDIR=$(O)
PASS0_HEADERDIR=$(O)

SOURCES= \
    advapi32.rc \
    win31evt.mc \
    init.c \
    eventapi.c \
    pnpapi.c \
    security.c \
    username.c \
    win31io.c \
    group32.c \
    group16.c \
    isuni.c \
    logon32.c \
    cryptapi.c \
    regdat16.c \
    cseclogn.cxx \
    efs.c \
    sddl.c \
    termutil.c \
    mschapp.c

UMTYPE=console
OPTIONAL_UMTEST=tuser

#
# We need to build a private advapi32 library
NTTARGETFILES=$(O)\advapip.lib

PASS1_PUBLISH=\
    {$(O)\advapi32.lib=$(SDK_LIB_PATH)\advapi32.lib} \
    {$(O)\advapip.lib=$(SDK_LIB_PATH)\advapip.lib}

DELAYLOAD=secur32.dll;wintrust.dll
DLOAD_ERROR_HANDLER=kernel32