#include "apr_version.h"

#define APR_LICENSE \
  "Licensed to the Apache Software Foundation (ASF) under one or more " \
  "contributor license agreements.  See the NOTICE file distributed with " \
  "this work for additional information regarding copyright ownership.  " \
  "The ASF licenses this file to You 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."

#ifdef DLL_NAME
#define APR_DLL_BASENAME APR_STRINGIFY(DLL_NAME) "-" APR_STRINGIFY(APR_MAJOR_VERSION)
#define APR_DLL_DESCRIPTION "Apache Portable Runtime " APR_STRINGIFY(DLL_NAME) " Module"
#else
#define APR_DLL_BASENAME "libapr-" APR_STRINGIFY(APR_MAJOR_VERSION)
#define APR_DLL_DESCRIPTION "Apache Portable Runtime Library"
#endif


1 VERSIONINFO
 FILEVERSION APR_VERSION_STRING_CSV,0
 PRODUCTVERSION APR_VERSION_STRING_CSV,0
 FILEFLAGSMASK 0x3fL
#if defined(APR_IS_DEV_VERSION)
#if defined(_DEBUG)
 FILEFLAGS 0x03L
#else
 FILEFLAGS 0x02L
#endif
#else
#if defined(_DEBUG)
 FILEFLAGS 0x01L
#else
 FILEFLAGS 0x00L
#endif
#endif
 FILEOS 0x40004L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904b0"
    BEGIN
      VALUE "Comments", APR_LICENSE "\0"
      VALUE "CompanyName", "Apache Software Foundation\0"
      VALUE "FileDescription", APR_DLL_DESCRIPTION "\0"
      VALUE "FileVersion", APR_VERSION_STRING "\0"
      VALUE "InternalName", APR_DLL_BASENAME "\0"
      VALUE "LegalCopyright", APR_COPYRIGHT "\0"
      VALUE "OriginalFilename", APR_DLL_BASENAME ".dll\0"
      VALUE "ProductName", "Apache Portable Runtime Project\0"
      VALUE "ProductVersion", APR_VERSION_STRING "\0"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x409, 1200
  END
END
