#include "api_version.h"

#define API_COPYRIGHT "Copyright 2000-2005 The Apache Software " \
                      "Foundation or its licensors, as applicable."

#define API_LICENSE "Licensed under the Apache License, Version 2.0 " \
                    "(the ""License""); you may not use this file except " \
                    "in compliance with the License.  You may obtain a " \
                    "copy of the License at\r\n\r\n" \
                    "http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n" \
                    "Unless required by applicable law or agreed to in " \
                    "writing, software distributed under the License is " \
                    "distributed on an ""AS IS"" BASIS, WITHOUT " \
                    "WARRANTIES OR CONDITIONS OF ANY KIND, either " \
                    "express or implied.  See the License for the " \
                    "specific language governing permissions and " \
                    "limitations under the License."

#define API_DLL_BASENAME "libapriconv-" API_STRINGIFY(API_MAJOR_VERSION)


1 VERSIONINFO
 FILEVERSION API_VERSION_STRING_CSV,0
 PRODUCTVERSION API_VERSION_STRING_CSV,0
 FILEFLAGSMASK 0x3fL
#if defined(API_IS_DEV_VERSION)
#if defined(_DEBUG)
 FILEFLAGS 0x03L
#else
 FILEFLAGS 0x02L
#endif
#else
#if defined(_DEBUG)
 FILEFLAGS 0x01L
#else
 FILEFLAGS 0x00L
#endif
#endif
#if defined(WINNT) || defined(WIN64)
 FILEOS 0x40004L
#else
 FILEOS 0x4L
#endif
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904b0"
    BEGIN
    VALUE "Comments", API_LICENSE "\0"
      VALUE "CompanyName", "Apache Software Foundation\0"
      VALUE "FileDescription", "Apache Portable Runtime Library\0"
      VALUE "FileVersion", API_VERSION_STRING "\0"
      VALUE "InternalName", API_DLL_BASENAME "\0"
      VALUE "LegalCopyright", API_COPYRIGHT "\0"
      VALUE "OriginalFilename", API_DLL_BASENAME ".dll\0"
      VALUE "ProductName", "Apache Portable Runtime Project\0"
      VALUE "ProductVersion", API_VERSION_STRING "\0"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x409, 1200
  END
END
