MODBIN=TTWCOMP
# File Based Compress/Expand Entries
MOD01=TTWCOMP1
# Expand Processing
MOD02=TTWCOMP2
# Compress Processing
MOD03=TTWCOMP3
# Tree Routines
MOD04=TTWCOMP4
# Buffer Only Compress/Expand Entries, DLL misc routines
MOD05=TTWCOMP5
# DES Encryption
MOD06=DES

!IFNDEF L
!   ERROR  Macro 'L' not defined
!ENDIF

SOURCE=SOURCE\$(L)

!IFNDEF PRI
!   ERROR  Macro 'PRI' not defined
!ENDIF

!IFNDEF PUB
!   ERROR  Macro 'PUB' not defined
!ENDIF

!INCLUDE $(PUB)\PROJECT.MAK


CHECKOUT:: $(PUB)\$(SOURCE)\$(MOD01).C  \
           $(PUB)\$(SOURCE)\$(MOD02).C \
           $(PUB)\$(SOURCE)\$(MOD03).C \
           $(PUB)\$(SOURCE)\$(MOD04).C \
           $(PUB)\$(SOURCE)\$(MOD05).C \
           $(PUB)\$(SOURCE)\$(MOD06).C \
           $(PUB)\$(SOURCE)\$(MODBIN).RC \
           $(PUB)\$(SOURCE)\$(MODBIN)
    !COPY $** $(PRI)\$(SOURCE)

CHECKOUT:: $(PUB)\$(INC)\$(MODBIN).H \
           $(PUB)\$(INC)\$(MOD06).H
    !COPY $** $(PRI)\$(INC)

CHECKOUT:: $(PUB)\$(OBJ)\$(MOD01).OBJ \
           $(PUB)\$(OBJ)\$(MOD02).OBJ \
           $(PUB)\$(OBJ)\$(MOD03).OBJ \
           $(PUB)\$(OBJ)\$(MOD04).OBJ \
           $(PUB)\$(OBJ)\$(MOD05).OBJ \
           $(PUB)\$(OBJ)\$(MOD06).OBJ \
           $(PUB)\$(OBJ)\$(MODBIN).MAP \
           $(PUB)\$(OBJ)\$(MODBIN).DEF
    !COPY $** $(PRI)\$(OBJ)

CHECKOUT:: $(PUB)\$(LB)\$(MODBIN).LIB
    !COPY $** $(PRI)\$(LB)

CHECKOUT:: $(PUB)\$(BIN)\$(MODBIN).RES
    !COPY $** $(PRI)\$(BIN)

CHECKOUT:: $(PUB)\$(BIN)\$(MODBIN).DLL
    !COPY $** $(PRI)\$(BIN)
    REN $(PUB)\$(SOURCE)\$(MODBIN) *.CKO

CHECKOUT:: $(PUB)\$(LB)\$(MODBIN).LIB 
    !COPY $** $(PRI)\$(LB)

CHECKIN: BACKUP DELETE
    REN $(PUB)\$(SOURCE)\$(MODBIN).CKO *.


BACKUP:: $(PRI)\$(BIN)\$(MODBIN).DLL \
         $(PRI)\$(BIN)\$(MODBIN).RES
    !COPY $** $(PUB)\$(BIN)

BACKUP:: $(PRI)\$(SOURCE)\$(MOD01).C \
         $(PRI)\$(SOURCE)\$(MOD02).C \
         $(PRI)\$(SOURCE)\$(MOD03).C \
         $(PRI)\$(SOURCE)\$(MOD04).C \
         $(PRI)\$(SOURCE)\$(MOD05).C \
         $(PRI)\$(SOURCE)\$(MOD06).C \
         $(PRI)\$(SOURCE)\$(MODBIN).rc
    !COPY $** $(PUB)\$(SOURCE)

BACKUP:: $(PRI)\$(INC)\$(MODBIN).H \
         $(PRI)\$(INC)\$(MOD06).H
    !COPY $** $(PUB)\$(INC)

BACKUP:: $(PRI)\$(SOURCE)\$(MODBIN)
    !COPY $** $(PUB)\$(SOURCE)\*.CKO

BACKUP:: $(PRI)\$(OBJ)\$(MOD01).OBJ \
         $(PRI)\$(OBJ)\$(MOD02).OBJ \
         $(PRI)\$(OBJ)\$(MOD03).OBJ \
         $(PRI)\$(OBJ)\$(MOD04).OBJ \
         $(PRI)\$(OBJ)\$(MOD05).OBJ \
         $(PRI)\$(OBJ)\$(MOD06).OBJ \
         $(PRI)\$(OBJ)\$(MODBIN).MAP \
         $(PRI)\$(OBJ)\$(MODBIN).DEF
    !COPY $** $(PUB)\$(OBJ)

BACKUP:: $(PRI)\$(LB)\$(MODBIN).LIB
    !COPY $** $(PUB)\$(LB)

BACKUP:: $(PRI)\$(LB)\$(MODBIN).LIB 
    !COPY $** $(PUB)\$(LB)


DELETE:: $(PRI)\$(SOURCE)\$(MOD01).C \
         $(PRI)\$(SOURCE)\$(MOD02).C \
         $(PRI)\$(SOURCE)\$(MOD03).C \
         $(PRI)\$(SOURCE)\$(MOD04).C \
         $(PRI)\$(SOURCE)\$(MOD05).C \
         $(PRI)\$(SOURCE)\$(MOD06).C \
         $(PRI)\$(SOURCE)\$(MODBIN).RC \
         $(PRI)\$(SOURCE)\$(MODBIN) \
         $(PRI)\$(INC)\$(MODBIN).H \
         $(PRI)\$(INC)\$(MOD06).H \
         $(PRI)\$(OBJ)\$(MOD01).OBJ \
         $(PRI)\$(OBJ)\$(MOD02).OBJ \
         $(PRI)\$(OBJ)\$(MOD03).OBJ \
         $(PRI)\$(OBJ)\$(MOD04).OBJ \
         $(PRI)\$(OBJ)\$(MOD05).OBJ \
         $(PRI)\$(OBJ)\$(MOD06).OBJ \
         $(PRI)\$(OBJ)\$(MODBIN).MAP \
         $(PRI)\$(OBJ)\$(MODBIN).DEF \
         $(PRI)\$(LB)\$(MODBIN).LIB \
         $(PRI)\$(BIN)\$(MODBIN).RES \
        $(PRI)\$(BIN)\$(MODBIN).DLL
    !DEL $**


BUILD:  $(PRI)\$(BIN)\$(MODBIN).DLL \
        $(PRI)\$(LB)\$(MODBIN).LIB

$(PRI)\$(OBJ)\$(MOD01).OBJ: $(PRI)\$(SOURCE)\$(MOD01).C \
               {$(PRI)\$(INC);$(PUB)\$(INC)}\$(MODBIN).H
    CL $(CLOPT_LLD) $(PRI)\$(SOURCE)\$(MOD01).C

$(PRI)\$(OBJ)\$(MOD02).OBJ: $(PRI)\$(SOURCE)\$(MOD02).C \
               {$(PRI)\$(INC);$(PUB)\$(INC)}\$(MODBIN).H
    CL $(CLOPT_LLD) $(PRI)\$(SOURCE)\$(MOD02).C

$(PRI)\$(OBJ)\$(MOD03).OBJ: $(PRI)\$(SOURCE)\$(MOD03).C \
               {$(PRI)\$(INC);$(PUB)\$(INC)}\$(MODBIN).H
    CL $(CLOPT_LLD) $(PRI)\$(SOURCE)\$(MOD03).C

$(PRI)\$(OBJ)\$(MOD04).OBJ: $(PRI)\$(SOURCE)\$(MOD04).C \
               {$(PRI)\$(INC);$(PUB)\$(INC)}\$(MODBIN).H
    CL $(CLOPT_LLD) $(PRI)\$(SOURCE)\$(MOD04).C

$(PRI)\$(OBJ)\$(MOD05).OBJ: $(PRI)\$(SOURCE)\$(MOD05).C \
               {$(PRI)\$(INC);$(PUB)\$(INC)}\$(MODBIN).H
    CL $(CLOPT_LLD) $(PRI)\$(SOURCE)\$(MOD05).C

$(PRI)\$(OBJ)\$(MOD06).OBJ: $(PRI)\$(SOURCE)\$(MOD06).C \
               {$(PRI)\$(INC);$(PUB)\$(INC)}\$(MODBIN).H
    CL $(CLOPT_LLD) $(PRI)\$(SOURCE)\$(MOD06).C


$(PRI)\$(BIN)\$(MODBIN).res: $(PRI)\$(SOURCE)\$(MODBIN).RC \
                             $(PRI)\$(INC)\$(MODBIN).H
     cd $(PRI)\$(SOURCE)
     rc -r $(MODBIN).RC
     copy $(MODBIN).RES $(PRI)\$(BIN)
     del $(MODBIN).RES


$(PRI)\$(OBJ)\$(MODBIN).DEF: $(PRI)\$(SOURCE)\$(MODBIN)
   COPY <<  $(PRI)\$(OBJ)\$(MODBIN).DEF

LIBRARY      $(MODBIN)    ; application's module name

DESCRIPTION  'Huffman Compression, DES Encryption for Windows'

EXETYPE      WINDOWS      ; required for all Windows applications

CODE  LOADONCALL MOVEABLE DISCARDABLE

DATA  LOADONCALL MOVEABLE SINGLE

HEAPSIZE      8184

EXPORTS
   WEP
   CompressFileToFile
   CompressFileToBuffer
   CompressBufferToBuffer
   ExpandFileToFile
   ExpandBufferToFile
   ExpandBufferToBuffer
   EncryptData
   DecryptData

<<NOKEEP

#  link components & combine with compiled binary resource file:
#  .OBJ & .DEF & .LIB & .RES -> .dll
$(PRI)\$(BIN)\$(MODBIN).dll: $(PRI)\$(OBJ)\$(MOD01).OBJ \
                  $(PRI)\$(OBJ)\$(MOD02).OBJ \
                  $(PRI)\$(OBJ)\$(MOD03).OBJ \
                  $(PRI)\$(OBJ)\$(MOD04).OBJ \
                  $(PRI)\$(OBJ)\$(MOD05).OBJ \
                  $(PRI)\$(OBJ)\$(MOD06).OBJ \
                  $(PUB)\$(OBJ)\libentry.obj \
                  $(PRI)\$(OBJ)\$(MODBIN).DEF  \
                  $(PRI)\$(BIN)\$(MODBIN).RES
     LINK $(CVP) @<<
      $(PUB)\$(OBJ)\libentry.obj+
      $(PRI)\$(OBJ)\$(MOD01).OBJ+
      $(PRI)\$(OBJ)\$(MOD02).OBJ+
      $(PRI)\$(OBJ)\$(MOD03).OBJ+
      $(PRI)\$(OBJ)\$(MOD04).OBJ+
      $(PRI)\$(OBJ)\$(MOD05).OBJ+
      $(PRI)\$(OBJ)\$(MOD06).OBJ,
      $(PRI)\$(BIN)\$(MODBIN).DLL /nod /align:16,
      $(PRI)\$(OBJ)\$(MODBIN).MAP /m:full,
      ldllcew+
      libw /noe,
      $(PRI)\$(OBJ)\$(MODBIN).DEF

<<NOKEEP
   CD $(PRI)\$(BIN)
   RC $(MODBIN).res $(MODBIN).DLL
   CD $(PRI)\$(SOURCE)

#   create import library to be linked with modules using this DLL
#   .DEF -> .LIB
$(PRI)\$(LB)\$(MODBIN).lib: $(PRI)\$(OBJ)\$(MODBIN).DEF
    COPY <<  $(PRI)\$(OBJ)\$(MODBIN).WEP 
;Dummy WEP
<<NOKEEP 
   IMPLIB $(PRI)\$(LB)\$(MODBIN).lib $(PRI)\$(OBJ)\$(MODBIN).DEF
