# Makefile for libpng
# TurboC/C++ (Note: All modules are compiled in C mode)

# To use, do "make -fmakefile.tc3"

# ----- Turbo C 3.00 (can be modified to work with earlier versions) -----

MODEL=l
CFLAGS=-O2 -Z -m$(MODEL) -I..\zlib
#CFLAGS=-D_NO_PROTO -O2 -Z -m$(MODEL) -I..\zlib  # Turbo C older than 3.00
CC=tcc
LD=tcc
LIB=tlib
LDFLAGS=-m$(MODEL) -L..\zlib
O=.obj
E=.exe

# variables
OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O)
OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O)
OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O)
OBJSL1 = +png$(O) +pngset$(O) +pngget$(O) +pngrutil$(O) +pngtrans$(O)
OBJSL2 = +pngwutil$(O) +pngmem$(O) +pngpread$(O) +pngread$(O) +pngerror$(O)
OBJSL3 = +pngwrite$(O) +pngrtran$(O) +pngwtran$(O) +pngrio$(O) +pngwio$(O)

all: libpng$(MODEL).lib pngtest$(E)

pngtest: pngtest$(E)

test: pngtest$(E)
	pngtest$(E)

png$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngset$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngget$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngread$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngpread$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngrtran$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngrutil$(O): png.h pngconf.h pngpriv.h
		  $(CC) -c $(CFLAGS) $*.c

pngerror$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngmem$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngrio$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngwio$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngtest$(O): png.h pngconf.h
	$(CC) -c $(CFLAGS) $*.c

pngtrans$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngwrite$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngwtran$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

pngwutil$(O): png.h pngconf.h pngpriv.h
	$(CC) -c $(CFLAGS) $*.c

libpng$(MODEL).lib: $(OBJS1) $(OBJS2) $(OBJS3)
	$(LIB) libpng$(MODEL) +$(OBJSL1)
	$(LIB) libpng$(MODEL) +$(OBJSL2)
	$(LIB) libpng$(MODEL) +$(OBJSL3)

pngtest$(E): pngtest$(O) libpng$(MODEL).lib
	$(LD) $(LDFLAGS) pngtest.obj libpng$(MODEL).lib zlib_$(MODEL).lib

# End of makefile for libpng
