///////////////////////////
//
// Version
//
#include <windows.h>

#include <stl/_stlport_version.h>

/* On some evc3/evc4 targets the windows.h doesn't include winver.h or doesn't
 * define needed file version flags, so we redefine them here.
 */
#ifndef VS_FF_DEBUG
#  define VS_FF_DEBUG    0x00000001L
#endif

#ifndef VOS__WINDOWS32
#  define VOS__WINDOWS32 0x00000004L
#endif

#ifndef VFT_DLL
#  define VFT_DLL        0x00000002L
#endif

#ifndef VFT2_UNKNOWN
#  define VFT2_UNKNOWN   0x00000000L
#endif

#define STRINGIZE(X) STRINGIZE_AUX(X)
#define STRINGIZE_AUX(X) #X

#define VERSION_ID _STLPORT_MAJOR, _STLPORT_MINOR, _STLPORT_PATCHLEVEL, 0
#if !defined (__BORLANDC__)
#  define VERSION_STR STRINGIZE(_STLPORT_MAJOR._STLPORT_MINOR._STLPORT_PATCHLEVEL)
#else
/* Borland precompiler happen weird character when trying to transform a
 * macro containing 0 in a character string so we use a workaround for this
 * value. We do not check the major version that will never be 0 again.
 */
#  if (_STLPORT_MINOR == 0)
#    define _STLP_MINOR "0"
#  else
#    define _STLP_MINOR STRINGIZE(_STLPORT_MINOR)
#  endif
#  if (_STLPORT_PATCHLEVEL == 0)
#    define _STLP_PATCH "0"
#  else
#    define _STLP_PATCH STRINGIZE(_STLPORT_PATCHLEVEL)
#  endif
#  define VERSION_STR STRINGIZE(_STLPORT_MAJOR) "." _STLP_MINOR "." _STLP_PATCH "\0"
#endif

#if defined (__GNUC__)
#  define LIB_MOTIF "libstlport"
#else
#  define LIB_MOTIF "stlport"
#endif
#define DLLNAME LIB_MOTIF "." STRINGIZE(_STLPORT_MAJOR) "." STRINGIZE(_STLPORT_MINOR) ".dll\0"
#define DLLNAME2(buildstr) LIB_MOTIF "" STRINGIZE(buildstr) "." STRINGIZE(_STLPORT_MAJOR) "." STRINGIZE(_STLPORT_MINOR) ".dll\0"

VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION_ID
PRODUCTVERSION VERSION_ID
FILEFLAGSMASK 0x3fL

FILEFLAGS VS_FF_DEBUG

FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904B0"
    BEGIN
      VALUE "CompanyName", "STLport Consulting, Inc.\0"
      VALUE "FileDescription", "STLport\0"
      VALUE "FileVersion", VERSION_STR
      VALUE "InternalName", "STLPORT.DLL\0"
      VALUE "LegalCopyright", "Copyright (C) Boris Fomitchev\0"
#if !defined (BUILD)
      VALUE "OriginalFilename", DLLNAME
#else
      VALUE "OriginalFilename", DLLNAME2(BUILD)
#endif
      VALUE "ProductName", "STLport Standard ANSI C++ Library\0"
      VALUE "ProductVersion", VERSION_STR
#if defined (BUILD_INFOS)
      VALUE "SpecialBuild", STRINGIZE(COMP) " " STRINGIZE(BUILD_INFOS) "\0"
#endif
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x409, 1200
  END
END
