# --------------------------------------------------------------------
#
#                     Microsoft RPC
#          Copyright(c) Microsoft Corp., 1990-94
#
# --------------------------------------------------------------------
# --------------------------------------------------------------------
#
# File : makefile.inc
#
# Title : Makefile for the Win16 RPC client runtime
#
# History :
#    stevez     08-30-90    Cloned from ..\dos\makefile
#    mikemon    11-08-90    Added the IMPORT environment variable.
#    mikemon    11-08-90    Changed the default build so that $(PATH),
#                           $(INCLUDE), $(LIB) dont include themselves.
#    mikemon    11-16-90    Switched the $(IMPORT)\os212\h directory before
#                           the $(IMPORT)\c600\h directory for includes.
#    mariogo    4-15-94     New stuff - re-write.
# --------------------------------------------------------------------

!ifndef RPC
!error	- You forgot to set your build environment
!endif

## These inference rules must be defined FIRST.  Inference rules are evaluated
## backwards, we want to use the file in . or .. before those possibly
## avaliable with these rules.  Yes, this is a hack.

{..\dos}.c{}.obj :
    $(CC) $(CFLAGS) -Fo$@ -c $<

{..\dos}.cxx{}.obj :
    $(CC) $(CXXFLAGS) -Fo$@ -c $<

{..\os2.12}.c{}.obj :
    $(CC) $(CFLAGS) -Fo$@ -c $<

WIN=1

!include ..\rules.mk

CINC       =$(CINC) -I..\..\rpcreg -I$(RPC)\common\include -I$(IMPORT)\lmsdk\h -I..\dos

CFLAGS     =$(CFLAGS) -AMw
CFLAGS_AL  =$(CFLAGS:AM=AL)
CXXFLAGS   =$(CXXFLAGS) -AMw

OBJS       = \
             dllmgmt.obj \
             binding.obj \
             except86.obj \
             bufapi.obj \
             msgapi.obj \
             handle.obj \
             memory.obj \
             dcebind.obj \
             tranclnt.obj \
             osfclnt.obj \
             osfpcket.obj \
             sdict.obj \
             winutil.obj \
             clntapip.obj \
             dcecclnt.obj \
             bitset.obj \
             wdatexit.obj \
             winexcpt.obj \
             winyield.obj \
             rpcuuid.obj \
             miscwin.obj \
             epclnt.obj \
             epmp_c.obj \
             dcecmisc.obj \
             dcestrng.obj \
             tower.obj \
             util.obj \
             dgclnt.obj \
             dceuuid.obj \
             uuid16.obj \
             dthreads.obj \
             ulong64.obj \
             secclnt.obj \
             conv_c.obj \
!ifndef RELEASE
             lacheck.obj \
!endif


# --------------------------------------------------------------------
# These are the targets required by the build process.

all : $(TARGETDIR)\RpcRt1.dll \
      $(TARGETDIR)\Rpc.lib \
      $(TARGETDIR)\rpc16c1.dll \
      $(TARGETDIR)\rpc16c3.dll \
      $(TARGETDIR)\rpc16c3X.dll \
      $(TARGETDIR)\rpc16dg3.dll\
      $(TARGETDIR)\rpc16c4.dll \
      $(TARGETDIR)\rpc16c5.dll \
!IFDEF RPCSPX
      $(TARGETDIR)\rpc16c6.dll \
      $(TARGETDIR)\rpc16dg6.dll \
!ENDIF
      $(TARGETDIR)\netapi.dll  \
      uclnt.exe

clobber ::
    -del $(TARGETDIR)\*.lib $(TARGETDIR)\*.exe $(TARGETDIR)\*.dll 2> nul

depend :
    $(INCLUDES) $(INCLUDESFLAGS) *.c *.cxx ..\*.cxx ..\*.c *.asm \
    ..\os2.12\netbcom.c ..\dos\uuid16.cxx ..\dos\ulong64.cxx > depend.mk

tree :
    copy Rpc.h                      $(RPCDIST)\win\inc\Rpc.h
    copy $(TARGETDIR)\Rpc.lib		$(RPCDIST)\win\lib
    copy $(TARGETDIR)\RpcRt1.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16C1.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16C3.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16C3X.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16dg3.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16C4.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16C5.dll	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\RpcRt1.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C1.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C3.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C3X.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16dg3.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C4.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C5.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\RpcRt1.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C1.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C3.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C3X.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16dg3.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C4.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C5.sym	$(RPCDIST)\win\dll
!Ifdef RPCSPX
    copy $(TARGETDIR)\rpc16C6.dll	$(RPCDIST)\win\dll
    copy $(TARGETDIR)\rpc16dg6.dll	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C6.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16dg6.map	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16C6.sym	$(RPCDIST)\win\dll
    -copy $(TARGETDIR)\rpc16dg6.sym	$(RPCDIST)\win\dll
!endif
    copy $(TARGETDIR)\netapi.dll    $(RPCDIST)\win\dll
    copy stdio\sStdioW.lib		    $(RPCDIST)\win\lib
    copy stdio\lStdioW.lib		    $(RPCDIST)\win\lib
    copy stdio\WinMain.def		    $(RPCDIST)\win\lib
    copy stdio\WinMain.res		    $(RPCDIST)\win\lib

# --------------------------------------------------------------------

RT1LIBS=$(WIN_LIB)\mdllcew.lib        \
        $(WINSDK_LIB)\libw.lib        \
        $(WINSDK_LIB)\toolhelp.lib    \
        $(RPC)\common\lib\wnetapi.lib \
        $(TARGETDIR)\rpcreg.lib       \
        $(RPC)\ndrlib\win\rpcndrp.lib \
        $(RPC)\ndr20\win\rpcndr20.lib

rpcrt1.lnk: makefile
   echo @<<rpcrt1.lnk
   $(OBJS:  =+^
   )
   $(TARGETDIR)\rpcrt1.dll
   $(TARGETDIR)\rpcrt1.map
   $(RT1LIBS:  =+^
   )
   rpcwin.def
<<KEEP

rpcwin.res: rpcwin.rc rpcyield.dlg
    $(RC) $(RCFLAGS) -r rpcwin.rc

$(TARGETDIR)\RpcRt1.dll : $(OBJS) $(RT1LIBS) rpcrt1.lnk rpcwin.res
    $(LINK) $(LINKFLAGS) /packcode /farcall @rpcrt1.lnk
    $(RC) $(RCFLAGS) -k rpcwin.res $@
    $(MAPSYM) $(MAPSYMFLAGS) $*.map
    copy rpcrt1.sym $(TARGETDIR)

$(TARGETDIR)\netapi.dll: netapi.obj ltstart.obj netapi.def
    $(LINK) $(LINKFLAGS) netapi.obj+ltstart.obj,$@,$*.map,\
    $(WIN_LIB)\sdllcew $(WINSDK_LIB)\libw, netapi.def;
    $(RC) $(RCFLAGS) $@

$(TARGETDIR)\Rpc.lib : rpcwin.def $(TARGETDIR)\RpcNs.lib
    $(IMPLIB) $@ rpcwin.def
    copy $@ $(TARGETDIR)\RpcRaw.lib
    $(LIBRARIAN) $@+$(TARGETDIR)\RpcNs.lib;

$(TARGETDIR)\RpcNs.lib:
    cd ..\..\..\locator\client\win
    nmake $@
    cd ..\..\..\runtime\mtrt\win

# Named pipes client interface DLL

$(TARGETDIR)\rpc16C1.dll: npltclnt.obj ltstart.obj \
                          $(TARGETDIR)\Rpc.lib rpcwinlt.res npltc.def
    $(LINK) $(LINKFLAGS) npltclnt+ltstart,$@,$*.map,\
             $(WIN_LIB)\sdllcew.lib $(WINSDK_LIB)\libw.lib $(RPCCOMMON)\lib\wnetapi $(RPCCOMMON)\lib\wfwnet,\
             npltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16c1.sym $(TARGETDIR)

# Winsock TCP/IP client interface DLL

tcltclnt.obj :
    $(CC) $(CFLAGS_AL) -Fo$@ -c tcltclnt.c


$(TARGETDIR)\rpc16C3.dll: tcltclnt.obj ltstart.obj \
                          $(TARGETDIR)\Rpc.lib rpcwinlt.res tcltc.def
    $(LINK) $(LINKFLAGS) tcltclnt+ltstart,$@,$*.map,\
        $(WIN_LIB)\ldllcew+$(RPCCOMMON)\lib\winsock+$(WIN_LIB)\libw,\
        tcltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16c3.sym $(TARGETDIR)

# Wsockets (lanman) TCP/IP client interface

tcpclntx.obj :
    $(CC) $(CFLAGS_AL) -Fo$@ -c tcpclntx.c

$(TARGETDIR)\rpc16C3X.dll: tcpclntX.obj ltstart.obj \
    $(TARGETDIR)\Rpc.lib rpcwinlt.res tcltc.def
    $(LINK) $(LINKFLAGS) tcpclntX+ltstart,$@,$*.map,\
       $(WIN_LIB)\ldllcew+$(RPC)\common\lib\win_sock+$(WINSDK_LIB)\libw,\
       tcltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16c3x.sym $(TARGETDIR)

# Winsock UDP/IP client interface DLL

dgudpc.obj :
    $(CC) $(CFLAGS_AL) -Fo$@ -c dgudpc.c

$(TARGETDIR)\rpc16dg3.dll: dgudpc.obj ltstart.obj \
                           $(TARGETDIR)\Rpc.lib rpcwinlt.res dgudpc.def
    $(LINK) $(LINKFLAGS) dgudpc+ltstart,$@,$*.map,\
        $(WIN_LIB)\ldllcew+$(RPC)\common\lib\winsock+$(WINSDK_LIB)\libw,\
        dgudpc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16dg3.sym $(TARGETDIR)

# DecNet client interface DLL

dnltclnt.obj :
    $(CC) $(CFLAGS_AL) -Fo$@ -c dnltclnt.c

$(TARGETDIR)\rpc16C4.dll: dnltclnt.obj ltstart.obj \
                          $(TARGETDIR)\Rpc.lib rpcwinlt.res dnltc.def
    $(LINK) $(LINKFLAGS) dnltclnt+ltstart,$@,$*.map,\
        $(WIN_LIB)\ldllcew+$(RPC)\common\lib\dnet_win+$(WINSDK_LIB)\libw,\
        dnltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16c4.sym $(TARGETDIR)

# NetBios client interface DLL

nbltclnt.obj:
    $(CC) $(CFLAGS_AL) -I..\os2.12 -Fo$@ -c $*.c

netbcom.obj:
    $(CC) $(CFLAGS_AL) -I..\os2.12 -Fo$@ -c ..\os2.12\$*.c

$(TARGETDIR)\rpc16C5.dll: nbltclnt.obj netbcom.obj ltstart.obj \
                          $(TARGETDIR)\Rpc.lib rpcwinlt.res nbltc.def
    $(LINK) $(LINKFLAGS) nbltclnt.obj+netbcom.obj+\
!ifndef RELEASE
# For ASSERT()
             winutil.obj+ \
!endif
             ltstart.obj,$@,$*.map,\
        $(WIN_LIB)\ldllcew+$(WINSDK_LIB)\libw+$(RPC)\common\lib\wnetapi,\
        nbltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16c5.sym $(TARGETDIR)

# SPX client interface DLL

gethost.c: ..\dos\gethost.c gethost.h
    copy ..\dos\gethost.c .

gethost.h: ..\dos\gethost.h
    copy $** .

gethost.obj : .\gethost.c gethost.h
    $(CC) $(CFLAGS_AL) -I$(IMPORT)\novell\h -Fo$@ -c $*.c

spxclnt.obj : .\spxclnt.c gethost.h
    $(CC) $(CFLAGS_AL) -I$(IMPORT)\novell\h -Fo$@ -c $*.c

$(TARGETDIR)\rpc16C6.dll: spxclnt.obj gethost.obj ltstart.obj \
                          $(TARGETDIR)\Rpc.lib rpcwinlt.res spxltc.def
    $(LINK) $(LINKFLAGS) spxclnt+gethost+ltstart,$@,$*.map,\
        $(WIN_LIB)\ldllcew+$(WINSDK_LIB)\libw,\
        spxltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16c6.sym $(TARGETDIR)

# IPX client interface DLL

ipxclnt.c: ..\dos\ipxclnt.c
    copy $** .

ipxclnt.obj : ipxclnt.c
    $(CC) $(CFLAGS_AL) -I$(IMPORT)\novell\h -Fo$@ -c $*.c

$(TARGETDIR)\rpc16dg6.dll: ipxclnt.obj ltstart.obj \
                           $(TARGETDIR)\Rpc.lib rpcwinlt.res ipxltc.def
    $(LINK) $(LINKFLAGS) ipxclnt+ltstart,$@,$*.map,\
        $(WIN_LIB)\ldllcew+$(WINSDK_LIB)\libw,\
        ipxltc.def;
    $(RC) $(RCFLAGS) rpcwinlt.res $@
    $(MAPSYM) $*.map
    copy rpc16dg6.sym $(TARGETDIR)

# Misc non-standard rules.

# Avoid using the NT memory.cxx

memory.obj: memory.c
    $(CC) $(CFLAGS) -Fo$@ -c $*.c

conv_c.obj: conv_c.c
    $(CC) $(CFLAGS_AL) -Fo$@ -c $*.c

epmp_c.obj: epmp_c.c
    $(CC) $(CFLAGS_AL) -Fo$@ -c $*.c

lacheck.obj: lacheck.asm
    $(MASM) $(AFLAGS) -I$(RPC)\common\include -DPMODE32=1 -DPMODE=1 -c lacheck.asm

# RT BVT

CLIENTTESTLIBS = $(WINSDK_LIB)\libw $(WIN_LIB)\mlibcew \
                 $(TARGETDIR)\Rpc.lib stdio\mstdiow.lib
test : uclnt.exe

uclnt.obj: ..\uclnt.cxx
    $(CC) $(CXXAPPFLAGS:AMw=AM) -Fc -Fo$@ -c ..\$*.cxx

uclnt.exe : uclnt.obj util.obj
    copy $(WIN_BIN)\winstub.exe
    $(LINK) $(LINKFLAGS) $(**: =+),$@,$*.map,\
                         $(CLIENTTESTLIBS),uclnt.def;
    $(RC) $(RCFLAGS) $@
    $(MAPSYM) $*.map
    del winstub.exe

!include "depend.mk"


