// Project file for libpng (static)
// IBM VisualAge/C++ version 4.0 or later
// Copyright (C) 2000 Cosmin Truta
//
// This code is released under the libpng license.
// For conditions of distribution and use, see the disclaimer
// and license in png.h
//
// Notes:
//   All modules are compiled in C mode
//   Tested with IBM VAC++ 4.0 under Win32
//   Expected to work with IBM VAC++ 4.0 or later under OS/2 and Win32
//   Can be easily adapted for IBM VAC++ 4.0 or later under AIX

option incl(searchpath, "../zlib"), opt(level, "2"),
 link(libsearchpath, "../zlib")
{
   target type(lib) "libpng.lib"
   {
      source type(c) "png.c"
      source type(c) "pngerror.c"
      source type(c) "pngget.c"
      source type(c) "pngmem.c"
      source type(c) "pngpread.c"
      source type(c) "pngread.c"
      source type(c) "pngrio.c"
      source type(c) "pngrtran.c"
      source type(c) "pngrutil.c"
      source type(c) "pngset.c"
      source type(c) "pngtrans.c"
      source type(c) "pngwio.c"
      source type(c) "pngwrite.c"
      source type(c) "pngwtran.c"
      source type(c) "pngwutil.c"
   }
}

option incl(searchpath, "../zlib"), opt(level, "2"),
 link(libsearchpath, "../zlib")
{
   target type(exe) "pngtest.exe"
   {
      source type(c) "pngtest.c"
      source type(lib) "libpng.lib"
      source type(lib) "zlib.lib"
   }
}
