# Makefile for libpng (static)
# IBM C version 3.x for Win32 and OS/2
# Copyright (C) 2006 Glenn Randers-Pehrson
# Copyright (C) 2000 Cosmin Truta
#
# This code is released under the zlib/libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
#
# Notes:
#   Derived from makefile.std
#   All modules are compiled in C mode
#   Tested under Win32, expected to work under OS/2
#   Can be easily adapted for IBM VisualAge/C++ for AIX

# Location of the zlib library and include files
ZLIBINC = ../zlib
ZLIBLIB = ../zlib

# Compiler, linker, lib and other tools
CC = icc
LD = ilink
AR = ilib
RM = del

CFLAGS = -I$(ZLIBINC) -Mc -O2 -W3
LDFLAGS =

# File extensions
O=.obj
A=.lib
E=.exe

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

LIBS = libpng$(A) $(ZLIBLIB)/zlib$(A)

# Targets
all: libpng$(A) pngtest$(E)

libpng$(A): $(OBJS)
	$(AR) -out:$@ $(OBJS)

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

pngtest: pngtest$(E)

pngtest$(E): pngtest$(O) libpng$(A)
	$(LD) $(LDFLAGS) pngtest$(O) $(LIBS)

clean:
	$(RM) *$(O)
	$(RM) libpng$(A)
	$(RM) pngtest$(E)
	$(RM) pngout.png

png$(O):      png.h pngconf.h pngpriv.h
pngerror$(O): png.h pngconf.h pngpriv.h
pngget$(O):   png.h pngconf.h pngpriv.h
pngmem$(O):   png.h pngconf.h pngpriv.h
pngpread$(O): png.h pngconf.h pngpriv.h
pngread$(O):  png.h pngconf.h pngpriv.h
pngrio$(O):   png.h pngconf.h pngpriv.h
pngrtran$(O): png.h pngconf.h pngpriv.h
pngrutil$(O): png.h pngconf.h pngpriv.h
pngset$(O):   png.h pngconf.h pngpriv.h
pngtrans$(O): png.h pngconf.h pngpriv.h
pngwio$(O):   png.h pngconf.h pngpriv.h
pngwrite$(O): png.h pngconf.h pngpriv.h
pngwtran$(O): png.h pngconf.h pngpriv.h
pngwutil$(O): png.h pngconf.h pngpriv.h

pngtest$(O):  png.h pngconf.h pngpriv.h
