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

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

# ------------- Turbo C++ 3.0 -------------
MODEL=-ml
CFLAGS=-O2 -Z $(MODEL) -I..\zlib
CC=tcc
LD=tcc
LIB=tlib
LDFLAGS=$(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.lib pngtest.exe

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pngtest$(E): pngtest$(O) libpng.lib
	$(CC) $(LDFLAGS) pngtest.obj libpng.lib zlib.lib

# End of makefile for libpng
