// Project file for libpng (static)
// IBM VisualAge/C++ version 4.0 or later
// 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:
//   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"
   }
}
