# USER16 makefile
#
# Copyright (c) 1991, Microsoft Corporation
#
# History:
#   26-Jan-1991 Jeff Parsons (jeffpar)
#   Created.
#


!INCLUDE ..\makefile.inc

!IFNDEF ALT_PROJECT
ALT_PROJECT=USA
ALT_PROJECT_TARGET=.
DEFINES=
!ENDIF


# WOW matches 32bit WINVER value this was built for.
DEFINES = -DWOW=0x500 -DBUILDDLL
!if "$(MVDMFLAGS)" != ""
DEFINES = $(DEFINES) $(MVDMFLAGS)
!endif

OBJ386 =

DEFINES = $(DEFINES) $(DBCS_FLAGS)

AOBJ    = -Mx -t $(DEFINES) $(INCS)

CW16    = -ASw -G2cs -W2 $(DEFINES)
CW16L   = $(CW16) -B1 c1l.exe -B2 c2l.exe -B3 c3l.exe

LINKOPTS = /map /align:16 /batch /onerror:noexe

!if !$(FREEBUILD)
AOBJ    = $(AOBJ) -Zd
CW16    = $(CW16) /Odi /Zdp -DWOWDBG
LINKOPTS = $(LINKOPTS) /LI
!else
CW16    = $(CW16) /Os /Zp
!endif

W16LIBS = ..\lib\sdllcew.lib

OBJ1    = $(DEST)\user.obj $(DEST)\user1a.obj $(DEST)\user2.obj $(DEST)\user2a.obj $(DEST)\user3.obj $(DEST)\user3a.obj $(DEST)\user4.obj $(DEST)\user95.obj $(DEST)\winrect.obj
OBJ2    = $(DEST)\layer.obj $(DEST)\msglayer.obj $(DEST)\init.obj $(DEST)\rmload.obj $(DEST)\wsprintf.obj $(DEST)\wclass.obj $(DEST)\fastres.obj $(DEST)\wowcomm.obj $(DEST)\usercli.obj
OBJ3    = $(DEST)\wsphelp.obj $(DEST)\net.obj $(DEST)\winnet.obj $(DEST)\inuserds.obj $(DEST)\intds.obj $(DEST)\drvr.obj $(DEST)\drvrrare.obj $(DEST)\winq.obj $(DEST)\debug.obj
OBJ4    = $(DEST)\winlang.obj $(DEST)\winstr.obj $(DEST)\winstack.obj $(DEST)\helpcall.obj $(DEST)\winhook.obj $(DEST)\winmisc2.obj $(DEST)\rmcreate.obj $(DEST)\fmtmsg.obj
OBJ1l    = user.obj user1a.obj user2.obj user2a.obj user3.obj user3a.obj user4.obj user95.obj winrect.obj
OBJ2l    = layer.obj msglayer.obj init.obj rmload.obj wsprintf.obj wclass.obj fastres.obj wowcomm.obj usercli.obj
OBJ3l    = wsphelp.obj net.obj winnet.obj inuserds.obj intds.obj drvr.obj drvrrare.obj winq.obj debug.obj
OBJ4l    = winlang.obj winstr.obj winstack.obj helpcall.obj winhook.obj winmisc2.obj rmcreate.obj fmtmsg.obj

.asm{$(DEST)\}.obj:
    $(ASM) $(AOBJ) $<,$*;

.asm.obj:
    $(ASM) $(AOBJ) $*;

.asm.lst:
    $(ASM) $(AOBJ) -l $*,nul,$*.lst;


.c{$(DEST)\}.obj:
    set include=$(ENVINCS);$(INCLUDE)
    $(CL) -c $(CW16) /Fo$*.obj $<

.c.obj:
    set include=$(ENVINCS);$(INCLUDE)
    $(CL) -c $(CW16) $*.c

.c.lst:
    set include=$(ENVINCS);$(INCLUDE)
    $(CL) -c $(CW16) -Fonul -Fc$*.lst $*.c


.def.lib:
    implib $*.lib $*.def

{$(DEST)\}.map{$(DEST)\}.sym:
    cd $(DEST)
    mapsym $(*F).map
    cd $(MAKEDIR)

.rc{$(DEST)\}.res:
    set include=$(ENVINCS);$(INCLUDE)
    $(RC) -r -fo $*.res -D_$(ALT_PROJECT)_ $<

# Check to see if we're being invoked from ntuser\client

!IFDEF NTUSERK
!UNDEF TUKWILA
!ENDIF

all: $(DEST)\user.exe $(DEST)\user.sym $(DEST)\user.map
    -binplace -O $(ALT_PROJECT_TARGET) $(DEST)\user.exe
    -binplace -O $(ALT_PROJECT_TARGET) $(DEST)\user.sym
    -binplace -O $(ALT_PROJECT_TARGET) $(DEST)\user.map

clean: cleanup all

cleanup:
    if exist $(DEST)\*.lrf del $(DEST)\*.lrf
    if exist $(DEST)\*.obj del $(DEST)\*.obj
    if exist $(DEST)\*.exe del $(DEST)\*.exe
    if exist $(DEST)\*.map del $(DEST)\*.map
    if exist $(DEST)\*.sym del $(DEST)\*.sym
    if exist $(DEST)\*.res del $(DEST)\*.res


$(DEST)\debug.obj: debug.c user.h

$(DEST)\drvr.obj: drvr.c user.h

$(DEST)\drvrrare.obj: drvrrare.c user.h

$(DEST)\fastres.obj: fastres.c user.h

$(DEST)\helpcall.obj: helpcall.c user.h

$(DEST)\init.obj: init.c user.h

$(DEST)\intds.obj: intds.asm user.inc

$(DEST)\inuserds.obj: inuserds.c user.h

$(DEST)\layer.obj: layer.asm user.inc ..\inc\layer.inc user.api

$(DEST)\msglayer.obj: msglayer.asm user.inc ..\inc\layer.inc messages.api msglayer.inc

$(DEST)\net.obj: net.c user.h netdlg.h ..\inc\winnet.h

$(DEST)\rmcreate.obj: rmcreate.c user.h

$(DEST)\rmload.obj: rmload.c user.h ..\inc\multires.h

$(DEST)\user.obj: user.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user1a.obj: user1a.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user2.obj: user2.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user2a.obj: user2a.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user3.obj: user3.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user3a.obj: user3a.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user4.obj: user4.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\user95.obj: user95.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\usercli.obj: usercli.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\wclass.obj: wclass.asm

$(DEST)\winhook.obj: winhook.asm user.inc ..\inc\newexe.inc

$(DEST)\winlang.obj: winlang.asm user.inc

$(DEST)\winmisc2.obj: winmisc2.asm user.inc

$(DEST)\winrect.obj: winrect.asm user.inc ..\..\inc\wow.inc ..\..\inc\wowusr.inc

$(DEST)\winq.obj: winq.asm user.inc

$(DEST)\winstack.obj: winstack.asm user.inc

$(DEST)\winstr.obj: winstr.asm user.inc

$(DEST)\winnet.obj: winnet.asm
    $(ASM) -DSEGNAME=TEXT $(AOBJ) $(@B).asm,$*;

$(DEST)\wowcomm.obj: wowcomm.c ..\inc\windows.h ..\..\inc\wowcomm.h

$(DEST)\wsphelp.obj: wsphelp.asm

$(DEST)\wsprintf.obj: wsprintf.c ..\inc\windows.h ..\inc\winexp.h

$(DEST)\fmtmsg.obj: fmtmsg.c user.h

$(DEST)\user.res: user.rc user.rcv ..\inc\common.ver

$(DEST)\user.sym: $(DEST)\user.map

$(DEST)\userk.lrf: makefile.sub
    echo $(OBJ386l) $(OBJ1l)+>$(DEST)\userk.lrf
    echo $(OBJ2l)+>>$(DEST)\userk.lrf
    echo $(OBJ3l)+>>$(DEST)\userk.lrf
    echo $(OBJ4l)>>$(DEST)\userk.lrf
    echo user.exe>>$(DEST)\userk.lrf
    echo user.map $(LINKOPTS)>>$(DEST)\userk.lrf
    echo ..\..\..\..\lib\$(ALT_PROJECT)\libw.lib ..\..\..\..\lib\$(DEST)\system.lib /nod >>$(DEST)\userk.lrf
    echo ..\..\..\user;>>$(DEST)\userk.lrf

$(DEST)\user.exe $(DEST)\user.map: $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(DEST)\userk.lrf user.def $(DEST)\user.res $(OBJ386)
    cd $(DEST)
    $(LINK) @userk.lrf;
    $(RC) -t user.res user.exe
    cd ..\..\..

