# SCCSID = %w% %e%

#/***********************************************************************/
#/*									*/
#/* Driver Name: OS2DASD.DMD - OS/2 DASD Device Manager 		*/
#/*		 -------------------------------------- 		*/
#/*									*/
#/* Source File Name: MAKEFILE						*/
#/*									*/
#/* Descriptive Name: MAKEFILE for the OS/2 DASD Manager		*/
#/*									*/
#/* Function:								*/
#/*									*/
#/*									*/
#/*---------------------------------------------------------------------*/
#/*									*/
#/* Copyright (C) 1992 IBM Corporation					*/
#/*									*/
#/* DISCLAIMER OF WARRANTIES.  The following [enclosed] code is 	*/
#/* provided to you solely for the purpose of assisting you in		*/
#/* the development of your applications. The code is provided		*/
#/* "AS IS", without warranty of any kind. IBM shall not be liable      */
#/* for any damages arising out of your use of this code, even if	*/
#/* they have been advised of the possibility of such damages.		*/
#/*									*/
#/*---------------------------------------------------------------------*/
#/*									*/
#/* Change Log								*/
#/*									*/
#/* Mark    Date      Programmer  Comment				*/
#/* ----    ----      ----------  -------				*/
#/* @nnnn   mm/dd/yy  NNN						*/
#/*									*/
#/*									*/
#/***********************************************************************/

#
#	makefile for OS/2 2.0 Device Independent Disk Driver
#
#	This makefile creates PS/2 386 disk device driver!
#
#	You can optionally generate the listing files for the device driver.
#
#	   make  [option]
#
#	     option:	 list	     -> create listings
#			 os2dasd.dmd -> create PS/2 386 RETAIL driver
#
#	     default:  create os2dasd.dmd
#
# ******  NOTE	******
#
#	 If you are using a SED command with TAB characters, many editors
#	 will expand tabs causing unpredictable results in other programs.
#
#	 Documentation:
#
#	 Using SED command with TABS. Besure to invoke set tab save option
#	 on your editor. If you don't, the program 'xyz' will not work
#	 correctly.
#

#****************************************************************************
#  Dot directive definition area (usually just suffixes)
#****************************************************************************

.SUFFIXES:
.SUFFIXES: .com .sys .exe .obj .mbj .asm .inc .def .lnk .lrf .crf .ref
.SUFFIXES: .lst .sym .map .c .h .lib

#****************************************************************************
#  Environment Setup for the component(s).
#****************************************************************************

#
# Conditional Setup Area and User Defined Macros
#

#
# Compiler Location w/ includes, libs and tools
#

DOSINC = ..\..\..\dos\dosinc
INIT   = ..\..\..\dos\init
TASK   = ..\..\..\dos\task
INC    = ..\..\..\..\inc
H      = ..\..\..\..\h
LIB    = ..\..\..\..\lib
TOOLSPATH = ..\..\..\..\tools
DISKH  = ..\diskh
RMH    = ..\..\resource\rsm_h
DHLIB  = ..\devhelp
RMLIB  = ..\..\resource\rmcalls

#
# Since the compiler/linker and other tools use environment
# variables ( INCLUDE, LIB, etc ) in order to get the location of files,
# the following line will check the environment for the LIFE of the
# makefile and will be specific to this set of instructions. All MAKEFILES
# are requested to use this format to insure that they are using the correct
# level of files and tools.
#

!if [set INCLUDE=$(DOSINC);$(INIT);$(TASK);$(INC);$(H);$(RMH)] || \
   [set LIB=$(LIB);$(DHLIB)] || [set PATH=$(TOOLSPATH);$(DK_TOOLS)]
!endif


#
# Compiler/tools Macros
#

AS=masm
CC=cl
IMPLIB=implib
IPF=ipfc
LIBUTIL=lib
LINK=link
MAPSYM=mapsym
RC=rc

#
# Compiler and Linker Options
#

AFLAGS = -MX -T -Z $(ENV)
AINC   = -I. -I$(DOSINC) -I$(INIT) -I$(TASK) -I$(INC)
CINC   = -I$(H) -I$(DISKH) -I$(MAKEDIR)
#CFLAGS = /c /Fc /Zp /G2s /Answ /NT StaticCode $(ENV)
CFLAGS = /c /Zp /G2s /Answ /nologo $(ENV) /Osaceglnwzi
#CFLAGS = /c /Zp /G2s /Answ /nologo $(ENV) /Oi
#CFLAGS = /c /Zp /G2s /Answ /nologo $(ENV) /Odi /Zi
LFLAGS = /map /nod /exepack /packd /a:16 /far
#LFLAGS = /map /nod /exepack /packd /a:16 /far /co
RFLAGS = -r

LIBS  =  $(DHLIB)\dhcalls.lib $(RMLIB)\rmcalls.lib
DEF02 =  danidasd.def

#****************************************************************************
# Set up Macros that will contain all the different dependencies for the
# executables and dlls etc. that are generated.
#****************************************************************************

#
#
#
OBJ1 =	dmsegs.obj
OBJ2 =	dmheader.obj dmbpb.obj dmstrat1.obj dmstrat2.obj dmqueue.obj \
	dmiorb.obj dmcsubr.obj dmasubr.obj dmioctl.obj \
	dmfault.obj dmdata.obj
OBJ3 =	..\libobj\afuldiv.obj ..\libobj\afulrem.obj ..\libobj\anlmul.obj \
	..\libobj\anuldiv.obj ..\libobj\anulrem.obj ..\libobj\anlshl.obj \
	..\libobj\anulshr.obj ..\libobj\anfaulsh.obj
OBJ4 =	dmtrace.obj dminit.obj

#
#	LIST Files
#
LIST= dmsegs.lst dmheader.lst dmbpb.lst dmstrat1.lst dmstrat2.lst dmqueue.lst \
      dmiorb.lst dmcsubr.lst dmasubr.lst dmioctl.lst dmtrace.lst \
      dmfault.lst dmdata.lst \
      dminit.lst


OBJS = $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4)

#****************************************************************************
#   Setup the inference rules for compiling and assembling source code to
#   obejct code.
#****************************************************************************


.asm.obj:
	$(AS) $(AFLAGS) $(AINC) $*.asm;

.asm.mbj:
	$(AS) $(AFLAGS) -DMMIOPH $(AINC) $*.asm $*.mbj;

.asm.lst:
	$(AS) -l -n $(AFLAGS) $(AINC) $*.asm;

.c.obj:
	$(CC) $(CFLAGS) $(CINC) $*.c

.c.lst:
	$(CC) $(CFLAGS) /Fc $(CINC) $*.c
	copy $*.cod $*.lst
	del $*.cod


#****************************************************************************
#   Target Information
#****************************************************************************
#
# This is a very important step. The following small amount of code MUST
# NOT be removed from the program. The following directive will do
# dependency checking every time this component is built UNLESS the
# following is performed:
#		     A specific tag is used -- ie. all
#
# This allows the developer as well as the B & I group to perform incremental
# build with a degree of accuracy that has not been used before.
# There are some instances where certain types of INCLUDE files must be
# created first. This type of format will allow the developer to require
# that file to be created first. In order to achive that, all that has to
# be done is to make the DEPEND.MAK tag have your required target. Below is
# an example:
#
#    depend.mak:   { your file(s) } dephold
#
# Please DON'T remove the following line
#

##!include	"$(H)\version.mak"
_VENDOR  = DANI
_VERSION = 1.4
_FIXLEVEL = 4c
FILEVER = @^#$(_VENDOR):$(_VERSION)^#@^#^#1^#^# $(TIMESTAMP)::::$(_FIXLEVEL)::@@

#
# Should be the default tag for all general processing
#

all:	DaniDASD.DMD

list: $(LIST)

clean:
	if exist *.lnk	del *.lnk
	if exist *.obj	del *.obj
	if exist *.mbj	del *.mbj
	if exist *.map	del *.map
	if exist *.old	del *.old
	if exist *.lst	del *.lst
	if exist *.lsd	del *.lsd
	if exist *.sym	del *.sym
	if exist *.sys	del *.sys
	if exist *.dmd	del *.dmd
	if exist *.tff	del *.tff




#*****************************************************************************
#   Specific Description Block Information
#*****************************************************************************

# This section would only be for specific direction as to how to create
# unique elements that are necessary to the build process. This could
# be compiling or assembling, creation of DEF files and other unique
# files.
# If all compiler and assembly rules are the same, use an inference rule to
# perform the compilation.
#

DaniDASD.DMD:  $(OBJS) $(LIBS) makefile
	Rem Create DEF file <<$(DEF02)
LIBRARY OS2DASD

DESCRIPTION '$(FILEVER)  OS/2 DASD Device Manager'

PROTMODE

SEGMENTS
 _DATA		CLASS 'DATA'
 CONST		CLASS 'CONST'
 _BSS		CLASS 'BSS'
 'Code'         CLASS 'CODE' IOPL
 _TEXT		CLASS 'CODE' IOPL
 RMCode 	CLASS 'CODE' IOPL
 SwapCode	CLASS 'CODE' IOPL

<<keep
	$(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBJ1) +
$(OBJ2) +
$(OBJ3) +
$(OBJ4)
$*.dmd
$*.map
$(LIBS)
$(DEF02)
<<keep
	     $(MAPSYM) $*.map
#	      trcust $*.tsf



#****************************************************************************

