/* 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 "nss.h"
#include <winver.h>

#define MY_LIBNAME "smime"
#define MY_FILEDESCRIPTION "NSS S/MIME Library"

#define STRINGIZE(x) #x
#define STRINGIZE2(x) STRINGIZE(x)
#define NSS_VMAJOR_STR STRINGIZE2(NSS_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 NSS_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 NSS_VMAJOR_STR

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

VS_VERSION_INFO VERSIONINFO
 FILEVERSION NSS_VMAJOR,NSS_VMINOR,NSS_VPATCH,NSS_VBUILD
 PRODUCTVERSION NSS_VMAJOR,NSS_VMINOR,NSS_VPATCH,NSS_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", NSS_VERSION "\0"
            VALUE "InternalName", MY_INTERNAL_NAME "\0"
            VALUE "OriginalFilename", MY_INTERNAL_NAME ".dll\0"
            VALUE "ProductName", "Network Security Services\0"
            VALUE "ProductVersion", NSS_VERSION "\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
