NT_UP=0
!include $(PROJECT_ROOT)\ntdll\ntdll.inc
MAJORCOMP=ntos
MINORCOMP=dll_

BUILD_CONSUMES=ntosrtluser NtosWmiNtdllDaytona

ALT_PROJECT=daytona
ALT_PROJECT_TARGET=.

TARGETNAME=ntdll
TARGETPATH=obj
TARGETTYPE=DYNLINK
DLLDEF=$(O)\$(TARGETNAME).def
LINKLIBS= \
    $(PROJECT_ROOT)\ntos\rtl\user\$(O)\rtl.lib \
    $(SDK_LIB_PATH)\libcntpr.lib \
    $(SDK_LIB_PATH)\uuid.lib \
    $(PROJECT_ROOT)\wmi\ntdll\$(ALT_PROJECT)\$(O)\etwclnt.lib \
    $(DS_LIB_PATH)\rsa32.lib

INCLUDES=..;\
         $(PROJECT_ROOT)\ntos\inc;\
         $(PROJECT_ROOT)\win32\inc;\
         $(PROJECT_ROOT)\published\$(O);\
         ..\i386;\
         $(SDKTOOLS_INC_PATH);\
         $(WINDOWS_INC_PATH);\
         $(COM_INC_PATH);\
         $(DS_INC_PATH)\crypto

WIMPMASM=1

C_DEFINES=$(C_DEFINES) -D_NTSYSTEM_ -D_NTDLLBUILD_ -DLITTLEENDIAN=1

MSC_WARNING_LEVEL=/W3 /WX
DLLORDER=..\ntdll.prf

SOURCES=\
    ..\buffer.c    \
    ..\cookie.c    \
    ..\curdir.c    \
    ..\csrinit.c   \
    ..\csrtask.c   \
    ..\csrutil.c   \
    ..\dllssstb.c  \
    ..\dlluistb.c  \
    ..\error.c     \
    ..\frame.c     \
    ..\hotpatch.c  \
    ..\ldrapi.c    \
    ..\ldrinit.c   \
    ..\ldrsnap.c   \
    ..\ldrutil.c   \
    ..\memstm.c    \
    ..\ntdll.rc    \
    ..\ntdll_data.c \
    ..\resource.c  \
    ..\seurtl.c    \
    ..\uilist.c    \
    ..\propfwd.cxx \
    ..\query.c     \
    ..\heaptag.c   \
    ..\ldrwx86.c   \
    ..\vectxcpt.c  \
    ..\verifier.c  \
    ..\wow64apc.c  \
    ..\sxsisol.cpp \
    ..\sxsactctxcpp.cpp \
    ..\sxsctxactcpp.cpp \
    ..\sxsctxsrchcpp.cpp \
    ..\sxsquerycpp.cpp \
    ..\sxsstoragecpp.cpp \
    ..\sxsstoragemapcpp.cpp \
    ..\importtablehash.c \
    ..\rtlgetactivationcontextdata.c \
    ..\rtltheemptyactivationcontextdata.c \
    ..\w64misc.c \

PRECOMPILED_INCLUDE=..\pch.cxx

NTTARGETFILE0=$(DLLDEF)

#
# To test RTL stuff on your development machine:
#
#  Allowing for new exports to have been added, so you need a new .lib.
#  Besides, you can't call the .dll ntdll.
#  Build and nmake don't agree on stuff, like if TARGETNAME=ntdll2 from the command line
#  is overridable (build thinks it is, nmake does not), so you must build the regular ntdll.dll
#  first, then the alternately named one, so like
#   cd daytona
#   build -cZ
#   build -Z -nmake UMTEST=tpath -nmake TARGETNAME=ntdll2
#  if you don't, build/nmake complain "don't know how to make $(O)\ntdll.def" even though
#  it isn't supposed to try for the second case.
#
# Either make sure the syscall tables are compatible, or don't call them.
# Be sure to link to kernel32 somehow (like via msvcrt for printf).
#
# You can futz with syscalls, but I don't presently need to.
#
#!if 0
!if 1
UMTYPE=console
UMTEST=tpath
C_DEFINES=$(C_DEFINES) -D_CRTIMP=
#UMLIBS=$(O)\$(TARGETNAME).lib $(SDK_LIB_PATH)\msvcrt.lib $(PROJECT_ROOT)\ntos\rtl\user\$(O)\rtl.lib
UMLIBS=$(OBJECTS) $(PROJECT_ROOT)\ntos\rtl\user\$(O)\rtl.lib
USE_MSVCRT=1
!endif

PASS0_PUBLISH=\
    {..\wow6432\ntwow64.h=$(PROJECT_INC_PATH)\ntwow64.h}

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