# Makefile for Independent JPEG Group's software

# This makefile is for Microsoft Visual C++ on Windows NT (and 95?).
# It builds the IJG library as a statically linkable library (.LIB),
# and builds the sample applications as console-mode apps.
# Thanks to Xingong Chang, Raymond Everly and others.

# Read installation instructions before saying "nmake" !!
# To build an optimized library without debug info, say "nmake nodebug=1".

# Put here the object file name for the correct system-dependent memory
# manager file.  For NT we suggest jmemnobs.obj, which expects the OS to
# provide adequate virtual memory.
SYSDEPMEM= $D\jmemnobs.obj

# miscellaneous OS-dependent stuff
# file deletion command
!if "$(RM)" == ""
RM= erase
!endif

# End of configurable options.

# source files: JPEG library proper
LIBSOURCES= jcapimin.c \
        jcapistd.c \
        jccoefct.c \
        jccolor.c \
        jcdctmgr.c \
        jchuff.c \
        jcinit.c \
        jcmainct.c \
        jcmarker.c \
        jcmaster.c \
        jcomapi.c \
        jcparam.c \
        jcphuff.c \
        jcprepct.c \
        jcsample.c \
        jctrans.c \
        jdapimin.c \
        jdapistd.c \
        jdatadst.c \
        jdatasrc.c \
        jdcoefct.c \
        jdcolor.c \
        jddctmgr.c \
        jdhuff.c \
        jdinput.c \
        jdmainct.c \
        jdmarker.c \
        jdmaster.c \
        jdmerge.c \
        jdphuff.c \
        jdpostct.c \
        jdsample.c \
        jdtrans.c \
        jerror.c \
        jfdctflt.c \
        jfdctfst.c \
        jfdctint.c \
        jidctflt.c \
        jidctfst.c \
        jidctint.c \
        jidctred.c \
        jquant1.c \
        jquant2.c \
        jutils.c \
        jmemmgr.c

# memmgr back ends: compile only one of these into a working library
SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c

# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c

SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)

# files included by source files
INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h

# documentation, test, and support files
DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
        coderules.doc filelist.doc change.log

MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
        makvms.opt

CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
        jconfig.vms

CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
        testimgp.jpg
DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)

# library object files common to compression and decompression
COMOBJECTS= $D\jcomapi.obj $D\jutils.obj $D\jerror.obj $D\jmemmgr.obj $(SYSDEPMEM)

# compression library object files
CLIBOBJECTS= $D\jcapimin.obj \
             $D\jcapistd.obj \
             $D\jctrans.obj \
             $D\jcparam.obj \
             $D\jdatadst.obj \
             $D\jcinit.obj \
             $D\jcmaster.obj \
             $D\jcmarker.obj \
             $D\jcmainct.obj \
             $D\jcprepct.obj \
             $D\jccoefct.obj \
             $D\jccolor.obj \
             $D\jcsample.obj \
             $D\jchuff.obj \
             $D\jcphuff.obj \
             $D\jcdctmgr.obj \
             $D\jfdctfst.obj \
             $D\jfdctflt.obj \
             $D\jfdctint.obj

# decompression library object files
DLIBOBJECTS= $D\jdapimin.obj \
             $D\jdapistd.obj \
             $D\jdtrans.obj \
             $D\jdatasrc.obj \
             $D\jdmaster.obj \
             $D\jdinput.obj \
             $D\jdmarker.obj \
             $D\jdhuff.obj \
             $D\jdphuff.obj \
             $D\jdmainct.obj \
             $D\jdcoefct.obj \
             $D\jdpostct.obj \
             $D\jddctmgr.obj \
             $D\jidctfst.obj \
             $D\jidctflt.obj \
             $D\jidctint.obj \
             $D\jidctred.obj \
             $D\jdsample.obj \
             $D\jdcolor.obj \
             $D\jquant1.obj \
             $D\jquant2.obj \
             $D\jdmerge.obj
# These objectfiles are included in libjpeg.lib
OBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)

# object files for sample applications (excluding library files)
COBJECTS= $D\cjpeg.obj \
          $D\rdppm.obj \
          $D\rdgif.obj \
          $D\rdtarga.obj \
          $D\rdrle.obj \
          $D\rdbmp.obj \
          $D\rdswitch.obj \
          $D\cdjpeg.obj

DOBJECTS= $D\djpeg.obj \
          $D\wrppm.obj \
          $D\wrgif.obj \
          $D\wrtarga.obj \
          $D\wrrle.obj \
          $D\wrbmp.obj \
          $D\rdcolmap.obj \
          $D\cdjpeg.obj

TROBJECTS= $D\jpegtran.obj \
           $D\rdswitch.obj \
           $D\cdjpeg.obj \
           $D\transupp.obj

!if "$(FINAL)" == "1"
LIBTARGET=..\..\lib\jpeg.lib
!else if "$(FINAL)" == "hybrid"
LIBTARGET=..\..\lib\jpegh.lib
!else
LIBTARGET=..\..\lib\jpegd.lib
!endif

# Note: we have to put this first, to override the default definition
# which doesn't work because there are too many files on the command line.
# This means that we must explicitly use the 'all' target when making
# jpeg.lib, because of the ordering of targets.

defaulttarget:
    echo Please use the 'all' target for this makefile.


# Pull in standard variable definitions

!include ..\makelib.vc