Making DLL's with multiple threads that access the coprocessor

By Jeff Hitchcock

 14-Jul-1991

To:      Anyone interested in making DLL's with multiple threads that access the coprocessor

From:    Jeff Hitchcock (71601,260) Applied Signal Technology, Inc.         470 Spring Park Place, Suite 700 Herndon, VA 22070 (703) 478-5619 Voice (703) 471-8915 Fax

1.  What follows is a summary of key points of my experience in splitting a large program (1.8 MB .EXE) that uses both multiple threads and the coprocessor into a smaller .EXE (appx. 100K) and 12 DLL's, not including the special C Run Time Library (CRTL) DLL. I will be happy to answer any questions that I can about this, either on CompuServ (IBMOS2 forum) or on the phone. I check in on CompuServ as often as I can, but it is always not every week.

2.  So we are all using the same terminology, the following applies throughout:

Term               Meaning

module             A DLL or EXE file, composed of multiple sources.

source             A .C or .ASM file; part of a module. Can also mean .H and .DLG files, as part of a resource.

3.  The following proved to be the essential points:

a.  All modules must use a dynamically linked CRTL in order to use the coprocessor.

b.  All links must use the /NOI flag, which preserves case sensitivity (required because the CRTL functions are in lower case).

c.  All module definition files (.DEF) must have the EXPENTRY functions (the exported ones) defined in UPPERCASE, because (i) EXPENTRY (== pascal _loadds) converts the function name to all uppercase, and (ii) the link uses the /NOI flag so references to the function from other modules will be unresolved if the functions are not defined as all uppercase.

d.  All calls to WinDlgBox must be preceeded with a call to               DosLoadModule to load and get the handle of the DLL and followed by a call to DosFreeModule to free the DLL.

e.  Other than (d) and eliinating references to previously global variables, we made NO changes to any of our code.

4.  The following "picture" shows, essentially, the flow from source to          finished .DLL and .LIB (import library):

ÚÄÄÄÄÄÄÄ¿        ÚÄÄÄÄÄÄÄ¿ ³      ³         ³       ³                     ³  .C   ³         ³  .H   ³ ³      ³         ³       ³                     ÀÄÄÄÄÄÄÄÙ         ÀÄÄÄÄÄÄÄÙ º                º º                º ÈÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ¼ º º ÉÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍ» º                      º º  cl -D_MT -D_DLL ... º º                      º ÈÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍ¼ º º        ÚÄÄÄÄÄÄÄ¿ º       ÚÁÄÄÄÄÄÄ¿³ ÚÄÄÄÄÄÄÄ¿        ÚÄÄÄÄÄÄÄ¿   ÚÄÄÄÄÄÄÄ¿   ÚÁÄÄÄÄÄÄ¿³³ ÚÄÄÄÄÄÄÄ¿ ³      ³         ³       ³   ³       ³   ³       ³³³ ³       ³ ³ .DLG  ³         ³  .H   ³   ³ .OBJ  ³   ³ .OBJ  ³³Ù ³ .DEF  ³ÍÍÍ» ³      ³         ³       ³   ³       ³   ³       ÃÙ  ³       ³   º ÀÄÄÄÄÄÄÄÙ        ÀÄÄÄÄÄÄÄÙ   ÀÄÄÄÄÄÄÄÙ   ÀÄÄÄÄÄÄÄÙ   ÀÄÄÄÄÄÄÄÙ   º º                º           º           º           º       º º                º           º           º           º       º ÈÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ¼          ÈÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍ¼       º º                               º                   º º                               º                   º ÉÍÍÍÍÍÍÊÍÍÍÍÍ»          ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»    º º           º           º                             º    º º rc -r .rc ÌÍÍÍÍÍ»     º    link /NOI /NOD /NOE ... º   º º           º     º     º                             º    º ÈÍÍÍÍÍÍÍÍÍÍÍÍ¼    º     ÈÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼    º º                 º                     º º                 º                     º ÚÄÄÄÄÄÄÄ¿         ÚÄÄÄÄÄÄÄ¿                 º ³      ³          ³       ³                 º ³ .RES ³          ³ .DLL  ³                 º ³      ³          ³       ³                 º ÀÄÄÄÄÄÄÄÙ         ÀÄÄÄÄÄÄÄÙ                 º º               º   º                   º º               º   º                   º ÈÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍ¼  ÈÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍ¼ º                    º º                    º ÉÍÍÍÍÍÍÊÍÍÍÍÍÍÍ»   ÉÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍ» º             º    º                  º º rc .res .dll º   º implib .lib .def º º             º    º                  º ÈÍÍÍÍÍÍËÍÍÍÍÍÍÍ¼   ÈÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍ¼ º                    º º                    º ÚÄÄÄÄÄÄÄ¿            ÚÄÄÄÄÄÄÄ¿ ³      ³             ³       ³                              ³ .DLL  ³             ³ .LIB  ³ ³      ³             ³       ³                              ÀÄÄÄÄÄÄÄÙ             ÀÄÄÄÄÄÄÄÙ

5.  Four files are included for your perusal:

(1) The makefile for use with PolyMake (by InterSolv).

(2) The ELV_CRTL.DEF file (essentially the same as cexample.def,               included with Microsoft C 6.0).

(3) ELV_DISP.DEF, to show how a DLL is defined.

(4) ELV_DISP.RC, to show how resources within a DLL are defined.

 ---


 * 1)  ELVIRA MAKE FILE for use with PolyMake                                     #
 * 2)  For the making of the Elvira .EXE and .DLL files.                          #
 * 3)  NOTE: A custom C Run Time Library is used by ELVIRA.  To make it, the      #
 * 4)        file '\c600\lib\crtlib.obj' must be available.                       #
 * 5)        'mlib' refers to Microsoft's Linker, which is renamed to distinguish #
 * 6)        it from PolyLibrarian, which is called 'lib'.                        #
 * 7)  Command line syntax:                                                       #
 * 8)   >make [oldver=Va.b] [newver=Vc.d] [debug=no] [target]                     #
 * 9)   where a = old major version                                               #
 * 10)         b = old minor version                                               #
 * 11)         c = new major version                                               #
 * 12)         d = new minor version                                               #
 * 13)         and "version" refers to an Elvira version, not a source revision.   #
 * 14)   debug=no disables Codeview during compile & link                          #
 * 15)            (Default is Codeview enabled)                                    #
 * 16)   target is a makeable file (elvira3.exe or a .dll)                         #
 * 17)   Definitions of macros (alphabetically listed)                             #
 * 18)       ADEBUG              Assembler debug flags                             #
 * 19)       AFLAGS              Assembler flags                                   #
 * 20)       ARCPATH             Path for VCS archive files (*.??v)                #
 * 21)       CDEFINES            Universal defines used when compiling .C files    #
 * 22)       CWD                 Current Working Directory (inherent)              #
 * 23)       DEBUGON             "YES" if Codeview is desired; otherwise "NO"      #
 * 24)       DLL_SYSLIBS         System libraries included in a .DLL link          #
 * 25)       DLL_CFLAGS          C compiler flags for .DLL source                  #
 * 26)       DLL_CDEBUG          Additional C compiler flags for debugging .DLL    #
 * 27)       DLL_CNODEBUG        Additional C compiler flags for no bebugging .DLL #
 * 28)       DLL_LINKFLAGS       Link flags for compiling a .EXE                   #
 * 29)       DLL_LINKDEBUG       Link flags added when using Codeview with .DL     #
 * 30)       ELV_DLLS            List of all .DLL's used in ELVIRA                 #
 * 31)       ELV_EXES            List of all .EXE's used in ELVIRA                 #
 * 32)       ELV_EXE_OBJS        .EXE : .OBJ dependencies                          #
 * 33)       ELV_EXE_RSRCS       .EXE resources and headers                        #
 * 34)       ELV_xxxx_OBJS       .DLL : .OBJ dependencies for ELV_xxxx.DLL         #
 * 35)       ELV_xxxx_RSCRS      .DLL resources for ELV_xxxx.DLL                   #
 * 36)       ELV_RESS            A list of all .RES files in Elvira                #
 * 37)       EXE_SYSLIBS         System libraries included in a .EXE link          #
 * 38)       EXE_CFLAGS          C compiler flags for .EXE source                  #
 * 39)       EXE_CDEBUG          Additional C compiler flags for debugging .EXE    #
 * 40)       EXE_CNODEBUG        Additional C compiler flags for no bebugging .EXE #
 * 41)       EXE_LINKFLAGS       Link flags for compiling a .EXE                   #
 * 42)       EXE_LINKDEBUG       Link flags added when using Codeview with .EXE    #
 * 43)       GETOPTS             Options used by VCS get command                   #
 * 44)       INC_GROUP           Functional groups to be compiled with real code   #
 * 45)       RCDEFINES           Universal defines used when compiling .RC files   #
 * 46)       SOURCEPATH          Paths to search for source code                   #
 * 1)       DLL_LINKFLAGS       Link flags for compiling a .EXE                   #
 * 2)       DLL_LINKDEBUG       Link flags added when using Codeview with .DL     #
 * 3)       ELV_DLLS            List of all .DLL's used in ELVIRA                 #
 * 4)       ELV_EXES            List of all .EXE's used in ELVIRA                 #
 * 5)       ELV_EXE_OBJS        .EXE : .OBJ dependencies                          #
 * 6)       ELV_EXE_RSRCS       .EXE resources and headers                        #
 * 7)       ELV_xxxx_OBJS       .DLL : .OBJ dependencies for ELV_xxxx.DLL         #
 * 8)       ELV_xxxx_RSCRS      .DLL resources for ELV_xxxx.DLL                   #
 * 9)       ELV_RESS            A list of all .RES files in Elvira                #
 * 10)       EXE_SYSLIBS         System libraries included in a .EXE link          #
 * 11)       EXE_CFLAGS          C compiler flags for .EXE source                  #
 * 12)       EXE_CDEBUG          Additional C compiler flags for debugging .EXE    #
 * 13)       EXE_CNODEBUG        Additional C compiler flags for no bebugging .EXE #
 * 14)       EXE_LINKFLAGS       Link flags for compiling a .EXE                   #
 * 15)       EXE_LINKDEBUG       Link flags added when using Codeview with .EXE    #
 * 16)       GETOPTS             Options used by VCS get command                   #
 * 17)       INC_GROUP           Functional groups to be compiled with real code   #
 * 18)       RCDEFINES           Universal defines used when compiling .RC files   #
 * 19)       SOURCEPATH          Paths to search for source code                   #


 * 1)   GENERAL MACROS AND DIRECTIVES                                             #
 * 1)   GENERAL MACROS AND DIRECTIVES                                             #
 * 1)   GENERAL MACROS AND DIRECTIVES                                             #


 * 1) Do not delete intermediate files (e.g., created .OBJ's)

.PRECIOUS


 * 1) Paths to files

ARCPATH      = v:\elvira SOURCEPATH   = $(CWD);$(ARCPATH)


 * 1) .ASM related flags

AFLAGS       = ADEBUG       = /Zi /Zd


 * 1) .C (made into a .EXE) related flags

EXE_CFLAGS   = -c $(CDEFINES) -Alfw -FPi -D_MT -D_DLL -G2stw -Gt16 -Od -W3 EXE_CDEBUG   = -Zi -Od EXE_CNODEBUG = -Od


 * 1) .C (made into a .DLL) related flags

DLL_CFLAGS   = -c $(CDEFINES) -ALw -FPi -D_MT -D_DLL -G2s -Gt16 -Od -W3 DLL_CDEBUG   = -Zi -Od DLL_CNODEBUG = -Od


 * 1) GET (extract from version control) flags

GETOPTS      = -q


 * 1) .EXE linker flags

EXE_LINKFLAGS = /NOD /NOE /NOI /ALIGN:16 /SEGMENTS:200 EXE_LINKDEBUG = /CO


 * 1) Libraries used in linking .EXE's

EXE_SYSLIBS = elv_crtl os2 lm_dxi_o


 * 1) .DLL linker flags

DLL_LINKFLAGS = /NOD /NOE /NOI /ALIGN:16 /SEGMENTS:200 DLL_LINKDEBUG = /CO


 * 1) Libraries used in linking .DLL's

DLL_SYSLIBS  = elv_crtl os2


 * 1) Utility DLL's used by ELVIRA .EXE's and .DLL's (except for the utility .DLL's)

ELV_UTILDLLS = elv_util ELV_UTILDLLS += elv_file


 * 1)   EXE'S AND FUNCTION                                                        #
 * 1)   EXE'S AND FUNCTION                                                        #
 * 1)   EXE'S AND FUNCTION                                                        #

ELV_EXES      = elvira3.exe    # The main executable


 * 1)   EXE : OBJECT dependencies                                                 #
 * 2)   The following objects are statically linked to make ELVIRA3.EXE.  All     #
 * 3)   other objects are linked into dynamic link libraries.                     #
 * 1)   The following objects are statically linked to make ELVIRA3.EXE.  All     #
 * 2)   other objects are linked into dynamic link libraries.                     #
 * 1)   other objects are linked into dynamic link libraries.                     #

ELV_EXE_OBJS  = elvira3.obj    # Must be first for .EXE file to LINK properly ELV_EXE_OBJS += config.obj ELV_EXE_OBJS += process.obj

ELV_EXE_SYSOBS = c:\c600\lib\crtexe.obj


 * 1)   DLL'S AND FUNCTION                                                        #
 * 2)   ELV_UTIL and ELV_FILE are listed first since they are used by most other  #
 * 3)   .DLL's.  Keeping them first forces their recompiles first during a        #
 * 4)   complete make.                                                            #
 * 1)   ELV_UTIL and ELV_FILE are listed first since they are used by most other  #
 * 2)   .DLL's.  Keeping them first forces their recompiles first during a        #
 * 3)   complete make.                                                            #


 * 1) DYNAMIC LINK LIBRARIES
 * 1) DYNAMIC LINK LIBRARIES

ELV_DLLS      = elv_crtl.dll   # C RTL for Elvira (Required to use 80x87)

ELV_DLLS     += elv_util.dll   # ELV_DLLS     += elv_file.dll   #

ELV_DLLS     += elv_b100.dll   # ELV_DLLS     += elv_clct.dll   # ELV_DLLS     += elv_disp.dll   # ELV_DLLS     += elv_dmod.dll   # ELV_DLLS     += elv_fax.dll    # ELV_DLLS     += elv_lor.dll    # ELV_DLLS     += elv_mlti.dll   # ELV_DLLS     += elv_naa.dll    # ELV_DLLS     += elv_proc.dll   # ELV_DLLS     += elv_rcgn.dll   #


 * 1) IMPORT LIBRARIES
 * 1) IMPORT LIBRARIES

ELV_IMPLIBS   = elv_crtl.lib

ELV_IMPLIBS  += elv_util.lib ELV_IMPLIBS  += elv_file.lib

ELV_IMPLIBS  += elv_b100.lib ELV_IMPLIBS  += elv_clct.lib ELV_IMPLIBS  += elv_disp.lib ELV_IMPLIBS  += elv_dmod.lib ELV_IMPLIBS  += elv_fax.lib ELV_IMPLIBS  += elv_lor.lib ELV_IMPLIBS  += elv_mlti.lib ELV_IMPLIBS  += elv_naa.lib ELV_IMPLIBS  += elv_proc.lib ELV_IMPLIBS  += elv_rcgn.lib


 * 1) RESOURCE FILES
 * 1) RESOURCE FILES

ELV_RESS      = elv_util.res   # ELV_RESS     += elv_file.res   #

ELV_RESS     += elv_clct.res   # ELV_RESS     += elv_disp.res   # ELV_RESS     += elv_dmod.res   # ELV_RESS     += elv_fax.res    # ELV_RESS     += elv_lor.res    # ELV_RESS     += elv_mlti.res   # ELV_RESS     += elv_naa.res    # ELV_RESS     += elv_proc.res   # ELV_RESS     += elv_rcgn.res   # ELV_RESS     += elvira3.res    #
 * 1) ELV_RESS      += elv_b100.res   # No B100 resources


 * 1)   DLL : OBJECT dependencies                                                 #
 * 2)   The following objects are linked into dynamic link libraries.             #
 * 1)   DLL : OBJECT dependencies                                                 #
 * 2)   The following objects are linked into dynamic link libraries.             #
 * 1)   The following objects are linked into dynamic link libraries.             #


 * 1) ELV_B100.DLL
 * 1) ELV_B100.DLL

ELV_B100_OBJS = b100elv3.obj ELV_B100_OBJS += b100os2.obj ELV_B100_OBJS += b100mdem.obj


 * 1) ELV_CLCT.DLL
 * 1) ELV_CLCT.DLL

ELV_CLCT_OBJS = datacoll.obj ELV_CLCT_OBJS += rxctl.obj ELV_CLCT_OBJS += scan.obj ELV_CLCT_OBJS += scanfunc.obj ELV_CLCT_OBJS += siggen.obj ELV_CLCT_OBJS += sim.obj


 * 1) ELV_DISP.DLL
 * 1) ELV_DISP.DLL

ELV_DISP_OBJS = bitplot.obj ELV_DISP_OBJS += dataplot.obj ELV_DISP_OBJS += text.obj


 * 1) ELV_DMOD.DLL
 * 1) ELV_DMOD.DLL

ELV_DMOD_OBJS = anlgdmod.obj ELV_DMOD_OBJS += bpskdmod.obj ELV_DMOD_OBJS += fskdmod.obj ELV_DMOD_OBJS += modem.obj


 * 1) ELV_FAX.DLL
 * 1) ELV_FAX.DLL

ELV_FAX_OBJS  = decutil.obj ELV_FAX_OBJS += fax.obj


 * 1) ELV_FILE.DLL
 * 1) ELV_FILE.DLL

ELV_FILE_OBJS = fileio.obj


 * 1) ELV_LOR.DLL
 * 1) ELV_LOR.DLL

ELV_LOR_OBJS  = bitproc.obj


 * 1) ELV_MLTI.DLL
 * 1) ELV_MLTI.DLL

ELV_MLTI_OBJS = classify.obj ELV_MLTI_OBJS += energy.obj ELV_MLTI_OBJS += fsk.obj ELV_MLTI_OBJS += searche.obj ELV_MLTI_OBJS += spltband.obj ELV_MLTI_OBJS += topid.obj ELV_MLTI_OBJS += vftid.obj


 * 1) ELV_NAA.DLL
 * 1) ELV_NAA.DLL

ELV_NAA_OBJS  = casdecod.obj ELV_NAA_OBJS += hdlc.obj ELV_NAA_OBJS += mar.obj ELV_NAA_OBJS += naa.obj ELV_NAA_OBJS += naaclass.obj ELV_NAA_OBJS += naadecod.obj ELV_NAA_OBJS += naaevent.obj ELV_NAA_OBJS += sif.obj


 * 1) ELV_PROC.DLL
 * 1) ELV_PROC.DLL

ELV_PROC_OBJS = fft.obj ELV_PROC_OBJS += filter.obj ELV_PROC_OBJS += mathe.obj ELV_PROC_OBJS += resample.obj


 * 1) ELV_RCGN.DLL
 * 1) ELV_RCGN.DLL

ELV_RCGN_OBJS = baudline.obj ELV_RCGN_OBJS += carrier.obj ELV_RCGN_OBJS += recognz.obj


 * 1) ELV_UTIL.DLL
 * 1) ELV_UTIL.DLL

ELV_UTIL_OBJS = help11.obj ELV_UTIL_OBJS += print.obj ELV_UTIL_OBJS += status.obj ELV_UTIL_OBJS += util.obj


 * 1) ELV_CRTL.DLL
 * 1) ELV_CRTL.DLL

ELV_CRTL_OBJS = c:\c600\lib\crtlib.obj


 * 1)   EXE : RESOURCE dependencies                                               #
 * 2)   The following resources are linked into .EXE files.                       #
 * 1)   EXE : RESOURCE dependencies                                               #
 * 2)   The following resources are linked into .EXE files.                       #
 * 1)   The following resources are linked into .EXE files.                       #

ELV_EXE_RSRCS  = elvira3.rc ELV_EXE_RSRCS  += elvira3$.h ELV_EXE_RSRCS  += config$.h ELV_EXE_RSRCS  += config$.dlg
 * 1) ELV_EXE_RSRCS  += elvira3.ico
 * 2) ELV_EXE_RSRCS  += crosshr.ptr


 * 1)   DLL : RESOURCE dependencies                                               #
 * 2)   The following resources are linked into dynamic link libraries.           #
 * 1)   DLL : RESOURCE dependencies                                               #
 * 2)   The following resources are linked into dynamic link libraries.           #
 * 1)   The following resources are linked into dynamic link libraries.           #


 * 1) ELV_B100.DLL
 * 1) ELV_B100.DLL

ELV_B100_RSRCS =


 * 1) ELV_CLCT.DLL
 * 1) ELV_CLCT.DLL

ELV_CLCT_RSRCS = elv_clct.rc ELV_CLCT_RSRCS += version.h ELV_CLCT_RSRCS += datacol$.dlg ELV_CLCT_RSRCS += datacol$.h ELV_CLCT_RSRCS += rxctl$.dlg ELV_CLCT_RSRCS += rxctl$.h ELV_CLCT_RSRCS += scan$.dlg ELV_CLCT_RSRCS += scan$.h ELV_CLCT_RSRCS += siggen$.dlg ELV_CLCT_RSRCS += siggen$.h ELV_CLCT_RSRCS += sim$.dlg ELV_CLCT_RSRCS += sim$.h


 * 1) ELV_DISP.DLL
 * 1) ELV_DISP.DLL

ELV_DISP_RSRCS = elv_disp.rc ELV_DISP_RSRCS += dataplo$.dlg ELV_DISP_RSRCS += dataplo$.h


 * 1) ELV_DMOD.DLL
 * 1) ELV_DMOD.DLL

ELV_DMOD_RSRCS = elv_dmod.rc ELV_DMOD_RSRCS += anlgdmo$.dlg ELV_DMOD_RSRCS += anlgdmo$.h ELV_DMOD_RSRCS += bpskdmo$.dlg ELV_DMOD_RSRCS += bpskdmo$.h ELV_DMOD_RSRCS += fskdmod$.dlg ELV_DMOD_RSRCS += fskdmod$.h ELV_DMOD_RSRCS += modem$.dlg ELV_DMOD_RSRCS += modem$.h


 * 1) ELV_FAX.DLL
 * 1) ELV_FAX.DLL

ELV_FAX_RSRCS  = elv_fax.rc ELV_FAX_RSRCS  += fax$.dlg ELV_FAX_RSRCS += fax$.h


 * 1) ELV_FILE.DLL
 * 1) ELV_FILE.DLL

ELV_FILE_RSRCS = elv_file.rc ELV_FILE_RSRCS += fileio$.dlg ELV_FILE_RSRCS += fileio$.h


 * 1) ELV_LOR.DLL
 * 1) ELV_LOR.DLL

ELV_LOR_RSRCS  = elv_lor.rc ELV_LOR_RSRCS  += bitproc$.dlg ELV_LOR_RSRCS += bitproc$.h


 * 1) ELV_MLTI.DLL
 * 1) ELV_MLTI.DLL

ELV_MLTI_RSRCS = elv_mlti.rc ELV_MLTI_RSRCS += classif$.dlg ELV_MLTI_RSRCS += classif$.h ELV_MLTI_RSRCS += energy$.dlg ELV_MLTI_RSRCS += energy$.h ELV_MLTI_RSRCS += fsk$.dlg ELV_MLTI_RSRCS += fsk$.h ELV_MLTI_RSRCS += searche$.dlg ELV_MLTI_RSRCS += searche$.h ELV_MLTI_RSRCS += spltban$.dlg ELV_MLTI_RSRCS += spltban$.h ELV_MLTI_RSRCS += topid$.dlg ELV_MLTI_RSRCS += topid$.h ELV_MLTI_RSRCS += vftid$.dlg ELV_MLTI_RSRCS += vftid$.h


 * 1) ELV_NAA.DLL
 * 1) ELV_NAA.DLL

ELV_NAA_RSRCS  = elv_naa.rc ELV_NAA_RSRCS  += casdeco$.dlg ELV_NAA_RSRCS += casdeco$.h ELV_NAA_RSRCS  += hdlc$.dlg ELV_NAA_RSRCS += hdlc$.h ELV_NAA_RSRCS  += sif$.dlg ELV_NAA_RSRCS += sif$.h ELV_NAA_RSRCS  += naa$.dlg ELV_NAA_RSRCS += naa$.h ELV_NAA_RSRCS  += naaeven$.dlg ELV_NAA_RSRCS += naaeven$.h ELV_NAA_RSRCS  += mar$.dlg ELV_NAA_RSRCS += mar$.h


 * 1) ELV_PROC.DLL
 * 1) ELV_PROC.DLL

ELV_PROC_RSRCS = elv_proc.rc ELV_PROC_RSRCS += fft$.dlg ELV_PROC_RSRCS += fft$.h ELV_PROC_RSRCS += filter$.dlg ELV_PROC_RSRCS += filter$.h ELV_PROC_RSRCS += mathe$.dlg ELV_PROC_RSRCS += mathe$.h ELV_PROC_RSRCS += resampl$.dlg ELV_PROC_RSRCS += resampl$.h


 * 1) ELV_RCGN.DLL
 * 1) ELV_RCGN.DLL

ELV_RCGN_RSRCS = elv_rcgn.rc ELV_RCGN_RSRCS += baudlin$.dlg ELV_RCGN_RSRCS += baudlin$.h ELV_RCGN_RSRCS += carrier$.dlg ELV_RCGN_RSRCS += carrier$.h ELV_RCGN_RSRCS += recognz$.dlg ELV_RCGN_RSRCS += recognz$.h


 * 1) ELV_UTIL.DLL
 * 1) ELV_UTIL.DLL

ELV_UTIL_RSRCS = elv_util.rc ELV_UTIL_RSRCS += print$.dlg ELV_UTIL_RSRCS += print$.h


 * 1)   ADJUST FLAGS DEPENDING UPON COMMAND LINE MACRO DEFINITIONS                #
 * 1)   ADJUST FLAGS DEPENDING UPON COMMAND LINE MACRO DEFINITIONS                #
 * 1)   ADJUST FLAGS DEPENDING UPON COMMAND LINE MACRO DEFINITIONS                #


 * 1) If debugging is enabled (the default), add Codeview to compiles and links

DEBUGON = $[u,$(debug)]

%if "$(DEBUGON)" == "NO"

%echo ** CODEVIEW DISABLED

EXE_CFLAGS   += $(CNODEBUG) DLL_CFLAGS   += $(CNODEBUG)

%else

%echo ** CODEVIEW ENABLED

AFLAGS       += $(ADEBUG) EXE_CFLAGS   += $(EXE_CDEBUG) DLL_CFLAGS   += $(DLL_CDEBUG)

EXE_LINKFLAGS += $(EXE_LINKDEBUG) DLL_LINKFLAGS += $(DLL_LINKDEBUG)

%endif


 * 1)   DEFINE THE "VERSION" TO BE SHOWN IN "ABOUT" DIALOG BOX                    #
 * 1)   DEFINE THE "VERSION" TO BE SHOWN IN "ABOUT" DIALOG BOX                    #
 * 1)   DEFINE THE "VERSION" TO BE SHOWN IN "ABOUT" DIALOG BOX                    #

%if %defined(oldver) CDEFINES       = /DVERSION=$(oldver) %endif

%if %defined(newver) CDEFINES       = /DVERSION=$(newver) %endif


 * 1)   DEFINE GROUP OF MODULES TO BE MADE                                        #
 * 1)   DEFINE GROUP OF MODULES TO BE MADE                                        #
 * 1)   DEFINE GROUP OF MODULES TO BE MADE                                        #

%if %defined(group)

INC_GROUP = $[u,$(group)] CDEFINES += /D$(INC_GROUP) RCDEFINES += -d $(INC_GROUP)

%else

CDEFINES += /DINC_ALL RCDEFINES += -d INC_ALL

%endif


 * 1)   LOGFILE EXTRACTION RULES                                                  #
 * 1)   LOGFILE EXTRACTION RULES                                                  #
 * 1)   LOGFILE EXTRACTION RULES                                                  #

.LOGFILE .asv(.asm -R$(oldver)) .LOGFILE .c_v(.c  -R$(oldver)) .LOGFILE .dev(.def -R$(oldver)) .LOGFILE .dlv(.dlg -R$(oldver)) .LOGFILE .exv(.ext -R$(oldver)) .LOGFILE .glv(.glb -R$(oldver)) .LOGFILE .h_v(.h  -R$(oldver)) .LOGFILE .rcv(.rc -R$(oldver))


 * 1)   LOGFILES ARE IN THE "ARCPATH" DIRECTORY ONLY                              #
 * 1)   LOGFILES ARE IN THE "ARCPATH" DIRECTORY ONLY                              #
 * 1)   LOGFILES ARE IN THE "ARCPATH" DIRECTORY ONLY                              #

.PATH.asv = $(ARCPATH) .PATH.c_v = $(ARCPATH) .PATH.dev = $(ARCPATH) .PATH.dlv = $(ARCPATH) .PATH.exv = $(ARCPATH) .PATH.glv = $(ARCPATH) .PATH.h_v = $(ARCPATH) .PATH.rcv = $(ARCPATH)


 * 1)   SOURCE FILES ARE IN ONE OF THE "SOURCEPATH" DIRECTORIES                   #
 * 1)   SOURCE FILES ARE IN ONE OF THE "SOURCEPATH" DIRECTORIES                   #
 * 1)   SOURCE FILES ARE IN ONE OF THE "SOURCEPATH" DIRECTORIES                   #

.PATH.asm = $(SOURCEPATH) .PATH.c  = $(SOURCEPATH) .PATH.def = $(SOURCEPATH) .PATH.dlg = $(SOURCEPATH) .PATH.ext = $(SOURCEPATH) .PATH.glb = $(SOURCEPATH) .PATH.h  = $(SOURCEPATH) .PATH.ico = $(SOURCEPATH) .PATH.obj = $(SOURCEPATH) .PATH.rc = $(SOURCEPATH) .PATH.ptr = $(SOURCEPATH)


 * 1)   ALL .LIB, .RES, AND .DLL FILES MUST BE IN THE $(CWD)                      #
 * 1)   ALL .LIB, .RES, AND .DLL FILES MUST BE IN THE $(CWD)                      #
 * 1)   ALL .LIB, .RES, AND .DLL FILES MUST BE IN THE $(CWD)                      #

.PATH.dll = $(CWD) .PATH.lib = $(CWD) .PATH.res = $(CWD)


 * 1) Library files must have .LIB extension (All .DLL's have Import .LIB's)

.LIBRARY .lib


 * 1)   EPILOG                                                                    #
 * 2)   If a new version was specified, update the log files.                     #
 * 1)   EPILOG                                                                    #
 * 2)   If a new version was specified, update the log files.                     #
 * 1)   If a new version was specified, update the log files.                     #

%if %defined(newver) .EPILOG: vcs -V"$(newver)": *.??v %endif


 * 1)   LOG FILE EXTRACTION RULES                                                 #
 * 2)     $@  Target file                                                         #
 * 3)     $*  Target file, less extension                                         #
 * 4)     $<  Depends on file                                                     #
 * 5)     $?  All depends on files modified more recently than target             #
 * 6)     $** All depends on files regardless of modification                     #
 * 1)     $<  Depends on file                                                     #
 * 2)     $?  All depends on files modified more recently than target             #
 * 3)     $** All depends on files regardless of modification                     #

.c_v.c:   get -q $(oldver) $<($@)

.h_v.h:   get -q $(oldver) $<($@)

.asv.asm: get -q $(oldver) $<($@)

.rcv.rc: get -q $(oldver) $<($@)

.dlv.dlg: get -q $(oldver) $<($@)

.exv.ext: get -q $(oldver) $<($@)

.glv.glb: get -q $(oldver) $<($@)

.dev.def: get -q $(oldver) $<($@)


 * 1)   GENERAL COMPILATION RULES                                                 #
 * 1)   GENERAL COMPILATION RULES                                                 #
 * 1)   GENERAL COMPILATION RULES                                                 #

.asm.obj: masm $(AFLAGS) $< ;

.c.obj: cl $(CFLAGS) $<

.rc.res: rc -r $(RCDEFINES) $<

.res.dll: rc $<

.res.exe: rc $<


 * 1)   DEPENDENCIES                                                            ##
 * 2)     ** MAKE PROCESSING BEGINS HERE **                                     ##
 * 3)     Sequence is to build all .DLL's, then the .EXE.                       ##
 * 1)   DEPENDENCIES                                                            ##
 * 2)     ** MAKE PROCESSING BEGINS HERE **                                     ##
 * 3)     Sequence is to build all .DLL's, then the .EXE.                       ##
 * 1)     Sequence is to build all .DLL's, then the .EXE.                       ##
 * 1)     Sequence is to build all .DLL's, then the .EXE.                       ##


 * 1) HEAD PSEUDO TARGET
 * 1) HEAD PSEUDO TARGET

head : $(ELV_RESS) $(ELV_DLLS) $(ELV_EXES)


 * 1) FILES THAT MUST EXIST BUT HAVE NO MAKE PROCESS
 * 1) FILES THAT MUST EXIST BUT HAVE NO MAKE PROCESS

elvira3.def :
 * 1) elvira3.ico :
 * 2) elvira3.ptr :


 * 1)   ELVIRA3.EXE AND ELVIRA3.RES                                               #
 * 1)   ELVIRA3.EXE AND ELVIRA3.RES                                               #
 * 1)   ELVIRA3.EXE AND ELVIRA3.RES                                               #

elvira3.res : $(ELV_EXE_RSRCS) rc -r $(RCDEFINES) elvira3

elvira3.exe :: elvira3.def $(ELV_EXE_OBJS) link $(EXE_LINKFLAGS) $(ELV_EXE_OBJS) $(ELV_EXE_SYSOBS), elvira3, NUL, $(EXE_SYSLIBS) $(ELV_IMPLIBS), elvira3 ; rc $[f, $[d, $<], $[r, $<], .RES]

elvira3.exe :: elvira3.res rc $<


 * 1)   .DLL'S AND ASSOCIATED RESOURCES                                           #
 * 1)   .DLL'S AND ASSOCIATED RESOURCES                                           #
 * 1)   .DLL'S AND ASSOCIATED RESOURCES                                           #


 * 1) ELV_B100.DLL
 * 1) ELV_B100.DLL

elv_b100_head : elv_b100.res elv_b100.dll

elv_b100.def :

elv_b100.dll :: elv_b100.def $(ELV_B100_OBJS) link $(DLL_LINKFLAGS) $(ELV_B100_OBJS), elv_b100, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_b100 implib elv_b100.lib elv_b100.def


 * 1) ELV_CLCT.DLL
 * 1) ELV_CLCT.DLL

elv_clct_head : elv_clct.res elv_clct.dll

elv_clct.def :

elv_clct.res : $(ELV_CLCT_RSRCS) rc -r $(RCDEFINES) elv_clct.rc

elv_clct.dll :: elv_clct.def $(ELV_CLCT_OBJS) link $(DLL_LINKFLAGS) $(ELV_CLCT_OBJS), elv_clct, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS) elv_b100, elv_clct implib elv_clct.lib elv_clct.def rc $*.res $*.dll

elv_clct.dll :: elv_clct.res rc $*.res $*.dll


 * 1) ELV_DISP.DLL
 * 1) ELV_DISP.DLL

elv_disp_head : elv_disp.res elv_disp.dll

elv_disp.def :

elv_disp.res : $(ELV_DISP_RSRCS) rc -r $(RCDEFINES) elv_disp.rc

elv_disp.dll :: elv_disp.def $(ELV_DISP_OBJS) link $(DLL_LINKFLAGS) $(ELV_DISP_OBJS), elv_disp, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_disp implib elv_disp.lib elv_disp.def rc $*.res $*.dll

elv_disp.dll :: elv_disp.res rc $*.res $*.dll


 * 1) ELV_DMOD.DLL
 * 1) ELV_DMOD.DLL

elv_dmod_head : elv_dmod.res elv_dmod.dll

elv_dmod.def :

elv_dmod.res : $(ELV_DMOD_RSRCS) rc -r $(RCDEFINES) elv_dmod.rc

elv_dmod.dll :: elv_dmod.def $(ELV_DMOD_OBJS) link $(DLL_LINKFLAGS) $(ELV_DMOD_OBJS), elv_dmod, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS) ELV_B100, elv_dmod implib elv_dmod.lib elv_dmod.def rc $*.res $*.dll

elv_dmod.dll :: elv_dmod.res rc $*.res $*.dll


 * 1) ELV_FAX.DLL
 * 1) ELV_FAX.DLL

elv_fax_head : elv_fax.res elv_fax.dll

elv_fax.def :

elv_fax.res : $(ELV_FAX_RSRCS) rc -r $(RCDEFINES) elv_fax.rc

elv_fax.dll :: elv_fax.def $(ELV_FAX_OBJS) link $(DLL_LINKFLAGS) $(ELV_FAX_OBJS), elv_fax, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS) lm_dxi_o, elv_fax implib elv_fax.lib elv_fax.def rc $*.res $*.dll

elv_fax.dll :: elv_fax.res rc $*.res $*.dll


 * 1) ELV_FILE.DLL
 * 1) ELV_FILE.DLL

elv_file_head : elv_file.res elv_file.dll

elv_file.def :

elv_file.res : $(ELV_FILE_RSRCS) rc -r $(RCDEFINES) elv_file.rc

elv_file.dll :: elv_file.def $(ELV_FILE_OBJS) link $(DLL_LINKFLAGS) $(ELV_FILE_OBJS), elv_file, NUL, $(DLL_SYSLIBS) elv_util, elv_file implib elv_file.lib elv_file.def rc $*.res $*.dll

elv_file.dll :: elv_file.res rc $*.res $*.dll


 * 1) ELV_LOR.DLL
 * 1) ELV_LOR.DLL

elv_lor_head : elv_lor.res elv_lor.dll

elv_lor.def :

elv_lor.res : $(ELV_LOR_RSRCS) rc -r $(RCDEFINES) elv_lor.rc

elv_lor.dll :: elv_lor.def $(ELV_LOR_OBJS) link $(DLL_LINKFLAGS) $(ELV_LOR_OBJS), elv_lor, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_lor implib elv_lor.lib elv_lor.def rc $*.res $*.dll

elv_lor.dll :: elv_lor.res rc $*.res $*.dll


 * 1) ELV_MLTI.DLL
 * 1) ELV_MLTI.DLL

elv_mlti_head : elv_mlti.res elv_mlti.dll

elv_mlti.def :

elv_mlti.res : $(ELV_MLTI_RSRCS) rc -r $(RCDEFINES) elv_mlti.rc

elv_mlti.dll :: elv_mlti.def $(ELV_MLTI_OBJS) link $(DLL_LINKFLAGS) $(ELV_MLTI_OBJS), elv_mlti, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_mlti implib elv_mlti.lib elv_mlti.def rc $*.res $*.dll

elv_mlti.dll :: elv_mlti.res rc $*.res $*.dll


 * 1) ELV_NAA.DLL
 * 1) ELV_NAA.DLL

elv_naa_head : elv_naa.res elv_naa.dll

elv_naa.def :

elv_naa.res : $(ELV_NAA_RSRCS) rc -r $(RCDEFINES) elv_naa.rc

elv_naa.dll :: elv_naa.def $(ELV_NAA_OBJS) link $(DLL_LINKFLAGS) $(ELV_NAA_OBJS), elv_naa, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_naa implib elv_naa.lib elv_naa.def rc $*.res $*.dll

elv_naa.dll :: elv_naa.res rc $*.res $*.dll


 * 1) ELV_PROC.DLL
 * 1) ELV_PROC.DLL

elv_proc_head : elv_proc.res elv_proc.dll

elv_proc.def :

elv_proc.res : $(ELV_PROC_RSRCS) rc -r $(RCDEFINES) elv_proc.rc

elv_proc.dll :: elv_proc.def $(ELV_PROC_OBJS) link $(DLL_LINKFLAGS) $(ELV_PROC_OBJS), elv_proc, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_proc implib elv_proc.lib elv_proc.def rc $*.res $*.dll

elv_proc.dll :: elv_proc.res rc $*.res $*.dll


 * 1) ELV_RCGN.DLL
 * 1) ELV_RCGN.DLL

elv_rcgn_head : elv_rcgn.res elv_rcgn.dll

elv_rcgn.def :

elv_rcgn.res : $(ELV_RCGN_RSRCS) rc -r $(RCDEFINES) elv_rcgn.rc

elv_rcgn.dll :: elv_rcgn.def $(ELV_RCGN_OBJS) link $(DLL_LINKFLAGS) $(ELV_RCGN_OBJS), elv_rcgn, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_rcgn implib elv_rcgn.lib elv_rcgn.def rc $*.res $*.dll

elv_rcgn.dll :: elv_rcgn.res rc $*.res $*.dll


 * 1) ELV_UTIL.DLL
 * 1) ELV_UTIL.DLL

elv_util_head : elv_util.res elv_util.dll

elv_util.def :

elv_util.res : $(ELV_UTIL_RSRCS) rc -r $(RCDEFINES) elv_util.rc

elv_util.dll :: elv_util.def $(ELV_UTIL_OBJS) link $(DLL_LINKFLAGS) $(ELV_UTIL_OBJS), elv_util, NUL, $(DLL_SYSLIBS), elv_util implib elv_util.lib elv_util.def rc $*.res $*.dll

elv_util.dll :: elv_util.res rc $*.res $*.dll


 * 1) ELV_CRTL.DLL - LINK ONLY
 * 1) ELV_CRTL.DLL - LINK ONLY

elv_crtl.dll : elv_crtl.def link /NOD /NOE /NOI $(ELV_CRTL_OBJS),elv_crtl.dll,,cdllobjs+os2,elv_crtl.def implib elv_crtl.lib elv_crtl.def mlib elv_crtl.lib+c:\c600\lib\cdllsupp.lib ;


 * 1)   .ASM SOURCE FILES                                                         #
 * 1)   .ASM SOURCE FILES                                                         #
 * 1)   .ASM SOURCE FILES                                                         #


 * 1) None as of 05-Jul-1991


 * 1)   .C SOURCE FILES, GROUPED BY .EXE or .DLL                                  #
 * 1)   .C SOURCE FILES, GROUPED BY .EXE or .DLL                                  #
 * 1)   .C SOURCE FILES, GROUPED BY .EXE or .DLL                                  #


 * 1) ELVIRA3.EXE
 * 1) ELVIRA3.EXE

config.obj  : config.c elv_base.h config.h config$.h elv_exe.h version.h fileio.h util.h    cl $(EXE_CFLAGS) $<

elvira3.obj : elvira3.c elv_base.h elvira3$.h elv_exe.h version.h null.h help11.h helpid11.h fileio.h print.h status.h util.h config.h processe.h    cl $(EXE_CFLAGS) $<

process.obj : process.c elv_base.h elv_exe.h version.h util.h    cl $(EXE_CFLAGS) $<


 * 1) ELV_B100.DLL
 * 1) ELV_B100.DLL

b100elv3.obj : b100elv3.c b100os2.h b100elv3.h b100mdem.h   cl $(DLL_CFLAGS) $<

b100os2.obj : b100os2.c b100os2.h    cl $(DLL_CFLAGS) $<

b100mdem.obj : b100mdem.c b100os2.h b100mdem.h b100psk.h   cl $(DLL_CFLAGS) $<


 * 1) ELV_CLCT.DLL
 * 1) ELV_CLCT.DLL

datacoll.obj : datacoll.c elv_base.h version.h fileio.h util.h b100os2.h b100elv3.h datacol$.h datacoll.h portia.h cmpndtbl.h   cl $(DLL_CFLAGS) $<

rxctl.obj   : rxctl.c elv_base.h version.h util.h fileio.h rxctl.h rxctl$.h    cl $(DLL_CFLAGS) $<

scan.obj    : scan.c elv_base.h version.h util.h fileio.h b100os2.h b100elv3.h scan$.h scanfunc.h    cl $(DLL_CFLAGS) $<

scanfunc.obj : scanfunc.c elv_base.h version.h util.h b100os2.h b100elv3.h scan$.h scanfunc.h fileio.h cmpndtbl.h   cl $(DLL_CFLAGS) $<

siggen.obj  : siggen.c elv_base.h version.h util.h siggen.h siggen$.h fileio.h cmpndtbl.h    cl $(DLL_CFLAGS) $<

sim.obj     : sim.c elv_base.h version.h util.h fileio.h sim.h sim$.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_DISP.DLL
 * 1) ELV_DISP.DLL

bitplot.obj : bitplot.c elv_base.h version.h fileio.h util.h    cl $(DLL_CFLAGS) $<

dataplot.obj : dataplot.c elv_base.h version.h dataplo$.h util.h cmpndtbl.h   cl $(DLL_CFLAGS) $<

text.obj    : text.c elv_base.h version.h util.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_DMOD.DLL
 * 1) ELV_DMOD.DLL

anlgdmod.obj : anlgdmod.c elv_base.h version.h anlgdmod.h anlgdmo$.h cmpndtbl.h b100mdem.h util.h fileio.h   cl $(DLL_CFLAGS) $<

bpskdmod.obj : bpskdmod.c elv_base.h version.h bpskdmod.h bpskdmo$.h cmpndtbl.h util.h fileio.h   cl $(DLL_CFLAGS) $<

fskdmod.obj : fskdmod.c elv_base.h version.h fskdmod.h fskdmod$.h cmpndtbl.h fileio.h util.h    cl $(DLL_CFLAGS) $<

modem.obj   : modem.c elv_base.h util.h version.h b100os2.h b100elv3.h b100mdem.h b100psk.h modem.h modem$.h cmpndtbl.h fileio.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_FAX.DLL
 * 1) ELV_FAX.DLL

decutil.obj  : decutil.c elv_base.h util.h version.h null.h help11.h helpid11.h fax.h decutil.h    cl $(DLL_CFLAGS) $<

fax.obj     : fax.c elv_base.h util.h version.h null.h help11.h helpid11.h null.ext lm_dxi.h fax.h decutil.h fileio.h fax$.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_FILE.DLL
 * 1) ELV_FILE.DLL

fileio.obj  : fileio.c easyfont.h elv_base.h util.h fileio.h fileio$.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_LOR.DLL
 * 1) ELV_LOR.DLL

bitproc.obj : bitproc.c elv_base.h version.h bitproc.h bitproc$.h util.h fileio.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_MLTI.DLL
 * 1) ELV_MLTI.DLL

classify.obj : classify.c elv_base.h util.h version.h chclass.h portia.h fileio.h b100os2.h b100elv3.h classify.h classif$.h   cl $(DLL_CFLAGS) $<

energy.obj  : energy.c elv_base.h version.h elv_mlti.h energy.h energy$.h fileio.h util.h    cl $(DLL_CFLAGS) $<

fsk.obj     : fsk.c elv_base.h version.h elv_mlti.h fsk.h fsk$.h fileio.h util.h    cl $(DLL_CFLAGS) $<

searche.obj : searche.c elv_base.h version.h elv_mlti.h b100por.h portia.h fileio.h chclass.h searche.h searche$.h util.h    cl $(DLL_CFLAGS) $<

spltband.obj : spltband.c elv_base.h version.h elv_mlti.h spltbndf.h spltband.h spltban$.h fileio.h util.h   cl $(DLL_CFLAGS) $<

topid.obj   : topid.c elv_base.h version.h elv_mlti.h topid.h topid$.h fileio.h util.h    cl $(DLL_CFLAGS) $<

vftid.obj   : vftid.c elv_base.h version.h elv_mlti.h vftid.h vftid$.h fileio.h util.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_NAA.DLL
 * 1) ELV_NAA.DLL

casdecod.obj : casdecod.c elv_base.h version.h casdeco$.h util.h   cl $(DLL_CFLAGS) $<

hdlc.obj    : hdlc.c elv_base.h version.h hdlc$.h cmpndtbl.h util.h    cl $(DLL_CFLAGS) $<

sif.obj     : sif.c elv_base.h version.h sif$.h util.h    cl $(DLL_CFLAGS) $<

naa.obj     : naa.c elv_base.h version.h naaglb.h naa$.h util.h    cl $(DLL_CFLAGS) $<

naaclass.obj : naaclass.c elv_base.h version.h naaglb.h util.h   cl $(DLL_CFLAGS) $<

naadecod.obj : naadecod.c elv_base.h version.h naaglb.h util.h   cl $(DLL_CFLAGS) $<

naaevent.obj : naaevent.c elv_base.h naaglb.h naaeven$.h version.h util.h   cl $(DLL_CFLAGS) $<

mar.obj     : mar.c elv_base.h version.h mar$.h util.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_PROC.DLL
 * 1) ELV_PROC.DLL

fft.obj     : fft.c elv_base.h version.h fft$.h cmpndtbl.h fileio.h util.h    cl $(DLL_CFLAGS) $<

filter.obj  : filter.c elv_base.h version.h filter$.h cmpndtbl.h fileio.h util.h    cl $(DLL_CFLAGS) $<

mathe.obj   : mathe.c elv_base.h version.h mathe$.h cmpndtbl.h util.h fileio.h    cl $(DLL_CFLAGS) $<

resample.obj : resample.c elv_base.h version.h util.h resampl$.h cmpndtbl.h fileio.h   cl $(DLL_CFLAGS) $<


 * 1) ELV_RCGN.DLL
 * 1) ELV_RCGN.DLL

baudline.obj : baudline.c elv_base.h version.h elv_mlti.h baudline.h baudlin$.h fileio.h util.h   cl $(DLL_CFLAGS) $<

carrier.obj : carrier.c elv_base.h version.h elv_mlti.h carrier.h carrier$.h fileio.h util.h    cl $(DLL_CFLAGS) $<

recognz.obj : recognz.c elv_base.h version.h fileio.h util.h recognz.h recognz$.h    cl $(DLL_CFLAGS) $<


 * 1) ELV_UTIL.DLL
 * 1) ELV_UTIL.DLL

help11.obj  : help11.c elv_base.h version.h util.h help11.h helpid11.h    cl $(DLL_CFLAGS) $<

print.obj   : print.c elv_base.h print$.h print.h version.h util.h null.h help11.h helpid11.h    cl $(DLL_CFLAGS) $<

status.obj  : status.c elv_base.h status$.h status.h util.h    cl $(EXE_CFLAGS) $<

util.obj    : util.c elv_base.h b100os2.h b100elv3.h elv_mlti.h util.h version.h null.h help11.h helpid11.h    cl $(DLL_CFLAGS) $<

--- 

 ---


 * ELV_CRTL.DEF
 * Definition file for ELV_CRTL.DLL
 * ELV_CRTL.DEF
 * Definition file for ELV_CRTL.DLL
 * Definition file for ELV_CRTL.DLL
 * Definition file for ELV_CRTL.DLL

LIBRARY    ELV_CRTL INITINSTANCE

DESCRIPTION 'Microsoft C 6.0 Run Time Library DLL' DATA       MULTIPLE SEGMENTS   _IOSEG CLASS 'IOSEG_CODE' IOPL PROTMODE EXPORTS ATOF DIFFTIME LDIV STRTOD _abort _abs _access _alloca _asctime _atexit _atoi _atol _bsearch _calloc _cgets _chdir __chdrive _chmod _chsize _clearerr _clock _close _cprintf _cputs _creat _cscanf _ctime _cwait _div _dup _dup2 _ecvt _eof _environ __errno _execl _execle _execlp _execlpe _execv _execve _execvp _execvpe _exit _fclose _fcloseall _fcvt _fdopen _feof _ferror _fflush _fgetc _fgetchar _fgetpos _fgets _filelength _fileno _flushall _fopen __fsopen _fprintf _fputc _fputchar _fputs _fread _free _freopen _fscanf _fseek _fsetpos _fstat _ftell _ftime __fullpath _fwrite _gcvt _getc _getch _getchar _getche _getcwd __getdcwd __getdrive _getenv _getpid _gets _getw _gmtime _halloc _hfree _inp _inpw _isalnum _isalpha _isascii _isatty _iscntrl _iscsym _iscsymf _isdigit _isgraph _islower _isprint _ispunct _isspace _isupper _isxdigit _itoa _kbhit _labs _lfind _localeconv _localtime _locking _longjmp _lsearch _lseek _ltoa _malloc _memccpy _memchr _memcmp _memcpy _memicmp _memmove _memset _mkdir _mktemp _mktime _movedata _onexit _open _outp _outpw __pclose _perror __pipe __popen _printf _putc _putch _putchar _putenv _puts _putw _qsort _rand _realloc _read _remove _rename _rewind _rmdir _rmtmp _scanf _segread _setbuf _setjmp _setlocale _setmode _setvbuf _signal _sopen _spawnl _spawnle _spawnlp _spawnlpe _spawnv _spawnve _spawnvp _spawnvpe _sprintf _srand _sscanf _stackavail _stat _strcat _strchr _strcmp _strcmpi _strcoll _strcpy _strcspn _strdup _strerror _strftime _stricmp _strlen _strlwr _strncat _strncmp _strncpy _strnicmp _strnset _strpbrk _strrchr _strrev _strset _strspn _strstr _strtok _strtol _strtoul _strupr _strxfrm _swab _system _tell _tempnam _time _tmpfile _tmpnam _toascii _tolower __tolower _toupper __toupper _tzset _ultoa _umask _ungetc _ungetch _unlink _utime _vfprintf _vprintf _vsprintf _wait _write _daylight _timezone _tzname __aDBused __aFchkstk __aFrchkstk __aFFaldiv __aFFalmul __aFFalrem __aFFalshl __aFFalshr __aFFauldiv __aFFaulmul __aFFaulrem __aFFaulshr __aFahdiff __aFldiv __aFllrot __aFlmul __aFlrem __aFlrrot __aFlshl __aFlshr __aFNaldiv __aFNalmul __aFNalrem __aFNalshl __aFNalshr __aFNauldiv __aFNaulmul __aFNaulrem __aFNaulshr __aFuldiv __aFulmul __aFulrem __aFulshr __amblksiz __assert __beginthread __cexit __c_exit __chkstk __ctype __CRT_INIT __dll_heapadd __dll_ncalloc __dll_nexpand __dll_nfree __dll_nfreect __dll_nheapchk __dll_nheapset __dll_nheapwalk __dll_nmalloc __dll_nmemavl __dll_nmemmax __dll_nheapmin __dll_nrealloc __endthread __exit __bheapadd __bcalloc __bexpand __bfree __bfreeseg __bheapchk __bheapseg __bheapset __bheapwalk __bmalloc __bheapmin __brealloc __bmsize __expand __fcalloc __fexpand __ffree __fheapchk __fheapset __fheapwalk __fmalloc __fheapmin __fileinfo __fmemccpy __fmemchr __fmemcmp __fmemcpy __fmemicmp __fmemmove __fmemset __fmode __fmsize __frealloc __fstrcat __fstrchr __fstrcmp __fstricmp __fstrcpy __fstrcspn __fstrdup __fstrlen __fstrlwr __fstrncat __fstrncmp __fstrnicmp __fstrncpy __fstrnset __fstrpbrk __fstrrchr __fstrrev __fstrset __fstrspn __fstrstr __fstrtok __fstrupr __heapchk __heapset __iob __heapwalk __lrotl __lrotr __makepath __heapmin __msize __nmsize __QCfptr_error __QCnptr_error __rotl __rotr __searchenv __splitpath __strdate __strerror __strtime ___doserrno ACOS ASIN ATAN ATAN2 CABS CEIL COS COSH EXP FABS FLOOR FMOD FREXP HYPOT J0          J1           JN           LDEXP LOG LOG10 MODF POW SIN SINH SQRT TAN TANH Y0          Y1           YN           _dieeetomsbin _dmsbintoieee _fieeetomsbin _fmsbintoieee _HUGE _matherr __aFCIacos __aFCIasin __aFCIatan __aFCIatan2 __aFCIceil __aFCIcos __aFCIcosh __aFCIexp __aFCIfabs __aFCIfloor __aFCIfmod __aFCIlog __aFCIlog10 __aFCImax __aFCImin __aFCIpow __aFCIsin __aFCIsinh __aFCIsqrt __aFCItan __aFCItanh __clear87 __control87 __fltused __fpreset __status87 __aFdcvt __aFeaddd __aFeadds __aFedivd __aFedivdr __aFedivs __aFedivsr __aFeldd __aFeldl __aFeldq __aFelds __aFeldt __aFeldw __aFemuld __aFemuls __aFestd __aFestdp __aFests __aFestsp __aFesttp __aFesubd __aFesubdr __aFesubs __aFesubsr __aFfabs __aFfadd __aFfaddd __aFfadds __aFfchs __aFfcmp __aFfcompp __aFfdiv __aFfdivd __aFfdivdr __aFfdivr __aFfdivs __aFfdivsr __aFfdup __aFfld1 __aFfldd __aFfldl __aFfldq __aFflds __aFfldt __aFfldw __aFfldz __aFfmul __aFfmuld __aFfmuls __aFfstd __aFfstdp __aFfsts __aFfstsp __aFfsttp __aFfsub __aFfsubd __aFfsubdr __aFfsubr __aFfsubs __aFfsubsr __aFftol __aFftst __aFfxch __aFsaddd __aFsadds __aFsdivd __aFsdivdr __aFsdivs __aFsdivsr __aFsldd __aFsldl __aFsldq __aFslds __aFsldt __aFsldw __aFsmuld __aFsmuls __aFsstd __aFsstdp __aFssts __aFsstsp __aFssttp __aFssubd __aFssubdr __aFssubs __aFssubsr _acosl _asinl _atanl _atan2l _cabsl _ceill _cosl _coshl _expl _fabsl _floorl _fmodl _hypotl _ldexpl _logl _log10l _modfl _powl _sinl _sinhl _sqrtl _tanl _tanhl __atold __fac __j0l __j1l __jnl __LHUGE __matherrl __strtold __y0l __y1l __ynl __aFCIacosl __aFCIasinl __aFCIatanl __aFCIatan2l __aFCIceill __aFCIcosl __aFCIcoshl __aFCIexpl __aFCIfloorl __aFCIfmodl __aFCIlogl __aFCIlog10l __aFCIpowl __aFCIsinl __aFCIsinhl __aFCIsqrtl __aFCItanl __aFCItanhl

--- 

 ---


 * ELV_DISP.DEF
 * DEFINITION FILE FOR ELV_DISP.DLL
 * ELV_DISP.DEF
 * DEFINITION FILE FOR ELV_DISP.DLL
 * DEFINITION FILE FOR ELV_DISP.DLL
 * DEFINITION FILE FOR ELV_DISP.DLL

LIBRARY        ELV_DISP INITINSTANCE

DESCRIPTION    'ELVIRA DISPLAY DLL' PROTMODE DATA           MULTIPLE HEAPSIZE       8192 EXPORTS        MODULEINIT03 MODULE03 MODULEMODIFY03 BITPLOTPROC

MODULEINIT01 MODULE01 MODULEMODIFY01 MANUALSCALEDLGPROC

MODULEINIT25 MODULE25 MODULEMODIFY25

--- 

 ---

////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // ELV_DISP.RC // /////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////


 * 1) include 


 * 1) include "version.h" // Version specific stuff

/***********************************************************************/

/* Data Plot Files */


 * 1) ifdef INC_DATAPLOT

rcinclude dataplo$.dlg
 * 1) include "dataplo$.h"


 * 1) endif

--- 

