# $Id: win32k.mak,v 1.13 2001-07-31 21:34:08 bird Exp $ # # Win32k.sys makefile. # # Copyright 1998-2001 knut st. osmundsen (knut.stange.osmundsen@mynd.no) # # Project Odin Software License can be found in LICENSE.TXT # # # Include path definitions, common stuff and our own tools. # !include makefile.inc !include ../../makefile.inc !include win32k.tools.mk # # Main targetname # NAME = Win32k # # Main rules. # !if "$(DDKPATH)" == "" || "$(MSCPATH)" == "" || "$(TOOLKIT)" == "" || "$(VACPATH)" == "" all: $(WIN32KBIN)\$(NAME).sys !endif # # Win32k.sys objects and libraries - Don't mess with the order or objects and libraries! # OBJS =\ $(WIN32KOBJ)\devfirst.obj \ $(WIN32KOBJ)\d16strat.obj \ $(WIN32KOBJ)\d32CallGate.obj \ $(WIN32KOBJ)\d32hlp.obj \ $(WIN32KOBJ)\d32globals.obj \ $(WIN32KOBJ)\d16globl.obj \ $(WIN32KOBJ)\abort.obj \ $(WIN32KOBJ)\asmutils.obj \ $(WIN32KOBJ)\calltaba.obj \ $(WIN32KOBJ)\locks.obj \ $(WIN32KOBJ)\malloc.obj \ $(WIN32KOBJ)\smalloc_avl.obj \ $(WIN32KOBJ)\avl.obj \ $(WIN32KOBJ)\rmalloc_avl.obj \ $(WIN32KOBJ)\new.obj \ $(WIN32KOBJ)\env.obj \ $(WIN32KOBJ)\PerTaskW32kData.obj \ $(WIN32KOBJ)\stricmp.obj \ $(WIN32KOBJ)\yield.obj \ $(WIN32KOBJ)\vsprintf.obj \ $(WIN32KOBJ)\vprintf.obj \ $(WIN32KOBJ)\ldr.obj \ $(WIN32KOBJ)\myldrClose.obj \ $(WIN32KOBJ)\myldrOpen.obj \ $(WIN32KOBJ)\myldrRead.obj \ $(WIN32KOBJ)\myLDRQAppType.obj \ $(WIN32KOBJ)\myldrEnum32bitRelRecs.obj \ $(WIN32KOBJ)\myldrOpenPath.obj \ $(WIN32KOBJ)\myldrOpenPatha.obj \ $(WIN32KOBJ)\myldrFindModule.obj \ $(WIN32KOBJ)\myldrCheckInternalName.obj \ $(WIN32KOBJ)\myldrGetFileName.obj \ $(WIN32KOBJ)\d32Events.obj \ $(WIN32KOBJ)\OS2KTCB.obj \ $(WIN32KOBJ)\OS2KPTDA.obj \ $(WIN32KOBJ)\pe2lx.obj \ $(WIN32KOBJ)\ModuleBase.obj \ $(WIN32KOBJ)\d32ElfIOCtl.obj \ $(WIN32KOBJ)\d32Win32kIOCtl.obj \ $(WIN32KOBJ)\d32Win32kOpenClose.obj \ $(WIN32KOBJ)\k32AllocMemEx.obj \ $(WIN32KOBJ)\k32KillProcessEx.obj \ $(WIN32KOBJ)\k32HandleSystemEvent.obj \ $(WIN32KOBJ)\k32ProcessReadWrite.obj \ $(WIN32KOBJ)\k32QueryCallGate.obj \ $(WIN32KOBJ)\k32QueryOTEs.obj \ $(WIN32KOBJ)\k32QueryOptionsStatus.obj \ $(WIN32KOBJ)\k32QuerySystemMemInfo.obj \ $(WIN32KOBJ)\k32SetEnvironment.obj \ $(WIN32KOBJ)\k32SetOptions.obj \ $(WIN32KOBJ)\mytkExecPgm.obj \ $(WIN32KOBJ)\mytkStartProcess.obj \ $(WIN32KOBJ)\vprntf16.obj \ $(WIN32KOBJ)\d32init.obj \ $(WIN32KOBJ)\d16init.obj_init \ $(WIN32KOBJ)\ProbKrnl.obj_init \ $(WIN32KOBJ)\SymDB.obj LASTOBJ =\ $(WIN32KOBJ)\devlast.obj LIBS =\ $(VACPATH)\lib\$(RTLLIB_NRE) \ $(DDKPATH)\lib\os2386.lib \ $(WIN32KOBJ)\devhelp.lib \ $(WIN32KOBJ)\clib.lib # # Win32k.sys rule. (Don't mess with the order or objects and libraries!) # $(NAME).sys: $(WIN32KBIN)\$(NAME).sys $(WIN32KBIN)\$(NAME).sys: clfix.exe \ $(WIN32KINCLUDE)\options.inc \ $(WIN32KINCLUDE)\api.inc \ $(WIN32KINCLUDE)\win32k.inc \ $(OBJS) \ $(LIBS) \ $(WIN32KOBJ)\$(NAME)bldlevel.def \ $(LASTOBJ) \ $(LIBSINIT) \ $(WIN32KOBJ)\$(@B).lnk \ win32k.mak makefile.inc ..\..\makefile.inc -@$(ECHO) recompiling d16globl to get correct build time and date: $(CC16) -c $(CFLAGS16) $(CDEFINES16) $(CINCLUDES16) -Fo$(WIN32KOBJ)\d16globl.obj \ -Fa$(WIN32KLIST)\d16globl.s dev16\d16globl.c -@$(ECHO) linking: $@ !ifdef GREP -4 $(LD) $(LFLAGS) @$(WIN32KOBJ)\$(@B).lnk | $(GREP) -v LNK4001 | $(GREP) -v LNK4031 !else -4 $(LD) $(LFLAGS) @$(WIN32KOBJ)\$(@B).lnk !endif cd $(WIN32KBIN) @mapsym $(*B).map > nul cd $(WIN32KBASE) if not exist $(ODIN32_BIN) $(CREATEPATH) $(ODIN32_BIN) $(CP) $@ $(ODIN32_BIN) $(CP) $*.sym $(ODIN32_BIN) $(CP) $(WIN32KBASE)\$(*B).ddp $(ODIN32_BIN) # Linker file. $(WIN32KOBJ)\$(NAME).lnk: win32k.mak makefile.inc ..\..\makefile.inc echo Creating linkerfile: @<<$(WIN32KOBJ)\$(NAME).lnk /OUT:$(WIN32KBIN)\$(NAME).sys /MAP:$(WIN32KBIN)\$(NAME).map $(OBJS: =^ ) /IG $(LIBS: =^ ) $(LASTOBJ) $(WIN32KOBJ)\$(NAME)bldlevel.def < nul # Extract required object files from the converted crt library. $(CLIBOBJS:+=): $(WIN32KOBJ)\clib_.lib @cd $(WIN32KOBJ) $(ILIB) $** *$@; @cd $(MAKEDIR) # # Make last library. # $(WIN32KOBJ)\last.lib: $(WIN32KOBJ)\devlast.obj -@$(RM) $@ > nul 2> nul $(ILIB) $@ $**; # # # S o u r c e # # # # Generate calltaba.asm # ldr\calltaba.asm \ $(WIN32KBASE)\ldr\calltaba.asm : dev16\probkrnl.c $(WIN32KBIN)\mkcalltab.exe $(WIN32KBIN)\mkcalltab.exe calltab > $@ # # Generate TstFakers.c # test\TstFakers.c \ $(WIN32KBASE)\test\TstFakers.c: dev16\probkrnl.c include\probkrnl.h $(WIN32KBIN)\mkcalltab.exe $(WIN32KBIN)\mkcalltab.exe tstfakers > $@ # # Make assembly version of options.h; options.inc # $(WIN32KINCLUDE)\options.inc: $(WIN32KINCLUDE)\options.h @$(ECHO) H2Inc: $** $(H2INC) $** > $@ # # Make assembly version of api.h; api.inc # $(WIN32KINCLUDE)\api.inc: $(WIN32KINCLUDE)\api.h @$(ECHO) H2Inc: $** $(H2INC) $** > $@ # # Make assembly version of win32k.h; win32k.inc # $(WIN32KINCLUDE)\win32k.inc: $(ODIN32_INCLUDE)\win32k.h @$(ECHO) H2Inc: $** $(H2INC) $** > $@ # # # T o o l s # # # # Make the convert tool. # $(WIN32KBIN)\libconv.exe: libconv.c icc -Q+ -Ti+ -Fe$@ -Fo$(WIN32KOBJ)\$(*B).obj libconv.c # # Make the MkCallTab.exe utillity. # # MkCallTab objects. MKCALLTABOBJS = \ $(WIN32KOBJ)\mkcalltab.obj_c \ $(WIN32KOBJ)\probkrnl.obj_c \ $(WIN32KOBJ)\d16globl.obj_c \ $(WIN32KOBJ)\vprntf16.obj_c # Rule to build MkCallTab.exe mkcalltab.exe mkcalltab: $(WIN32KBIN)\mkcalltab.exe $(WIN32KBIN)\mkcalltab.exe: clfix.exe $(MKCALLTABOBJS) $(LD) $(LFLAGS) /pmtype:vio @<<$(WIN32KOBJ)\$(@B).lnk /OUT:$@ /MAP:$(WIN32KBIN)\$(@B).map $(MKCALLTABOBJS) $(TOOLKIT)\lib\os2286.lib $(MSCPATH)\lib\clibcep.lib <