/**************************************************************
 *
 * 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
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * 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.
 *
 *************************************************************/



#if !defined(ENGLISH)
#define LG_D 					// generate always german version
#endif

#define VER_FIRSTYEAR	2000

#include <windows.h>
#include "version_so.hrc"

// -----------------------------------------------------------------------
// 				version information
// -----------------------------------------------------------------------

VS_VERSION_INFO versioninfo
#ifndef SUBVERSION
	fileversion    VERSION, 0, VERVARIANT, VER_COUNT
	productversion VERSION, 0, VERVARIANT, VER_COUNT
#else
	fileversion    VERSION, SUBVERSION, VERVARIANT, VER_COUNT
	productversion VERSION, SUBVERSION, VERVARIANT, VER_COUNT
#endif
	fileflagsmask 0x3F
	fileflags
#if defined(DEBUG)
	VS_FF_DEBUG |
#endif
#ifdef VER_PREL
	VS_FF_PRERELEASE |
#endif
	0
#ifndef WIN32
	fileos VOS_DOS_WINDOWS16
#else
	fileos VOS_NT_WINDOWS32
#endif
	filetype VFT_APP
	{
		block "StringFileInfo"
		{
#ifdef LG_D
			block "040704E4"
			{
				// German StringTable
				value "CompanyName",		"Apache Software Foundation\0"
				value "FileDescription", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\0"
				value "FileVersion",		PPS(VER_LEVEL) "\0"
				value "ProductVersion",		PPS(VER_LEVEL) "\0"
				value "OriginalFilename",	PPS(RES_APP_NAME) ".exe\0"
				value "InternalName",		PPS(RES_APP_NAME) "\0"
				value "LegalCopyright",		S_CRIGHT " Apache Software Foundation. All rights reserved.\0"
			}
#else
			block "040904E4"
			{
				// International StringTable
				value "CompanyName", 		"Apache Software Foundation\0"
				value "FileDescription",	"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\0"
				value "FileVersion",		PPS(VER_LEVEL) "\0"
				value "ProductVersion",		PPS(VER_LEVEL) "\0"
				value "OriginalFilename",	PPS(RES_APP_NAME) ".exe\0"
				value "InternalName",		PPS(RES_APP_NAME) "\0"
				value "LegalCopyright", 	S_CRIGHT " Apache Software Foundation. All rights reserved.\0"
			}
#endif
		}

		block "VarFileInfo"
		{
#ifdef LG_D
			value "Translation", 0x0407, 1252
#else
			value "Translation", 0x0409, 1252
#endif
		}
	}
