#############################################################################
#
# The make process relies on the creation of DLL and library response file  #
# creation.  To control the location of object modules the following should #
# be defined:                                                               #
#                                                                           #
#     IMPOBJS - A list of object modules that should appear in the DLL      #
#               import library.                                             #
#                                                                           #
#        OBJS - If a DLL is build, this is a list of the object modules     #
#               that are linked into the DLL.  If building a library, this  #
#               is the list of object modules that goes into the library.   #
#                                                                           #
# The building of miscellaneous object modules and libraries is controlled  #
# by the list of files in the MISC variable.                                #
#                                                                           #
#############################################################################

#############################################################################
# In order to build the obj list for 16 bit platforms, a definition of      #
# MODEL is required.                                                        #
#############################################################################
!if ($(OS) == DOS || $(OS) == WIN16) && !$d(MODEL)
!    error MODEL is required
!endif

#############################################################################
# Build the object module lists                                             #
#############################################################################
NOEHOBJS =       \
    setnewnx.obj \
    noxx.obj

!if $(OS) != WIN32
NOEHOBJS =       \
    $(NOEHOBJS)  \
    setjmpnx.obj
!endif

!if $(OS) == WIN16
!   if $d(DLL)
        MISC = win16dll
!   else
        MISC = noehw$(MODEL).lib
!   endif
!endif

!if $(OS) == WIN32
    MISC = noeh32.lib
!endif

!if $(OS) == DOS && $(MODEL) != t
    MISC = noeh$(MODEL).lib
!endif

#############################################################################
# Configure the environment appropriately.                                  #
#############################################################################
!include rules.mak

#############################################################################
# MISC explicit rules.                                                      #
#############################################################################
win16dll : $(LIBDIR)\dll.rsp $(LIBDIR)\import.rsp $(OBJDIR)\version.res
    echo $(OBJDIR)\\dummy.obj >> dll.rsp
    $(TLIB) $(IMPLIBNAME) @import.rsp,temp.lst
    copy &&|
    $(DEFDIR)\$(DLLDEF), $(OBJDIR)\version
|   dll1.rsp
    $(LINK) /c /C @dll.rsp,$(DLLNAME),,$(IMPORT) $(IMPLIBNAME), @dll1.rsp
    implib $(LIBNAME).lib $(DLLNAME).dll
    $(LINK) @dll.rsp,$(DLLNAME),,$(IMPORT) $(IMPLIBNAME), @dll1.rsp
#    fastlib $(LIBNAME).lib $(LIBNAME).fst
#    $(TLIB) $(IMPLIBNAME)-+$(LIBNAME).fst
    $(TLIB) $(IMPLIBNAME)-+$(LIBNAME).lib
    $(PUBTOOL) $(EXTDIR)\$(PUBNAME) $(IMPLIBNAME).lib -o
    del $(LIBNAME).lib
    del $(IMPLIBNAME).bak
#    del $(LIBNAME).fst
    del temp.lst
    del dll1.rsp

noeh$(MODEL).lib : $(NOEHOBJS)
    makersp "-+%s &\n" &&|
            $?
|   >> $(LIBDIR)\noeh.rsp
    $(TLIB) $(LIBDIR)\$& @$(LIBDIR)\noeh.rsp, $(LIBDIR)\temp.lst
    if exist $(LIBDIR)\$&.bak del $(LIBDIR)\$&.bak
    del $(LIBDIR)\temp.lst
    del $(LIBDIR)\noeh.rsp

noehw$(MODEL).lib : $(NOEHOBJS)
    makersp "-+%s &\n" &&|
            $?
|   >> $(LIBDIR)\noeh.rsp
    $(TLIB) $(LIBDIR)\$& @$(LIBDIR)\noeh.rsp, $(LIBDIR)\temp.lst
    if exist $(LIBDIR)\$&.bak del $(LIBDIR)\$&.bak
    del $(LIBDIR)\temp.lst
    del $(LIBDIR)\noeh.rsp

noeh32.lib : $(NOEHOBJS)
    makersp "-+%s &\n" &&|
            $?
|   >> $(LIBDIR)\noeh.rsp
    $(TLIB) $(LIBDIR)\$& @$(LIBDIR)\noeh.rsp, $(LIBDIR)\temp.lst
    if exist $(LIBDIR)\$&.bak del $(LIBDIR)\$&.bak
    del $(LIBDIR)\temp.lst
    del $(LIBDIR)\noeh.rsp

