home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
ddkx86v5.zip
/
DDKX86
/
SRC
/
DEV
/
ATCOM
/
MAKEFILE
< prev
next >
Wrap
Text File
|
1995-04-14
|
15KB
|
446 lines
#******************************************************************************
# Makefile for the ATCOM directory
#
# SCCSID = @(#)makefile 6.9 92/02/15
#
# IBM/Microsoft Confidential
#
# Copyright (c) IBM Corporation 1987, 1989
# Copyright (c) Microsoft Corporation 1987, 1989
#
# All Rights Reserved
#
#******************************************************************************
#
# ****** 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.
#
#
# When building the AT asynch driver it is possible to do
# so with a number of assembler flags defined. The flags that
# you wish to define should be set up in your environment with
# the 'set' command. For example,
#
# A> set COMFLAGS=-DCISTRICT -DRLPSTRICT
#
# Currently the defined flags are:
#
# - COMDEBUG enables 'int 3' instruction throughtout the driver
# - DEVHLP enables 'int 3' to occur before every DevHlp call
# - ALLSTRICT CISTRICT RPLSTRICT RPTSTRICT RPSTRICT
# - CISTRICT verifies pointers to the ComInfo structure
# - RPLSTRICT verifies pointers to the RP_List structure
# - RPTSTRICT verifies request packets are of the expected type
# - RPSTRICT verifies pointers to request packets
# - MESSAGES ComErr messages will be included in non-debugging
# (messages are always in debugging version)
# - COM2_1F8 make COM2 port address 1F8 (specially modifed COM card)
# so COM1, COM2 and the kernel debugger can all be used.
# This requires a machine with 3 COM boards:
# COM1 - 3F8
# COM2 - 1F8 2F8 with A8 and A9 crossed from bus
# KDB - 2F8 (normal COM2 address)
#
# WARNING: Be sure to do a clean build after changing any flags.
#
#****************************************************************************
# Dot directive definition area (usually just suffixes)
#****************************************************************************
.SUFFIXES: .asm .obj .obd .lst .lsd .def .lnk .lrf .sys .sym .xbj .xbd
#****************************************************************************
# Environment Setup for the component(s).
#****************************************************************************
#
# Compiler Location w/ includes, libs and tools
#
H = ..\..\..\h
INC = ..\..\..\inc
RMINC = ..\resource\rsm_h
DOSINC = ..\..\dos\dosinc
LIB = ..\..\..\lib
RMLIBP = ..\resource\rmcalls
TOOLSPATH =..\..\..\tools
LIBS = $(RMLIBP)\rmcalls.lib $(LIB)\doscalls.lib
DEF = com01.def
DEF2 = com01x.def
#
# 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=.;$(RMINC);$(INC);$(DOSINC);$(H)] || [set LIB=$(LIB)] ||\
[set PATH=$(TOOLSPATH)]
!endif
#
# Compiler/tools Macros
#
AS=masm
CC=cl
IMPLIB=implib
IPF=ipfc
LIBUTIL=lib
LINK=link
MAPSYM=mapsym
RC=rc
#
# Compiler and Linker Options
#
CFLAGS = -W3 -c -Asnw -G2s -Zl -Zp -Ox -nologo
CINC = -I$(H) -I$(RMINC)
!ifndef smp
AFLAGS = -Mx -t $(COMFLAGS)
!else
AFLAGS = -Mx -t $(COMFLAGS) -DSMP
!endif
AINC = -I$(INC) -I$(DOSINC) -I$(MAKEDIR)
LFLAGS = /noe /nod /map /noi /EXEPACK /ALIGN:16 /FAR
RFLAGS = -r
#****************************************************************************
# Set up Macros that will contain all the different dependencies for the
# executables and dlls etc. that are generated.
#****************************************************************************
# WARNING: the order of the objects in the .lnk file is VERY important.
# 'atcom.obj' MUST be first so the device driver headers are the first
# thing in the data segment.
# 'atinit.obj' MUST be next to last and 'ateisai.obj' MUST be last so init
# code can be released memory after initalization.
# Do not change their order unless you thoroughly understand the effects.
# !!!atcom.obj MUST be first, atinit.obj then ateisai.obj MUST be last!!!
OBJ1 = atcom.obj
OBJ2 = atintrpt.obj atsub.obj atioctl.obj atmvdm.obj
OBJ3 = atqueue.obj
OBJ4 = atinit.obj rmhelp.obj ateisai.obj
OBJS = $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4)
# !!!atcom.pbj MUST be first, atinit.pbj then ateisai.pbj MUST be last!!!
PBJ1 = atcom.pbj
PBJ2 = atintrpt.pbj atsub.pbj atioctl.pbj atmvdm.pbj
PBJ3 = atqueue.pbj
PBJ4 = atinit.pbj rmhelp.obj ateisai.pbj
PBJS = $(PBJ1) $(PBJ2) $(PBJ3) $(PBJ4)
# !!!atcom.obd MUST be first, atinit.obd then ateisai.obd MUST be last!!!
OBD1 = atcom.obd
OBD2 = atintrpt.obd atsub.obd atioctl.obd atmvdm.obd
OBD3 = atqueue.obd
OBD4 = atinit.obd rmhelp.obj ateisai.obd
OBDS = $(OBD1) $(OBD2) $(OBD3) $(OBD4)
# !!!atcom.PBD MUST be first, atinit.PBD then ateisai.PBD MUST be last!!!
PBD1 = atcom.PBD
PBD2 = atintrpt.PBD atsub.PBD atioctl.PBD atmvdm.PBD
PBD3 = atqueue.PBD
PBD4 = atinit.PBD rmhelp.obj ateisai.PBD
PBDS = $(PBD1) $(PBD2) $(PBD3) $(PBD4)
# Only atinit.??? changes from OBJ version
XBJ4 = atinit.xbj rmhelp.obj ateisai.obj
XBJS = $(OBJ1) $(OBJ2) $(OBJ3) $(XBJ4)
# Only atinit.??? changes from OBD version
XBD4 = atinit.xbd rmhelp.obj ateisai.obd
XBDS = $(OBD1) $(OBD2) $(OBD3) $(XBD4)
#****************************************************************************
# Setup the inference rules for compiling and assembling source code to
# obejct code.
#****************************************************************************
.c.obj:
$(CC) $(CFLAGS) $(CINC) $*.c
.c.lst:
$(CC) $(CFLAGS) /Fc $(CINC) $*.c
copy $*.cod $*.lst
del $*.cod
.asm.obj:
$(AS) $(AFLAGS) $(AINC) $*.asm;
.asm.pbj:
$(AS) $(AFLAGS) $(AINC) -DPERFVIEW $*.asm,$*.pbj;
.asm.obd:
$(AS) $(AFLAGS) -DCOMDEBUG $(AINC) $*.asm,$*.obd;
.asm.pbd:
$(AS) $(AFLAGS) -DCOMDEBUG -DPERFVIEW $(AINC) $*.asm,$*.pbd;
.asm.lst:
$(AS) -n $(AFLAGS) $(AINC) $*.asm,,$*.lst;
.asm.lsd:
$(AS) -n $(AFLAGS) -DCOMDEBUG $(AINC) $*.asm,,$*.lsd;
.asm.pst:
$(AS) -n $(AFLAGS) $(AINC) -DPERFVIEW $*.asm,,$*.pst;
.asm.psd:
$(AS) -n $(AFLAGS) -DCOMDEBUG -DPERFVIEW $(AINC) $*.asm,,$*.psd;
.asm.xbj:
$(AS) $(AFLAGS) -DCOM2_1F8 $(AINC) $*.asm,$*.xbj;
.asm.xbd:
$(AS) $(AFLAGS) -DCOM2_1F8 -DCOMDEBUG $(AINC) $*.asm,$*.xbd;
.sys.sym:
$(MAPSYM) $*.map
#****************************************************************************
# 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
#
# default, just build retail COMDD
all: com comp
com: com.sys com.sym
comp: comp.sys comp.sym
comd: comd.sys comd.sym
compd: comp.sys compd.sym
comx: comx.sys comx.sym
comdx: comdx.sys comdx.sym
clean:
if exist *.lnk del *.lnk
if exist *.obj del *.obj
if exist *.pbj del *.pbj
if exist *.pbd del *.pbd
if exist *.obd del *.obd
if exist *.xbj del *.xbj
if exist *.xbd del *.xbd
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
#*****************************************************************************
# 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.
#
com01.def: makefile
@echo Make .DEF file
@echo ; *************************************************************************** > com01.def
@echo ; * >> com01.def
@echo ; * IBM/Microsoft Confidential >> com01.def
@echo ; * >> com01.def
@echo ; * Copyright (c) IBM Corporation 1987, 1990 >> com01.def
@echo ; * Copyright (c) Microsoft Corp. 1987, 1990 >> com01.def
@echo ; * All Rights Reserved >> com01.def
@echo ; * >> com01.def
@echo ; *************************************************************************** >> com01.def
@echo LIBRARY COM >> com01.def
@echo PROTMODE >> com01.def
@echo CODE PRELOAD >> com01.def
@echo DATA PRELOAD >> com01.def
@echo SEGMENTS >> com01.def
@echo HSEG CLASS 'RESDATA' >> com01.def
@echo RSEG CLASS 'RESCODE' >> com01.def
@echo DSEG CLASS 'DATA' IOPL >> com01.def
@echo _DATA CLASS 'DATA' IOPL >> com01.def
@echo CONST CLASS 'CONST' IOPL >> com01.def
@echo c_common CLASS 'BSS' IOPL >> com01.def
@echo _BSS CLASS 'BSS' IOPL >> com01.def
@echo CSEG CLASS 'CODE' IOPL >> com01.def
@echo 'RMCode' CLASS 'CODE' IOPL >> com01.def
@echo _TEXT CLASS 'CODE' IOPL >> com01.def
@echo IMPORTS >> com01.def
@echo DOSIODELAYCNT=DOSCALLS.427 >> com01.def
com01x.def: makefile
@echo Make .DEF file
@echo ; *************************************************************************** > com01x.def
@echo ; * >> com01x.def
@echo ; * IBM/Microsoft Confidential >> com01x.def
@echo ; * >> com01x.def
@echo ; * Copyright (c) IBM Corporation 1987, 1990 >> com01x.def
@echo ; * Copyright (c) Microsoft Corp. 1987, 1990 >> com01x.def
@echo ; * All Rights Reserved >> com01x.def
@echo ; * >> com01x.def
@echo ; *************************************************************************** >> com01x.def
@echo LIBRARY COMDMA >> com01x.def
@echo PROTMODE >> com01x.def
@echo CODE PRELOAD >> com01x.def
@echo DATA PRELOAD >> com01x.def
@echo SEGMENTS >> com01x.def
@echo HSEG CLASS 'RESDATA' >> com01x.def
@echo RSEG CLASS 'RESCODE' >> com01x.def
@echo DSEG CLASS 'DATA' IOPL >> com01x.def
@echo _DATA CLASS 'DATA' IOPL >> com01x.def
@echo CONST CLASS 'CONST' IOPL >> com01.def
@echo c_common CLASS 'BSS' IOPL >> com01.def
@echo _BSS CLASS 'BSS' IOPL >> com01.def
@echo CSEG CLASS 'CODE' IOPL >> com01x.def
@echo 'RMCode' CLASS 'CODE' IOPL >> com01.def
@echo _TEXT CLASS 'CODE' IOPL >> com01.def
@echo IMPORTS >> com01x.def
@echo DOSIODELAYCNT=DOSCALLS.427 >> com01x.def
# Standard Non-Debugging COM driver
com.sys: $(OBJS) $(LIBS) $(DEF) makefile
$(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBJ1) +
$(OBJ2) +
$(OBJ3) +
$(OBJ4)
$@
$*.map
$(LIBS)
$(DEF)
<<keep
comp.sys: $(PBJS) $(LIBS) $(DEF) makefile
$(LINK) $(LFLAGS) @<<$(@B).lnk
$(PBJ1) +
$(PBJ2) +
$(PBJ3) +
$(PBJ4)
$@
$*.map
$(LIBS)
$(DEF)
<<keep
#comdma.sys: $(OBJS) $(LIBS) $(DEF2) makefile
# $(LINK) $(LFLAGS) @<<$(@B).lnk
#$(OBJ1) +
#$(OBJ2) +
#$(OBJ3) +
#$(OBJ4)
#$@
#$*.map
#$(LIBS)
#$(DEF2)
#<<keep
#comdma.sym: comdma.sys
# mapsym comdma.map
# move comdma.sy* ..\rucom
# Debugging COM driver
comd.sys: $(OBDS) $(LIBS) $(DEF) makefile
$(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBD1) +
$(OBD2) +
$(OBD3) +
$(OBD4)
$@
$*.map
$(LIBS)
$(DEF)
<<keep
# Debugging COM driver
compd.sys: $(PBDS) $(LIBS) $(DEF) makefile
$(LINK) $(LFLAGS) @<<$(@B).lnk
$(PDBD1) +
$(PDBD2) +
$(PDBD3) +
$(PDBD4)
$@
$*.map
$(LIBS)
$(DEF)
<<keep
# Non-Debugging COM driver with COM2 at 1F8
comx.sys: $(XBJS) $(LIBS) $(DEF) makefile
$(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBJ1) +
$(OBJ2) +
$(OBJ3) +
$(XBJ4)
$@
$*.map
$(LIBS)
$(DEF)
<<keep
# Debugging COM driver with COM2 at 1F8
comdx.sys: $(XBDS) $(LIBS) $(DEF) makefile
$(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBD1) +
$(OBD2) +
$(OBD3) +
$(XBD4)
$@
$*.map
$(LIBS)
$(DEF)
<<keep
#****************************************************************************