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

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\$(O)\etwclnt.lib \
    $(DS_LIB_PATH)\rsa32.lib

!if $(386)
DLLLIBOBJECTS= \
    $(PROJECT_LIB_PATH)\sehprolg.obj 
!endif    

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

WIMPMASM=1

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

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

SOURCES=\
    ..\buffer.c    \
    ..\curdir.c    \
    ..\csrinit.c   \
    ..\csrtask.c   \
    ..\csrutil.c   \
    ..\dllssstb.c  \
    ..\dlluistb.c  \
    ..\filestm.c   \
    ..\frame.c     \
    ..\ldrapi.c    \
    ..\ldrinit.c   \
    ..\ldrsnap.c   \
    ..\ldrutil.c   \
    ..\memstm.c    \
    ..\ntdll.rc    \
    ..\resource.c  \
    ..\seurtl.c    \
    ..\uilist.c    \
    ..\propfwd.cxx \
    ..\query.c     \
    ..\heaptag.c   \
    ..\ldrwx86.c   \
    ..\vectxcpt.c  \
    ..\verifier.c  \
    ..\wow64apc.c  \
    ..\sxsactctx.c \
    ..\sxsctxact.c \
    ..\sxsctxsrch.c \
    ..\sxsquery.c \
    ..\sxsstorage.c \
    ..\sxsstoragemap.c \
    ..\ImportTableHash.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

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