# Makefile for Zip, ZipNote, ZipSplit, and Ship
# for Microsoft C 6.00 and MASM 6.00 under OS/2.

# To use, enter "nmake -f makefile.os2".

# The resulting programs can be used under OS/2 protected
# and real mode as well as under MS-DOS!
# A larger stack has to be used for OS/2 because system calls
# use more stack than under DOS, 8k is recommended by Microsoft.

# Note that __STDC__ has to be defined explicitly with C 6.00 when -Ze
# is given, because Microsoft disables __STDC__ when their extensions
# are enabled. This is different to the C 5.10 behaviour.

# If you do not have masm, then add -DNO_ASM to CFLAGS and remove
# im_lm.obj from OBJI

MODEL=-AC
# change this to -AS to use the small model
DEFINES=-D__STDC__ -DOS2 -DEXPORT

# Loop optimization -Ol with C 6.00A is sometimes not safe.
# Use it only for time-critical modules.

CC=cl -nologo
CFLAGS=$(MODEL) -W1 -Zep1 -J -G2s -Ocegit $(DEFINES)
XFLAGS=-Oxaz
LDFLAGS=$(MODEL) -Lp -F 2000
AS=ml -nologo
AFLAGS=-W2 -Zm -Cp $(DEFINES)

# For protect-mode only programs use rem
STRIP=bind -nologo
# STRIP=rem

# variables
# remove im_lm.obj in OBJI if you do not have masm
OBJZ = zip.obj zipfile.obj zipup.obj fileio.obj util.obj tempf.obj \
       shrink.obj globals.obj dir_os2.obj
OBJI = implode.obj im_lmat.obj im_ctree.obj im_bits.obj im_lm.obj

OBJN = zipnote.obj zipfile_.obj zipup_.obj fileio_.obj globals.obj
OBJS = zipsplit.obj zipfile_.obj zipup_.obj fileio_.obj globals.obj

zips:	zip.exe zipnote.exe zipsplit.exe ship.exe

zip.obj:	zip.h ziperr.h tailor.h revision.h zip.c
	$(CC) -c $(CFLAGS) $*.c

zipfile.obj:	zip.h ziperr.h tailor.h zipfile.c
	$(CC) -c $(CFLAGS) $*.c

zipup.obj:	zip.h ziperr.h tailor.h revision.h zipup.c
	$(CC) -c $(CFLAGS) $*.c

fileio.obj:	zip.h ziperr.h tailor.h fileio.c
	$(CC) -c $(CFLAGS) $*.c

util.obj:	zip.h ziperr.h tailor.h util.c
	$(CC) -c $(CFLAGS) $*.c

tempf.obj:	tempf.h tailor.h tempf.c
	$(CC) -c $(CFLAGS) $*.c

shrink.obj:	zip.h ziperr.h tempf.h tailor.h shrink.c
	$(CC) -c $(CFLAGS) $(XFLAGS) $*.c

globals.obj:	zip.h ziperr.h tailor.h globals.c
	$(CC) -c $(CFLAGS) $*.c

dir_os2.obj: dir_os2.c dir_os2.h
	$(CC) -c $(CFLAGS) dir_os2.c

zipnote.obj:	zip.h ziperr.h tailor.h revision.h zipnote.c
	$(CC) -c $(CFLAGS) $*.c

zipsplit.obj: zipsplit.c zip.h ziperr.h tailor.h revision.h
	$(CC) -c $(CFLAGS) $*.c

implode.obj:	implode.h crypt.h ziperr.h tempf.h tailor.h implode.c
	$(CC) -c $(CFLAGS) $(XFLAGS) $*.c

im_lmat.obj:	implode.h crypt.h ziperr.h tempf.h tailor.h im_lmat.c
	$(CC) -c $(CFLAGS) $(XFLAGS) $*.c

im_lm.obj:	im_lm.asm
	$(AS) -c $(AFLAGS) $*.asm
#	masm -ml -t -DOS2 im_lm.asm;   # use this for 5.10

im_ctree.obj:	implode.h crypt.h ziperr.h tempf.h tailor.h im_ctree.c
	$(CC) -c $(CFLAGS) $(XFLAGS) $*.c

im_bits.obj:	implode.h crypt.h ziperr.h tempf.h tailor.h im_bits.c
	$(CC) -c $(CFLAGS) $(XFLAGS) $*.c

zipfile_.obj: zipfile.c zip.h
	$(CC) -c $(CFLAGS) -DUTIL -Fo$@ zipfile.c

zipup_.obj: zipup.c zip.h
	$(CC) -c $(CFLAGS) -DUTIL -Fo$@ zipup.c

fileio_.obj: fileio.c zip.h
	$(CC) -c $(CFLAGS) -DUTIL -Fo$@ fileio.c

zip.exe: $(OBJZ) $(OBJI) zip.def
	$(CC) $(LDFLAGS) $** -o $@
        $(STRIP) $@ -n DOSQFSATTACH

zipnote.exe: $(OBJN) zip.def
	$(CC) $(LDFLAGS) $** -o $@
        $(STRIP) $@

zipsplit.exe: $(OBJS) zip.def
	$(CC) $(LDFLAGS) $** -o $@
        $(STRIP) $@

ship.exe: ship.c ship.def
	$(CC) $(CFLAGS) $(LDFLAGS) $** -o $@
        $(STRIP) $@
