Created
April 3, 2022 15:24
-
-
Save andelf/2f4d6c34e011eea73c5375fe035a30c5 to your computer and use it in GitHub Desktop.
openssl_fips fix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
'variables': { | |
'configuring_node%': 0, | |
'asan%': 0, | |
'werror': '', # Turn off -Werror in V8 build. | |
'visibility%': 'hidden', # V8's visibility setting | |
'target_arch%': 'ia32', # set v8's target architecture | |
'host_arch%': 'ia32', # set v8's host architecture | |
'want_separate_host_toolset%': 0, # V8 should not build target and host | |
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds | |
'component%': 'static_library', # NB. these names match with what V8 expects | |
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way | |
'enable_pgo_generate%': '0', | |
'enable_pgo_use%': '0', | |
'python%': 'python', | |
'node_shared%': 'false', | |
'force_dynamic_crt%': 0, | |
'node_use_v8_platform%': 'true', | |
'node_use_bundled_v8%': 'true', | |
'node_module_version%': '', | |
'node_with_ltcg%': '', | |
'node_shared_openssl%': 'false', | |
'node_tag%': '', | |
'uv_library%': 'static_library', | |
'clang%': 0, | |
'error_on_warn%': 'false', | |
# 'openssl_fips%': '', | |
'openssl_no_asm%': 0, | |
# Don't use ICU data file (icudtl.dat) from V8, we use our own. | |
'icu_use_data_file_flag%': 0, | |
# Reset this number to 0 on major V8 upgrades. | |
# Increment by one for each non-official patch applied to deps/v8. | |
'v8_embedder_string': '-node.20', | |
##### V8 defaults for Node.js ##### | |
# Turn on SipHash for hash seed generation, addresses HashWick | |
'v8_use_siphash': 'true', | |
# These are more relevant for V8 internal development. | |
# Refs: https://github.com/nodejs/node/issues/23122 | |
# Refs: https://github.com/nodejs/node/issues/23167 | |
# Enable compiler warnings when using V8_DEPRECATED apis from V8 code. | |
'v8_deprecation_warnings': 0, | |
# Enable compiler warnings when using V8_DEPRECATE_SOON apis from V8 code. | |
'v8_imminent_deprecation_warnings': 0, | |
# Enable disassembler for `--print-code` v8 options | |
'v8_enable_disassembler': 1, | |
# Sets -dOBJECT_PRINT. | |
'v8_enable_object_print%': 1, | |
# https://github.com/nodejs/node/pull/22920/files#r222779926 | |
'v8_enable_handle_zapping': 0, | |
# Disable pointer compression. Can be enabled at build time via configure | |
# options but default values are required here as this file is also used by | |
# node-gyp to build addons. | |
'v8_enable_pointer_compression%': 0, | |
'v8_enable_31bit_smis_on_64bit_arch%': 1, | |
'v8_enable_reverse_jsargs%': 1, | |
# Disable V8 untrusted code mitigations. | |
# See https://github.com/v8/v8/wiki/Untrusted-code-mitigations | |
'v8_untrusted_code_mitigations': 0, | |
# This is more of a V8 dev setting | |
# https://github.com/nodejs/node/pull/22920/files#r222779926 | |
'v8_enable_fast_mksnapshot': 0, | |
'v8_win64_unwinding_info': 1, | |
# TODO(refack): make v8-perfetto happen | |
'v8_use_perfetto': 0, | |
##### end V8 defaults ##### | |
# When building native modules using 'npm install' with the system npm, | |
# node-gyp uses the `process.config` of the system npm to fill config.gypi. | |
# If the system npm is not as recent as Electron's node headers, which is | |
# likely, these variables will be missing from that config.gypi, and as a | |
# result, node-gyp will fail when building the native module with an error | |
# like: | |
# | |
# gyp: name 'enable_lto' is not defined while evaluating condition | |
# 'enable_lto=="true"' in binding.gyp while trying to load binding.gyp | |
# | |
# We set default values here to avoid that error message, even though these | |
# aren't technically accurate, because most native modules don't depend on | |
# these values being accurate. | |
'build_v8_with_gn': 'false', | |
'enable_lto%': 'false', | |
'llvm_version': '0.0', | |
'conditions': [ | |
['OS == "win"', { | |
'os_posix': 0, | |
'v8_postmortem_support%': 0, | |
'obj_dir': '<(PRODUCT_DIR)/obj', | |
'v8_base': '<(PRODUCT_DIR)/lib/libv8_snapshot.a', | |
}, { | |
'os_posix': 1, | |
'v8_postmortem_support%': 1, | |
}], | |
['GENERATOR == "ninja"', { | |
'obj_dir': '<(PRODUCT_DIR)/obj', | |
'v8_base': '<(PRODUCT_DIR)/obj/tools/v8_gypfiles/libv8_snapshot.a', | |
}, { | |
'obj_dir%': '<(PRODUCT_DIR)/obj.target', | |
'v8_base': '<(PRODUCT_DIR)/obj.target/tools/v8_gypfiles/libv8_snapshot.a', | |
}], | |
['OS=="mac"', { | |
'openssl_product': '<(STATIC_LIB_PREFIX)openssl<(STATIC_LIB_SUFFIX)', | |
}, { | |
'openssl_product': '<(STATIC_LIB_PREFIX)openssl<(STATIC_LIB_SUFFIX)', | |
}], | |
['OS=="mac"', { | |
'clang%': 1, | |
'obj_dir%': '<(PRODUCT_DIR)/obj.target', | |
'v8_base': '<(PRODUCT_DIR)/libv8_snapshot.a', | |
}], | |
['target_arch == "arm64" or target_arch == "x64"', { | |
'v8_enable_pointer_compression': 1, | |
}], | |
['target_arch in "ppc64 s390x"', { | |
'v8_enable_backtrace': 1, | |
}], | |
['OS=="linux"', { | |
'node_section_ordering_info%': '' | |
}] | |
], | |
}, | |
'target_defaults': { | |
'default_configuration': 'Release', | |
'configurations': { | |
'Debug': { | |
'variables': { | |
'v8_enable_handle_zapping': 1, | |
'conditions': [ | |
['node_shared != "true"', { | |
'MSVC_runtimeType': 1, # MultiThreadedDebug (/MTd) | |
}, { | |
'MSVC_runtimeType': 3, # MultiThreadedDebugDLL (/MDd) | |
}], | |
], | |
}, | |
'defines': [ 'DEBUG', '_DEBUG', 'V8_ENABLE_CHECKS' ], | |
'cflags': [ '-g', '-O0' ], | |
'conditions': [ | |
['OS=="aix"', { | |
'cflags': [ '-gxcoff' ], | |
'ldflags': [ '-Wl,-bbigtoc' ], | |
}], | |
['OS == "android"', { | |
'cflags': [ '-fPIC' ], | |
'ldflags': [ '-fPIC' ] | |
}], | |
], | |
'msvs_settings': { | |
'VCCLCompilerTool': { | |
'BasicRuntimeChecks': 3, # /RTC1 | |
'MinimalRebuild': 'false', | |
'OmitFramePointers': 'false', | |
'Optimization': 0, # /Od, no optimization | |
'RuntimeLibrary': '<(MSVC_runtimeType)', | |
}, | |
'VCLinkerTool': { | |
'LinkIncremental': 2, # enable incremental linking | |
}, | |
}, | |
'xcode_settings': { | |
'GCC_OPTIMIZATION_LEVEL': '0', # stop gyp from defaulting to -Os | |
}, | |
}, | |
'Release': { | |
'variables': { | |
'v8_enable_handle_zapping': 0, | |
'pgo_generate': ' -fprofile-generate ', | |
'pgo_use': ' -fprofile-use -fprofile-correction ', | |
'conditions': [ | |
['node_shared != "true"', { | |
'MSVC_runtimeType': 0 # MultiThreaded (/MT) | |
}, { | |
'MSVC_runtimeType': 2 # MultiThreadedDLL (/MD) | |
}], | |
['llvm_version=="0.0"', { | |
'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ', # GCC | |
}, { | |
'lto': ' -flto ', # Clang | |
}], | |
], | |
}, | |
'cflags': [ '-O3' ], | |
'conditions': [ | |
['enable_lto=="true"', { | |
'cflags': ['<(lto)'], | |
'ldflags': ['<(lto)'], | |
'xcode_settings': { | |
'LLVM_LTO': 'YES', | |
}, | |
}], | |
['OS=="linux"', { | |
'conditions': [ | |
['node_section_ordering_info!=""', { | |
'cflags': [ | |
'-fuse-ld=gold', | |
'-ffunction-sections', | |
], | |
'ldflags': [ | |
'-fuse-ld=gold', | |
'-Wl,--section-ordering-file=<(node_section_ordering_info)', | |
], | |
}], | |
], | |
}], | |
['OS=="solaris"', { | |
# pull in V8's postmortem metadata | |
'ldflags': [ '-Wl,-z,allextract' ] | |
}], | |
['OS!="mac" and OS!="win"', { | |
'cflags': [ '-fno-omit-frame-pointer' ], | |
}], | |
['OS=="linux"', { | |
'conditions': [ | |
['enable_pgo_generate=="true"', { | |
'cflags': ['<(pgo_generate)'], | |
'ldflags': ['<(pgo_generate)'], | |
},], | |
['enable_pgo_use=="true"', { | |
'cflags': ['<(pgo_use)'], | |
'ldflags': ['<(pgo_use)'], | |
},], | |
], | |
},], | |
['OS == "android"', { | |
'cflags': [ '-fPIC' ], | |
'ldflags': [ '-fPIC' ] | |
}], | |
], | |
'msvs_settings': { | |
'VCCLCompilerTool': { | |
'conditions': [ | |
['target_arch=="arm64"', { | |
'FloatingPointModel': 1 # /fp:strict | |
}] | |
], | |
'EnableFunctionLevelLinking': 'true', | |
'EnableIntrinsicFunctions': 'true', | |
'FavorSizeOrSpeed': 1, # /Ot, favor speed over size | |
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible | |
'OmitFramePointers': 'true', | |
'Optimization': 3, # /Ox, full optimization | |
'RuntimeLibrary': '<(MSVC_runtimeType)', | |
'RuntimeTypeInfo': 'false', | |
} | |
}, | |
'xcode_settings': { | |
'GCC_OPTIMIZATION_LEVEL': '3', # stop gyp from defaulting to -Os | |
}, | |
} | |
}, | |
# Defines these mostly for node-gyp to pickup, and warn addon authors of | |
# imminent V8 deprecations, also to sync how dependencies are configured. | |
'defines': [ | |
'V8_DEPRECATION_WARNINGS', | |
'V8_IMMINENT_DEPRECATION_WARNINGS', | |
'_GLIBCXX_USE_CXX11_ABI=1', | |
], | |
# Forcibly disable -Werror. We support a wide range of compilers, it's | |
# simply not feasible to squelch all warnings, never mind that the | |
# libraries in deps/ are not under our control. | |
'conditions': [ | |
[ 'error_on_warn=="false"', { | |
'cflags!': ['-Werror'], | |
}, '(_target_name!="<(node_lib_target_name)" or ' | |
'_target_name!="<(node_core_target_name)")', { | |
'cflags!': ['-Werror'], | |
}], | |
], | |
'msvs_settings': { | |
'VCCLCompilerTool': { | |
'BufferSecurityCheck': 'true', | |
'DebugInformationFormat': 1, # /Z7 embed info in .obj files | |
'ExceptionHandling': 0, # /EHsc | |
'MultiProcessorCompilation': 'true', | |
'StringPooling': 'true', # pool string literals | |
'SuppressStartupBanner': 'true', | |
'WarnAsError': 'false', | |
'WarningLevel': 3, # /W3 | |
}, | |
'VCLinkerTool': { | |
'target_conditions': [ | |
['_type=="executable"', { | |
'SubSystem': 1, # /SUBSYSTEM:CONSOLE | |
}], | |
], | |
'conditions': [ | |
['target_arch=="ia32"', { | |
'TargetMachine' : 1, # /MACHINE:X86 | |
}], | |
['target_arch=="x64"', { | |
'TargetMachine' : 17, # /MACHINE:X64 | |
}], | |
['target_arch=="arm64"', { | |
'TargetMachine' : 0, # NotSet. MACHINE:ARM64 is inferred from the input files. | |
}], | |
], | |
'GenerateDebugInformation': 'true', | |
'SuppressStartupBanner': 'true', | |
}, | |
}, | |
# Disable warnings: | |
# - "C4251: class needs to have dll-interface" | |
# - "C4275: non-DLL-interface used as base for DLL-interface" | |
# Over 10k of these warnings are generated when compiling node, | |
# originating from v8.h. Most of them are false positives. | |
# See also: https://github.com/nodejs/node/pull/15570 | |
# TODO: re-enable when Visual Studio fixes these upstream. | |
# | |
# - "C4267: conversion from 'size_t' to 'int'" | |
# Many any originate from our dependencies, and their sheer number | |
# drowns out other, more legitimate warnings. | |
# - "C4244: conversion from 'type1' to 'type2', possible loss of data" | |
# Ususaly safe. Disable for `dep`, enable for `src` | |
'msvs_disabled_warnings': [4351, 4355, 4800, 4251, 4275, 4244, 4267], | |
'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin | |
'conditions': [ | |
[ 'configuring_node', { | |
'msvs_configuration_attributes': { | |
'OutputDirectory': '<(DEPTH)/out/$(Configuration)/', | |
'IntermediateDirectory': '$(OutDir)obj/$(ProjectName)/' | |
}, | |
}], | |
[ 'target_arch=="x64"', { | |
'msvs_configuration_platform': 'x64', | |
}], | |
[ 'target_arch=="arm64"', { | |
'msvs_configuration_platform': 'arm64', | |
}], | |
['asan == 1 and OS != "mac"', { | |
'cflags+': [ | |
'-fno-omit-frame-pointer', | |
'-fsanitize=address', | |
'-fsanitize-address-use-after-scope', | |
], | |
'defines': [ 'LEAK_SANITIZER', 'V8_USE_ADDRESS_SANITIZER' ], | |
'cflags!': [ '-fomit-frame-pointer' ], | |
'ldflags': [ '-fsanitize=address' ], | |
}], | |
['asan == 1 and OS == "mac"', { | |
'xcode_settings': { | |
'OTHER_CFLAGS+': [ | |
'-fno-omit-frame-pointer', | |
'-gline-tables-only', | |
'-fsanitize=address', | |
'-DLEAK_SANITIZER' | |
], | |
'OTHER_CFLAGS!': [ | |
'-fomit-frame-pointer', | |
], | |
}, | |
'target_conditions': [ | |
['_type!="static_library"', { | |
'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']}, | |
}], | |
], | |
}], | |
['v8_enable_pointer_compression == 1', { | |
'defines': ['V8_COMPRESS_POINTERS'], | |
}], | |
['v8_enable_pointer_compression == 1 or v8_enable_31bit_smis_on_64bit_arch == 1', { | |
'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH'], | |
}], | |
['v8_enable_reverse_jsargs == 1', { | |
'defines': ['V8_REVERSE_JSARGS'], | |
}], | |
['OS == "win"', { | |
'defines': [ | |
'WIN32', | |
# we don't really want VC++ warning us about | |
# how dangerous C functions are... | |
'_CRT_SECURE_NO_DEPRECATE', | |
# ... or that C implementations shouldn't use | |
# POSIX names | |
'_CRT_NONSTDC_NO_DEPRECATE', | |
# Make sure the STL doesn't try to use exceptions | |
'_HAS_EXCEPTIONS=0', | |
'BUILDING_V8_SHARED=1', | |
'BUILDING_UV_SHARED=1', | |
], | |
}], | |
[ 'OS in "linux freebsd openbsd solaris aix"', { | |
'cflags': [ '-pthread' ], | |
'ldflags': [ '-pthread' ], | |
}], | |
[ 'OS in "linux freebsd openbsd solaris android aix cloudabi"', { | |
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ], | |
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++14' ], | |
'defines': [ '__STDC_FORMAT_MACROS' ], | |
'ldflags': [ '-rdynamic' ], | |
'target_conditions': [ | |
# The 1990s toolchain on SmartOS can't handle thin archives. | |
['_type=="static_library" and OS=="solaris"', { | |
'standalone_static_library': 1, | |
}], | |
['OS=="openbsd"', { | |
'cflags': [ '-I/usr/local/include' ], | |
'ldflags': [ '-Wl,-z,wxneeded' ], | |
}], | |
], | |
'conditions': [ | |
[ 'target_arch=="ia32"', { | |
'cflags': [ '-m32' ], | |
'ldflags': [ '-m32' ], | |
}], | |
[ 'target_arch=="x32"', { | |
'cflags': [ '-mx32' ], | |
'ldflags': [ '-mx32' ], | |
}], | |
[ 'target_arch=="x64"', { | |
'cflags': [ '-m64' ], | |
'ldflags': [ '-m64' ], | |
}], | |
[ 'target_arch=="ppc" and OS!="aix"', { | |
'cflags': [ '-m32' ], | |
'ldflags': [ '-m32' ], | |
}], | |
[ 'target_arch=="ppc64" and OS!="aix"', { | |
'cflags': [ '-m64', '-mminimal-toc' ], | |
'ldflags': [ '-m64' ], | |
}], | |
[ 'target_arch=="s390x"', { | |
'cflags': [ '-m64', '-march=z196' ], | |
'ldflags': [ '-m64', '-march=z196' ], | |
}], | |
[ 'OS=="solaris"', { | |
'cflags': [ '-pthreads' ], | |
'ldflags': [ '-pthreads' ], | |
'cflags!': [ '-pthread' ], | |
'ldflags!': [ '-pthread' ], | |
}], | |
[ 'node_shared=="true"', { | |
'cflags': [ '-fPIC' ], | |
}], | |
], | |
}], | |
[ 'OS=="aix"', { | |
'variables': { | |
# Used to differentiate `AIX` and `OS400`(IBM i). | |
'aix_variant_name': '<!(uname -s)', | |
}, | |
'cflags': [ '-maix64', ], | |
'ldflags!': [ '-rdynamic', ], | |
'ldflags': [ | |
'-Wl,-bbigtoc', | |
'-maix64', | |
], | |
'conditions': [ | |
[ '"<(aix_variant_name)"=="OS400"', { # a.k.a. `IBM i` | |
'ldflags': [ | |
'-Wl,-blibpath:/QOpenSys/pkgs/lib:/QOpenSys/usr/lib', | |
'-Wl,-brtl', | |
], | |
}, { # else it's `AIX` | |
# Disable the following compiler warning: | |
# | |
# warning: visibility attribute not supported in this | |
# configuration; ignored [-Wattributes] | |
# | |
# This is gcc complaining about __attribute((visibility("default")) | |
# in static library builds. Legitimate but harmless and it drowns | |
# out more relevant warnings. | |
'cflags': [ '-Wno-attributes' ], | |
'ldflags': [ | |
'-Wl,-blibpath:/usr/lib:/lib:/opt/freeware/lib/pthread/ppc64', | |
], | |
}], | |
], | |
}], | |
['OS=="android"', { | |
'target_conditions': [ | |
['_toolset=="target"', { | |
'defines': [ '_GLIBCXX_USE_C99_MATH' ], | |
'libraries': [ '-llog' ], | |
}], | |
['_toolset=="host"', { | |
'cflags': [ '-pthread' ], | |
'ldflags': [ '-pthread' ], | |
}], | |
], | |
}], | |
['OS=="mac"', { | |
'defines': ['_DARWIN_USE_64_BIT_INODE=1'], | |
'xcode_settings': { | |
'ALWAYS_SEARCH_USER_PATHS': 'NO', | |
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks | |
'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic | |
# (Equivalent to -fPIC) | |
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions | |
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti | |
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings | |
'PREBINDING': 'NO', # No -Wl,-prebind | |
'MACOSX_DEPLOYMENT_TARGET': '10.13', # -mmacosx-version-min=10.13 | |
'USE_HEADERMAP': 'NO', | |
'OTHER_CFLAGS': [ | |
'-fno-strict-aliasing', | |
], | |
'WARNING_CFLAGS': [ | |
'-Wall', | |
'-Wendif-labels', | |
'-W', | |
'-Wno-unused-parameter', | |
], | |
}, | |
'target_conditions': [ | |
['_type!="static_library"', { | |
'xcode_settings': { | |
'OTHER_LDFLAGS': [ | |
'-Wl,-search_paths_first' | |
], | |
}, | |
}], | |
], | |
'conditions': [ | |
['target_arch=="ia32"', { | |
'xcode_settings': {'ARCHS': ['i386']}, | |
}], | |
['target_arch=="x64"', { | |
'xcode_settings': {'ARCHS': ['x86_64']}, | |
}], | |
['target_arch=="arm64"', { | |
'xcode_settings': { | |
'ARCHS': ['arm64'], | |
'OTHER_LDFLAGS!': [ | |
'-Wl,-no_pie', | |
], | |
}, | |
}], | |
['clang==1', { | |
'xcode_settings': { | |
'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0', | |
'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++14', # -std=gnu++14 | |
'CLANG_CXX_LIBRARY': 'libc++', | |
}, | |
}], | |
], | |
}], | |
['OS=="freebsd" and node_use_dtrace=="true"', { | |
'libraries': [ '-lelf' ], | |
}], | |
['OS=="freebsd"', { | |
'ldflags': [ | |
'-Wl,--export-dynamic', | |
], | |
}], | |
# if node is built as an executable, | |
# the openssl mechanism for keeping itself "dload"-ed to ensure proper | |
# atexit cleanup does not apply | |
['node_shared_openssl!="true" and node_shared!="true"', { | |
'defines': [ | |
# `OPENSSL_NO_PINSHARED` prevents openssl from dload | |
# current node executable, | |
# see https://github.com/nodejs/node/pull/21848 | |
# or https://github.com/nodejs/node/issues/27925 | |
'OPENSSL_NO_PINSHARED' | |
], | |
}], | |
['node_shared_openssl!="true"', { | |
# `OPENSSL_THREADS` is defined via GYP for openSSL for all architectures. | |
'defines': [ | |
'OPENSSL_THREADS', | |
], | |
}], | |
['node_shared_openssl!="true" and openssl_no_asm==1', { | |
'defines': [ | |
'OPENSSL_NO_ASM', | |
], | |
}], | |
], | |
} | |
} |
Author
andelf
commented
May 30, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment