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

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

# ------------- Turbo C++ 3.0 -------------
MODEL=-ml
CFLAGS=-O2 -Z $(MODEL) -I..\zlib
CC=tcc
LD=tcc
LIB=tlib
LDFLAGS=$(MODEL)
O=.obj

# 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

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)

# End of makefile for libpng
