#
# 5799-WZQ (C) COPYRIGHT IBM CORPORATION 1988
# LICENSED MATERIALS - PROPERTY OF IBM
# REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083
#
# USC-ACSC Monitor makefile
# Copyright University of Southern California, 1988
# $Header:makefile 12.2$
# $ACIS:makefile 12.2$
# $Source: /ibm/acis/usr/sys/os2code/RCS/makefile,v $

LFLAGS=/ST:5000 /MAP 
P=../pc_code
O=obj
# put the following if compiling in a different directory than this one
#S=../os2code/
#INCL=-I. -I$(S) -I$(P)
# use this if same directory
S=
INCL=-I. -I$(P)

CFLAGS= $(INCL) -AS -Zd -Zi -DDEBUG -DCONFIG_DEBUG -DOS2_CODE
OS2LIB=os2lib
LIBS=$(OS2LIB)+slibce+doscalls
LIB=lib

CC=cl 
ASM=masm
LINK=link

PGM=unix.exe

DRVOBJ= kbd.$(O) vga.$(O) clock.$(O) mouse.$(O) dio.$(O) badblock.$(O) lan.$(O)
PCIFOBJ= rbinit.$(O) pcifmove.$(O) rompint.$(O) wconfig.$(O) maskint.$(O)
OTHEROBJ= loadboot.$(O) os2lib.$(O) as.$(O) rbutils.$(O) ub.$(O) mc.$(O) pos.$(O)
OBJS=os2data.$(O) unix.$(O) fci.$(O) $(DRVOBJ) $(OTHEROBJ) $(PCIFOBJ)

CSOURCE=$(S)badblock.c $(S)clock.c $(S)dio.c $(S)kbd.c \
$(S)loadboot.c $(S)maskint.c $(S)mouse.c $(S)pcifmove.c \
$(S)rbinit.c $(S)rompint.c $(S)vga.c $(S)unix.c $(S)os2data.c \
$(S)os2lib.c $(S)wconfig.c $(S)ub.c $(S)lan.c $(S)mc.c

CHEADER= dio.h dosfile.h kbd.h os2.h pctype.h profile.h sem.h \
thread.h os2data.h os2ioctl.h lan.h ub.h

ASOURCE=as.asm 

# following is to allow unix to automatically build under
# OS/2. We arrange to have 'all' set so that OS/2 never
# attempts to do the following; if files are edited under
# OS/2 the file "all" may need to be touched.

all: $(CSOURCE) $(CHEADER) $(ASOURCE) Makefile sh.bat sh.cmd unix.def fci.obj
	echo $?
	sh $(P)/make.dos $(PGM) $?
	echo > all

sh.bat:
	cp $(P)/sh.bat .

# OS/2 mode used '.cmd' not '.bat' files.
sh.cmd:
	cp $(P)/sh.bat sh.cmd

pos.$(O): $(P)/pos.c
	$(CC) -c $(CFLAGS) $(P)/$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

ub.$(O): $(S)ub.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

mc.$(O): $(S)mc.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

mouse.$(O): $(S)mouse.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

maskint.$(O): $(S)maskint.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

rompint.$(O): $(S)rompint.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

clock.$(O): $(S)clock.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

kbd.$(O): $(S)kbd.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

vga.$(O): $(S)vga.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

lan.$(O): $(S)lan.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

dio.$(O): $(S)dio.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

badblock.$(O): $(S)badblock.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

wconfig.$(O): $(S)wconfig.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

loadboot.$(O): $(S)loadboot.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

rbinit.$(O): $(S)rbinit.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

rbutils.$(O): $(P)/rbutils.c
	$(CC) -c $(CFLAGS) $(P)/$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

os2lib.$(O): $(S)os2lib.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

pcifmove.$(O): $(S)pcifmove.c
	$(CC) -c $(CFLAGS) $(S)$*.c
	$(LIB) $(OS2LIB) -+ $*.$(O);

# we hardwire the directory name here as masm doesn't know about /'s
# in pathnames.
# We do not include as.asm into the library because of the IOPL segment
as.$(O): $(S)as.asm
	$(ASM) ..\os2code\as.asm;

unix.$(O): $(S)unix.c
	$(CC) -c $(CFLAGS) $(S)unix.c

version.$(O):	$(S)version.c
	$(CC) -c $(CFLAGS) $(S)version.c

os2data.$(O): $(S)os2data.c
	$(CC) -c $(CFLAGS) $(S)os2data.c

$(PGM):	$(OBJS) version.$(O)
	$(LINK) $(LFLAGS) os2data.$(O)+unix.$(O)+version.$(O)+as.obj+fci.obj,$@,,$(LIBS),unix;

#ifdef unix
# following goes away for OS/2 makefile
Makefile: makefile
	rm -f Makefile
	echo "# Note: this file has been processed by unifdef under unix" > Makefile
	-unifdef -Uunix <makefile >>Makefile

tags:
	ctags $(CSOURCE) $(CHEADER) $P/rb.h $P/pcparam.h $P/vga.h
# this doesn't really cross-compile, it just tests to see there are syntax
# errors etc.
DOSINCL=/sys/pc.h
clean:
	rm -f *.o

XCC=hc
xcompile:
	touch as.o
	make CC=$(XCC) LIB=':' O=o 'CFLAGS=$(INCL) -I$(DOSINCL) -DDEBUG -DCONFIG_DEBUG -DOS2_CODE -Dfar= -Dnear= -Dhuge= -Dpascal= -DNO_EXT_KEYS' $(PGM) 

depend:
# following assumes that PS/2's OS/2 and include files have been copied into
# $(DOSINCL) and that S=../os2code/ was specified
	test "$S" != "" # insure that S is set
	cmd=`(cc -M $(INCL) -I$(DOSINCL) -DOS2_CODE $(CSOURCE) | \
	grep -v /sys/pc.h | \
	sed -e 's;\.o:;.$(O):;' -e 's;$(P);$$(P);g' -e 's;$(S);$$(S);g' -e 's; ./; $$(S);g' ; echo " " ) | \
	awk -F: ' $$1 == prev { names = names $$2 ; next } { if ( names != "") print "/" prev ":/s;:.*;:" , names ";"; names = $$2; prev = $$1; } '`; sed -e "$$cmd" makefile >makefile.new
	mv makefile makefile.old; mv makefile.new makefile

#endif 

