# Makefile for Independent JPEG Group's software

# This makefile is for Microsoft C for MS-DOS, version 5.x.

# Read SETUP instructions before saying "make" !!

# Microsoft's brain-damaged version of make uses nonstandard syntax (a blank
# line is needed to terminate a command list) and it simply scans the rules
# in order, rather than doing a true dependency-tree walk.  Furthermore,
# expanded command lines can't exceed 128 chars (this is a DOS bug, not
# make's fault); so we can't just name all the objectfiles in the link steps.
# Instead we shove each objectfile into a library as it is made, and link
# from the library.  The objectfiles are also kept separately as timestamps.

# You may need to adjust these cc options:
CFLAGS=  /AS /I. /W3 /Oail /Gs   # NB: /Gs turns off stack oflo checks
LDFLAGS= /Fm /F 2000             # /F hhhh  sets stack size (in hex)
# In particular:
#   Add /DMSDOS if your compiler doesn't automatically #define MSDOS.
#   Add /DMEM_STATS to enable gathering of memory usage statistics.
# You might also want to add /G2 if you have an 80286, etc.


# source files (independently compilable files)
SOURCES= jbsmooth.c jcarith.c jccolor.c jcdeflts.c jcexpand.c jchuff.c \
        jcmain.c jcmaster.c jcmcu.c jcpipe.c jcsample.c jdarith.c jdcolor.c \
        jddeflts.c jdhuff.c jdmain.c jdmaster.c jdmcu.c jdpipe.c jdsample.c \
        jerror.c jquant1.c jquant2.c jfwddct.c jrevdct.c jutils.c jmemmgr.c \
        jrdjfif.c jrdgif.c jrdppm.c jrdrle.c jrdtarga.c jwrjfif.c jwrgif.c \
        jwrppm.c jwrrle.c jwrtarga.c
# virtual source files (not present in distribution file, see SETUP)
VIRTSOURCES= jmemsys.c
# system-dependent implementations of virtual source files
SYSDEPFILES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemdos.h \
        jmemdosa.asm
# files included by source files
INCLUDES= jinclude.h jconfig.h jpegdata.h jversion.h jmemsys.h
# documentation, test, and support files
DOCS= README SETUP USAGE CHANGELOG cjpeg.1 djpeg.1 architecture codingrules
MAKEFILES= makefile.ansi makefile.unix makefile.manx makefile.sas \
        makcjpeg.st makdjpeg.st makljpeg.st makefile.mc5 makefile.mc6 \
        makefile.bcc makefile.mms makefile.vms makvms.opt
OTHERFILES= ansi2knr.c ckconfig.c example.c
TESTFILES= testorig.jpg testimg.ppm testimg.gif testimg.jpg
DISTFILES= $(DOCS) $(MAKEFILES) $(SOURCES) $(SYSDEPFILES) $(INCLUDES) \
        $(OTHERFILES) $(TESTFILES)
# objectfiles common to cjpeg and djpeg
COMOBJECTS= jutils.obj jerror.obj jmemmgr.obj jmemsys.obj jmemdosa.obj
# compression objectfiles
CLIBOBJECTS= jcmaster.obj jcdeflts.obj jcarith.obj jccolor.obj jcexpand.obj \
        jchuff.obj jcmcu.obj jcpipe.obj jcsample.obj jfwddct.obj \
        jwrjfif.obj jrdgif.obj jrdppm.obj jrdrle.obj jrdtarga.obj
COBJECTS= jcmain.obj $(CLIBOBJECTS) $(COMOBJECTS)
# decompression objectfiles
DLIBOBJECTS= jdmaster.obj jddeflts.obj jbsmooth.obj jdarith.obj jdcolor.obj \
        jdhuff.obj jdmcu.obj jdpipe.obj jdsample.obj jquant1.obj \
        jquant2.obj jrevdct.obj jrdjfif.obj jwrgif.obj jwrppm.obj \
        jwrrle.obj jwrtarga.obj
DOBJECTS= jdmain.obj $(DLIBOBJECTS) $(COMOBJECTS)
# These objectfiles are included in libjpeg.lib
LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)


# inference rule used for all compilations except jcmain.c, jdmain.c
# notice that objectfile is also inserted into libjpeg.lib
.c.obj:
	cl $(CFLAGS) /c $*.c
	lib libjpeg -+$*.obj;

# inference rule for assembly code
.asm.obj:
	masm /mx $*;
	lib libjpeg -+$*.obj;


jbsmooth.obj : jbsmooth.c jinclude.h jconfig.h jpegdata.h

jcarith.obj : jcarith.c jinclude.h jconfig.h jpegdata.h

jccolor.obj : jccolor.c jinclude.h jconfig.h jpegdata.h

jcdeflts.obj : jcdeflts.c jinclude.h jconfig.h jpegdata.h

jcexpand.obj : jcexpand.c jinclude.h jconfig.h jpegdata.h

jchuff.obj : jchuff.c jinclude.h jconfig.h jpegdata.h

jcmain.obj : jcmain.c jinclude.h jconfig.h jpegdata.h jversion.h
	cl $(CFLAGS) /c $*.c

jcmaster.obj : jcmaster.c jinclude.h jconfig.h jpegdata.h

jcmcu.obj : jcmcu.c jinclude.h jconfig.h jpegdata.h

jcpipe.obj : jcpipe.c jinclude.h jconfig.h jpegdata.h

jcsample.obj : jcsample.c jinclude.h jconfig.h jpegdata.h

jdarith.obj : jdarith.c jinclude.h jconfig.h jpegdata.h

jdcolor.obj : jdcolor.c jinclude.h jconfig.h jpegdata.h

jddeflts.obj : jddeflts.c jinclude.h jconfig.h jpegdata.h

jdhuff.obj : jdhuff.c jinclude.h jconfig.h jpegdata.h

jdmain.obj : jdmain.c jinclude.h jconfig.h jpegdata.h jversion.h
	cl $(CFLAGS) /c $*.c

jdmaster.obj : jdmaster.c jinclude.h jconfig.h jpegdata.h

jdmcu.obj : jdmcu.c jinclude.h jconfig.h jpegdata.h

jdpipe.obj : jdpipe.c jinclude.h jconfig.h jpegdata.h

jdsample.obj : jdsample.c jinclude.h jconfig.h jpegdata.h

jerror.obj : jerror.c jinclude.h jconfig.h jpegdata.h

jquant1.obj : jquant1.c jinclude.h jconfig.h jpegdata.h

jquant2.obj : jquant2.c jinclude.h jconfig.h jpegdata.h

jfwddct.obj : jfwddct.c jinclude.h jconfig.h jpegdata.h

jrevdct.obj : jrevdct.c jinclude.h jconfig.h jpegdata.h

jutils.obj : jutils.c jinclude.h jconfig.h jpegdata.h

jmemmgr.obj : jmemmgr.c jinclude.h jconfig.h jpegdata.h jmemsys.h

jrdjfif.obj : jrdjfif.c jinclude.h jconfig.h jpegdata.h

jrdgif.obj : jrdgif.c jinclude.h jconfig.h jpegdata.h

jrdppm.obj : jrdppm.c jinclude.h jconfig.h jpegdata.h

jrdrle.obj : jrdrle.c jinclude.h jconfig.h jpegdata.h

jrdtarga.obj : jrdtarga.c jinclude.h jconfig.h jpegdata.h

jwrjfif.obj : jwrjfif.c jinclude.h jconfig.h jpegdata.h

jwrgif.obj : jwrgif.c jinclude.h jconfig.h jpegdata.h

jwrppm.obj : jwrppm.c jinclude.h jconfig.h jpegdata.h

jwrrle.obj : jwrrle.c jinclude.h jconfig.h jpegdata.h

jwrtarga.obj : jwrtarga.c jinclude.h jconfig.h jpegdata.h

jmemsys.obj : jmemsys.c jinclude.h jconfig.h jpegdata.h jmemsys.h

jmemdosa.obj : jmemdosa.asm


cjpeg.exe: $(COBJECTS)
	cl /Fecjpeg.exe jcmain.obj libjpeg.lib $(LDFLAGS)

djpeg.exe: $(DOBJECTS)
	cl /Fedjpeg.exe jdmain.obj libjpeg.lib $(LDFLAGS)
