# Makefile for libpng
# Borland C++ 4.5 (Note: All modules are compiled in C mode)
# Will work with C++ 4.02 also
# To build the library, do: 
#       "make -fmakefile.bor -DMODEL=m"
# or:   "make -fmakefile.bor -DMODEL=l"
#
# ------------- Borland C++ 4.5 -------------

### Absolutely necessary for this makefile to work
.AUTODEPEND

## Useful user options

# Usually defined in builtins.mak or the environment
# Currently unused.
!ifndef BCROOT
BCROOT=N:\BC45
!endif

# Where zlib.h and zconf.h and zlib.lib are
ZLIB_PATH=..\zlib

!ifndef MODEL
MODEL=l
!endif

#TARGET_CPU=3
# 2 = 286, 3 = 386, etc.
!ifndef TARGET_CPU
TARGET_CPU=2
!endif


# Use this if you don't want Borland's fancy exception handling.
NOEHLIB=noeh$(MODEL).lib

!ifdef DEBUG
CDEBUG=-v
LDEBUG=-v
!else
CDEBUG=
LDEBUG=
!endif

# STACKOFLOW=1
!ifdef STACKOFLOW
CDEBUG=$(CDEBUG) -N
LDEBUG=$(LDEBUG) -N
!endif


## Compiler, linker, and lib stuff
CC=bcc
LD=bcc
LIB=tlib

MODELARG=-m$(MODEL)

# -X- turns on dependency generation in the object file
# -w  sets all warnings on
# -O2 optimize for speed
# -Z  global optimization
CFLAGS=-O2 -Z -X- -w -I$(ZLIB_PATH) -$(TARGET_CPU) $(MODELARG) $(CDEBUG)

# -M  generate map file
LDFLAGS=-M $(LDEBUG)

O=obj

## variables
OBJS = \
 png.$(O) \
 pngerror.$(O) \
 pngmem.$(O) \
 pngpread.$(O) \
 pngset.$(O) \
 pngget.$(O) \
 pngread.$(O) \
 pngrio.$(O) \
 pngrtran.$(O) \
 pngrutil.$(O) \
 pngtrans.$(O) \
 pngwrite.$(O) \
 pngwtran.$(O) \
 pngwio.$(O) \
 pngwutil.$(O)

LIBOBJS = \
 +png.$(O) \
 +pngerror.$(O) \
 +pngmem.$(O) \
 +pngpread.$(O) \
 +pngread.$(O) \
 +pngset.$(O) \
 +pngget.$(O) \
 +pngrio.$(O) \
 +pngrtran.$(O) \
 +pngrutil.$(O) \
 +pngtrans.$(O) \
 +pngwrite.$(O) \
 +pngwtran.$(O) \
 +pngwio.$(O)
 +pngwutil.$(O)

LIBNAME=libpng$(MODEL).lib


## Implicit rules
# Braces let make "batch" calls to the compiler,
# 2 calls instead of 12; space is important.
.c.obj:
	$(CC) $(CFLAGS) -c {$*.c }

.c.exe:
	$(CC) $(CFLAGS) $(LDFLAGS) $*.c


## Major targets
libpng: $(LIBNAME)

pngtest: pngtest$(MODEL).exe

test:
	pngtest$(MODEL)


## Minor Targets

png.obj: png.c
pngset.obj: pngset.c
pngget.obj: pngget.c
pngread.obj: pngread.c
pngpread.obj: pngpread.c
pngrtran.obj: pngrtran.c
pngrutil.obj: pngrutil.c
pngerror.obj: pngerror.c
pngmem.obj: pngmem.c
pngrio.obj: pngrio.c
pngwio.obj: pngwio.c
pngtrans.obj: pngtrans.c
pngwrite.obj: pngwrite.c
pngwtran.obj: pngwtran.c
pngwutil.obj: pngwutil.c


$(LIBNAME): $(OBJS)
	-del $(LIBNAME)
        $(LIB) $(LIBNAME) @&&|
$(LIBOBJS), libpng$(MODEL)
|


pngtest$(MODEL).obj: pngtest.c
	$(CC) $(CFLAGS) -opngtest$(MODEL) -c pngtest.c

pngtest$(MODEL).exe: pngtest$(MODEL).obj
	$(CC) $(MODELARG) $(LDFLAGS) -L$(ZLIB_PATH) pngtest$(MODEL).obj $(LIBNAME) zlib$(MODEL).lib $(NOEHLIB)


# Clean up anything else you want
clean:
	-del *.obj
	-del *.lib
	-del *.lst


# End of makefile for libpng
