This is a test patch that defaults the compile flags to optimize for size The build types: Release - set to Os Debug - untouched (-g -O0) To apply this patch $ cd node-src $ patch -Np1 < this.patch diff -ruN node-v16.14.0/common.gypi node-patched/common.gypi --- node-v16.14.0/common.gypi 2022-02-08 12:37:46.000000000 +0000 +++ node-patched/common.gypi 2022-03-05 12:25:09.072611513 +0000 @@ -186,7 +186,7 @@ }], ], }, - 'cflags': [ '-O3' ], + 'cflags': [ '-Os' ], 'conditions': [ ['enable_lto=="true"', { 'cflags': ['<(lto)'], @@ -246,16 +246,16 @@ ], 'EnableFunctionLevelLinking': 'true', 'EnableIntrinsicFunctions': 'true', - 'FavorSizeOrSpeed': 1, # /Ot, favor speed over size + 'FavorSizeOrSpeed': 2, # Favor size over speed 'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible 'OmitFramePointers': 'true', - 'Optimization': 3, # /Ox, full optimization + 'Optimization': 's', # optimize for size 'RuntimeLibrary': '<(MSVC_runtimeType)', 'RuntimeTypeInfo': 'false', } }, 'xcode_settings': { - 'GCC_OPTIMIZATION_LEVEL': '3', # stop gyp from defaulting to -Os + 'GCC_OPTIMIZATION_LEVEL': 's', # set gyp default to -Os }, } }, diff -ruN node-v16.14.0/deps/llhttp/common.gypi node-patched/deps/llhttp/common.gypi --- node-v16.14.0/deps/llhttp/common.gypi 2022-02-08 12:37:46.000000000 +0000 +++ node-patched/deps/llhttp/common.gypi 2022-03-05 12:25:09.072611513 +0000 @@ -1,6 +1,6 @@ { 'target_defaults': { - 'default_configuration': 'Debug', + 'default_configuration': 'Release', 'configurations': { # TODO: hoist these out and put them somewhere common, because # RuntimeLibrary MUST MATCH across the entire project @@ -15,7 +15,7 @@ }, 'Release': { 'defines': [ 'NDEBUG' ], - 'cflags': [ '-Wall', '-Wextra', '-O3' ], + 'cflags': [ '-Wall', '-Wextra', '-Os' ], 'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': 0, # static release @@ -32,7 +32,7 @@ 'VCLibrarianTool': { }, 'VCLinkerTool': { - 'GenerateDebugInformation': 'true', + 'GenerateDebugInformation': 'false', }, }, 'conditions': [ diff -ruN node-v16.14.0/deps/uv/common.gypi node-patched/deps/uv/common.gypi --- node-v16.14.0/deps/uv/common.gypi 2022-02-08 12:37:47.000000000 +0000 +++ node-patched/deps/uv/common.gypi 2022-03-05 12:25:09.072611513 +0000 @@ -7,7 +7,7 @@ }, 'target_defaults': { - 'default_configuration': 'Debug', + 'default_configuration': 'Release', 'configurations': { 'Debug': { 'defines': [ 'DEBUG', '_DEBUG' ], @@ -46,7 +46,7 @@ 'Release': { 'defines': [ 'NDEBUG' ], 'cflags': [ - '-O3', + '-Os', ], 'msvs_settings': { 'VCCLCompilerTool': { @@ -57,8 +57,8 @@ 'RuntimeLibrary': 2, # /MD DLL release }], ], - 'Optimization': 3, # /Ox, full optimization - 'FavorSizeOrSpeed': 1, # /Ot, favour speed over size + 'Optimization': 's', # optimize for size + 'FavorSizeOrSpeed': 2, # Favor size over speed 'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible 'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG 'OmitFramePointers': 'true', diff -ruN node-v16.14.0/tools/msvs/msi/custom_actions.vcxproj node-patched/tools/msvs/msi/custom_actions.vcxproj --- node-v16.14.0/tools/msvs/msi/custom_actions.vcxproj 2022-02-08 12:37:50.000000000 +0000 +++ node-patched/tools/msvs/msi/custom_actions.vcxproj 2022-03-05 12:25:09.072611513 +0000 @@ -186,7 +186,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) $(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories) custom_actions.def - true + false Windows true true @@ -212,7 +212,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) $(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories) custom_actions.def - true + false Windows true true @@ -238,7 +238,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) $(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories) custom_actions.def - true + false Windows true true diff -ruN node-v16.14.0/tools/v8_gypfiles/toolchain.gypi node-patched/tools/v8_gypfiles/toolchain.gypi --- node-v16.14.0/tools/v8_gypfiles/toolchain.gypi 2022-02-08 12:37:51.000000000 +0000 +++ node-patched/tools/v8_gypfiles/toolchain.gypi 2022-03-05 12:26:40.265950183 +0000 @@ -1303,11 +1303,15 @@ ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \ or OS=="aix"', { 'cflags!': [ - '-Os', + '-O3', + '-O2', + '-O1', + '-O0', ], 'cflags': [ '-fdata-sections', '-ffunction-sections', + '-Os', ], 'conditions': [ # Don't use -O3 with sanitizers.