#################################################################################
#
# Makefile for OS/2 Multimedia extensions
#
#       Generates one DLL module:
#                                 AUDIOIF.DLL - ACPA device dependent MCD Driver
#
#
# IBM Confidential
#
# Copyright (c) IBM Corporation  1990, 1991
# All Rights Reserved
#################################################################################


.SUFFIXES: .com .sys .exe .obj .mbj .asm .inc .def .lrf .crf .ref \
           .lst .sym .map .c .h .lib .msg .pro .txt .cod

NAMEDLL=AUDIOIF
NAMEINIT=AUDINIT

IBMC=$(BASE)\IBMCPP

BASE=..\..
MCI=..\..

TOOLS=$(IBMC)\BIN;$(BASE)\TOOLS;$(BASE)\TOOLS\UTIL


H=$(BASE)\SRC\IBMH
H386=$(BASE)\SRC\H386
LIB386=$(BASE)\SRC\LIB386
SHIP_LIB=$(BASE)\SHIP_LIB
SHIP_H=$(BASE)\SHIP_H
SHIP_INC=$(BASE)\SHIP_INC
COMMON=$(BASE)\COMMON
INC=$(BASE)\SRC\INC
COVCC=\VISTA
VISTA_LIB=\VISTA\VISTA

IBMH=$(IBMC)\INCLUDE
IBMHSYS=$(IBMC)\INCLUDE\SYS
MAK=$(BASE)\SRC\H
HPATH=$(IBMH);$(IBMHSYS);$(H386);$(H);$(SHIP_H);$(COMMON);$(MAK)

IBMLIB=$(IBMC)\LIB
LIBPATH=$(IBMLIB);$(LIB386);$(SHIP_LIB);..\..\LIB;

#
# Set the environmental variables for compiling
#
!if  [SET PATH=$(IBMC)\BIN;$(BASE)\TOOLS;$(BASE)\TOOLS\util;%PATH%]           || \
     [SET DPATH=$(IBMC)\LOCALE;$(IBMC)\HELP;$(BASE)\TOOLS;$(BASE)\TOOLS\util;%DPATH%] || \
     [SET LIB=$(LIBPATH);%LIB%]                                               || \
     [SET INCLUDE=$(HPATH);%INCLUDE%]                                                  || \
     [SET HELP=$(IBMC)\HELP;%HELP%]                                           || \
     [SET TZ=$(IBMC)\EST5EDT,0,0,0,0,0,0,0,0,0]                               || \
     [SET IPFC=$(TOOLS);$(IPFC)]
!endif

!ifdef PTRFIX
PTRFX=/DPTRFIX
!endif

!ifdef MMDEBUG
ASM_DEBUG=-DMMDEBUG -L -ZI -ZD
ASM_LST=,$*.lst
C_DEBUG=/DMMDEBUG /Ti+ /O- /Gh+
LNK_DEBUG=/CO /DE
!endif

!ifdef MMPTRACE
ASM_PTRACE=-DPTRACE
C_PTRACE=/DPTRACE
!endif

!ifdef MMRAS
ASM_RAS=-DMMRAS
C_RAS=/DMMRAS
!endif

!ifdef MMOPT
ASM_OPT=
C_OPT=/O+ /G4
!endif

#################################
# Definitions for assembler
#################################

#ASM=masm
#AFLAGS=-MX -T -N $(ASM_DEBUG) $(ASM_LST) $(ASM_PTRACE)
#AINC=-I. -I$(SHIP_INC) -I$(COMMON)

#################################
# Definitions for C Compiler
#################################
!ifdef COVERAGE
CC=\vista\covcc -xCSthmia --
!else
CC=icc
!endif

CFLAGS = /C /Gd+ /Ge- /Gm+ /Ssm /Q $(C_DEBUG) $(C_PTRACE) $(C_RAS) $(C_OPT) $(C_LST)
CINC=-I. -I$(SHIP_H) -I$(COMMON) -I$(IBMH) -I$(IBMH)\SYS -I$(H) -I$(H)\SYS

#################################
# Definitions for linker
#################################

LINK386=link386
LFLAGS386= $(LNK_DEBUG) /batch /map /nod /noe /noi /map /packcode /packdata /exepack /align:16 /nologo /seg:300
LIBS = ..\..\..\LIB\OS2386.LIB  \
                 DDE4MBS.LIB \
       ..\..\LIB\HHP.LIB     \
       ..\..\LIB\MDM.LIB     \
!ifdef COVERAGE
       $(VISTA_LIB)\COV3.LIB
!endif


#################################
# Definitions for resource compiler
#################################

RC = rc
RINC   = -i . -i $(H) -i $(SHIP_H) -i $(COMMON)

MAP=mapsym $(NAMEDLL)

#****************************************************************************
# MERGE definitions
#****************************************************************************
CFLAGSMG = /C /Gme-s- /Q /Ssm /W3 /DINCL_32 $(C_DEBUG) $(C_OPT)

MERGDLL  = FWDDLL
MERG     = $(BASE)\merge\MMPMMAIN

COMP     = VSD
FWDDEF   = $(COMP)MG.def
FWDOBJ   = $(MAKEDIR)\$(COMP)fwd.obj
FWDC     = $(MAKEDIR)\$(COMP)fwd.c
MERGLIB  = $(COMP)MG.lib

#################################
# Inference Rules
#################################

.c.obj:
                $(CC) $(CFLAGS) $(CINC) /Fo$(<R).obj $(<R).c

#.asm.obj:
#                                $(ASM) $(AFLAGS) $(<B).asm;


.rc.res:
        $(RC) $(RINC) /r $(<B).rc

#################################
# Object file lists
#################################
DLLOBJS1  = $(MAKEDIR)\AUDIOIF.OBJ  $(MAKEDIR)\VSDDEF.OBJ   $(MAKEDIR)\VSDINFO.OBJ
DLLOBJS2  = $(MAKEDIR)\VSDOPEN.OBJ  $(MAKEDIR)\VSDSET.OBJ   $(MAKEDIR)\VSDMAN.OBJ
DLLOBJS3  = $(MAKEDIR)\VSDIOCTL.OBJ $(MAKEDIR)\VSDCAP.OBJ   $(MAKEDIR)\VSDQUERY.OBJ
DLLOBJS4  = $(MAKEDIR)\VSDINI.OBJ   $(MAKEDIR)\VSDCONN.OBJ
DLLOBJS5  = $(MAKEDIR)\VSDMAP.OBJ   $(MAKEDIR)\OS2MIXER.OBJ $(MAKEDIR)\DDCMD.OBJ

!ifdef MMDEBUG
DEBUGOBJ = $(COMMON)\mmpmperf.obj
!endif

DLLOBJS = $(DLLOBJS1) $(DLLOBJS2) $(DLLOBJS3) $(DLLOBJS4) $(DLLOBJS5) $(MAKEDIR)\vsdini2.obj
FWDOBJS = $(FWDOBJ) $(DEBUGOBJ)

!include      "..\..\..\H\version.mak"

#################################
# Target Descriptions
#################################

all: dll res merge

#################################
# vsdinit.obj Target Descriptions
#################################

#asm: $(NAMEINIT).OBJ

#################################
# vsdacpa.dll Target Descriptions
#################################

dll: $(NAMEDLL).dll
res: $(NAMEDLL).res

$(NAMEDLL).dll:   $(DLLOBJS) $(FWDOBJ) \
                  makefile \
                  $(NAMEDLL).res \
                  $(NAMEDLL).lrf \
                  $(NAMEDLL).def
             $(LINK386) $(LFLAGS386) @$(NAMEDLL).lrf
             $(MAP)
             $(RC) $(NAMEDLL).RES $*.DLL
#!ifdef SOUNDS
#                                  complete
#!endif


#****************************************************************************
# $(NAMEDLL).RES
#****************************************************************************

$(NAMEDLL).res: $(NAMEDLL).rc makefile
        @echo $@ > con
        $(RC) $(RINC) -r $*.rc $@


$(NAMEDLL).def: makefile
                @echo Creating file <<$(@B).def
LIBRARY AUDIOIF INITINSTANCE
DESCRIPTION '$(FILEVER) AUDIOIF.DLL - ACPA device dependent MCD Driver'
SEGMENTS
 SHR_SEG   CLASS 'DATA' SHARED

DATA MULTIPLE NONSHARED
STACKSIZE 8192
BASE = 0x1B310000
EXPORTS VSDEntry AUDIOIFDriverEntry
<<keep

$(NAMEDLL).lrf: makefile
        @echo Creating file <<$(@B).lrf
$(DLLOBJS1) +
$(DLLOBJS2) +
$(DLLOBJS3) +
$(DLLOBJS4) +
$(DLLOBJS5) +
$(MAKEDIR)\vsdini2.obj+
$(BASE)\LIB\CHECKMEM.OBJ+
$(DEBUGOBJ)
$(NAMEDLL).dll
$(NAMEDLL).map $(LFLAGS386)
$(LIBS) hhp.lib
$(NAMEDLL).def;
<<keep

#################################
# Pseudo Target Descriptions
#################################
clean:
        if exist *.lrf  del *.lrf
        if exist *.def  del *.def
        if exist *.obj  del *.obj
        if exist *.map  del *.map
        if exist *.old  del *.old
        if exist *.lst  del *.lst
        if exist *.sys  del *.sys
        if exist *.sym  del *.sym
        if exist *.msg  del *.msg
!ifndef QUICK
depend.mak: dephold
        touch depchk
        includes -e -l $(AINC)     *.asm >$@
        includes -e -l $(CINC)  *.c   >>$@
        -del depchk

dephold:
        touch $@

#!include depend.mak
!endif

#****************************************************************************
#  merge
#****************************************************************************
merge:  $(FWDDEF) $(FWDOBJ) $(MERGDLL).dll $(MERGLIB)

$(MERGDLL).dll: $(FWDC) $(FWDOBJ) $(FWDDEF) makefile $(MERGDLL).lrf
        $(LINK386) $(LFLAGS386) @$(MERGDLL).lrf

$(FWDDEF): makefile
        @echo Creating file <<$(@B).def

 LIBRARY AUDIOIF INITINSTANCE TERMINSTANCE
 DESCRIPTION '$(FILEVER) FWDDLL - ACPA device dependent MCD Driver'
;BASE = 0x1B310000
 ROBASE = 0x1B1A0000
 BASE   = 0x131A0000
 IMPORTS
         AUDIOIFDriverEntry    = MMPM.235
         VSDEntry              = MMPM.236
         _VSD_InitTerm         = MMPM.276
 EXPORTS
         VSDEntry
         AUDIOIFDriverEntry
<<keep

$(MERGLIB):  $(DLLOBJS) makefile
        if exist $@ del $@
   lib /noi /nol $(MERGLIB) $(DLLOBJS1),$(MERGDLL).lst,$(MERGLIB);
   lib /noi /nol $(MERGLIB) $(DLLOBJS2),$(MERGDLL).lst,$(MERGLIB);
   lib /noi /nol $(MERGLIB) $(DLLOBJS3),$(MERGDLL).lst,$(MERGLIB);
   lib /noi /nol $(MERGLIB) $(DLLOBJS4),$(MERGDLL).lst,$(MERGLIB);
   lib /noi /nol $(MERGLIB) $(DLLOBJS5),$(MERGDLL).lst,$(MERGLIB);

$(FWDOBJ) : $(FWDC) makefile
        @echo $@ > con
        $(CC) $(CFLAGSMG) $(CINC) $(FWDC)

$(MERGDLL).lrf: makefile
        @echo Creating file <<$(@B).lrf
$(FWDOBJS)
$(MERGDLL).dll
$(MERGDLL).map $(LFLAGS386)
MMPMCRTS.lib OS2386.LIB
$(FWDDEF);
<<keep
