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}