/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nssutil.h"
#include <winver.h>

#define MY_LIBNAME "nssutil"
#define MY_FILEDESCRIPTION "NSS Utility Library"

#define STRINGIZE(x) #x
#define STRINGIZE2(x) STRINGIZE(x)
#define NSSUTIL_VMAJOR_STR STRINGIZE2(NSSUTIL_VMAJOR)

#ifdef _DEBUG
#define MY_DEBUG_STR " (debug)"
#define MY_FILEFLAGS_1 VS_FF_DEBUG
#else
#define MY_DEBUG_STR ""
#define MY_FILEFLAGS_1 0x0L
#endif
#if NSSUTIL_BETA
#define MY_FILEFLAGS_2 MY_FILEFLAGS_1|VS_FF_PRERELEASE
#else
#define MY_FILEFLAGS_2 MY_FILEFLAGS_1
#endif

#ifdef WINNT
#define MY_FILEOS VOS_NT_WINDOWS32
#else
#define MY_FILEOS VOS__WINDOWS32
#endif

#define MY_INTERNAL_NAME MY_LIBNAME NSSUTIL_VMAJOR_STR

/////////////////////////////////////////////////////////////////////////////
//
// Version-information resource
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION NSSUTIL_VMAJOR,NSSUTIL_VMINOR,NSSUTIL_VPATCH,NSSUTIL_VBUILD
 PRODUCTVERSION NSSUTIL_VMAJOR,NSSUTIL_VMINOR,NSSUTIL_VPATCH,NSSUTIL_VBUILD
 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
 FILEFLAGS MY_FILEFLAGS_2
 FILEOS MY_FILEOS
 FILETYPE VFT_DLL
 FILESUBTYPE 0x0L // not used

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904B0" // Lang=US English, CharSet=Unicode
        BEGIN
            VALUE "CompanyName", "Mozilla Foundation\0"
            VALUE "FileDescription", MY_FILEDESCRIPTION MY_DEBUG_STR "\0"
            VALUE "FileVersion", NSSUTIL_VERSION "\0"
            VALUE "InternalName", MY_INTERNAL_NAME "\0"
            VALUE "OriginalFilename", MY_INTERNAL_NAME ".dll\0"
            VALUE "ProductName", "Network Security Services\0"
            VALUE "ProductVersion", NSSUTIL_VERSION "\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
