summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2018-04-18 16:42:05 -0400
committerHenrik Edin <henrik.edin@mongodb.com>2018-04-19 10:13:12 -0400
commit548236bfee7646373e4e0a5f6d8f9733a558dd45 (patch)
treeb98422bd394d539bcc2b4e2c4add493fa8b6b8d3 /SConstruct
parenteeded592270082dba3dd59d65c8e94128030af18 (diff)
downloadmongo-548236bfee7646373e4e0a5f6d8f9733a558dd45.tar.gz
SERVER-34472 Optimize Embedded SDK for size.
Diffstat (limited to 'SConstruct')
-rw-r--r--SConstruct14
1 files changed, 11 insertions, 3 deletions
diff --git a/SConstruct b/SConstruct
index 579ee50b3e5..a3e9f0556fe 100644
--- a/SConstruct
+++ b/SConstruct
@@ -236,7 +236,7 @@ add_option('spider-monkey-dbg',
)
add_option('opt',
- choices=['on', 'off'],
+ choices=['on', 'size', 'off'],
const='on',
help='Enable compile-time optimization',
nargs='?',
@@ -891,8 +891,11 @@ dbg_opt_mapping = {
( "off", None ) : ( False, True ),
( "off", "on" ) : ( False, True ),
( "off", "off" ) : ( False, False ),
+ ( "on", "size" ) : ( True, True ),
+ ( "off", "size" ) : ( False, True ),
}
debugBuild, optBuild = dbg_opt_mapping[(get_option('dbg'), get_option('opt'))]
+optBuildForSize = True if optBuild and get_option('opt') == "size" else False
if releaseBuild and (debugBuild or not optBuild):
print("Error: A --release build may not have debugging, and must have optimization")
@@ -1617,11 +1620,14 @@ elif env.TargetOSIs('windows'):
env.Append(CCFLAGS=[winRuntimeLibMap[(dynamicCRT, debugBuild)]])
if optBuild:
+ # /O1: optimize for size
# /O2: optimize for speed (as opposed to size)
# /Oy-: disable frame pointer optimization (overrides /O2, only affects 32-bit)
# /INCREMENTAL: NO - disable incremental link - avoid the level of indirection for function
# calls
- env.Append( CCFLAGS=["/O2", "/Oy-"] )
+
+ optStr = "/O2" if not optBuildForSize else "/O1"
+ env.Append( CCFLAGS=[optStr, "/Oy-"] )
env.Append( LINKFLAGS=["/INCREMENTAL:NO"])
else:
env.Append( CCFLAGS=["/Od"] )
@@ -1730,8 +1736,10 @@ if env.TargetOSIs('posix'):
env.Append( CCFLAGS=["-fprofile-arcs", "-ftest-coverage"] )
env.Append( LINKFLAGS=["-fprofile-arcs", "-ftest-coverage"] )
- if optBuild:
+ if optBuild and not optBuildForSize:
env.Append( CCFLAGS=["-O2"] )
+ elif optBuild and optBuildForSize:
+ env.Append( CCFLAGS=["-Os"] )
else:
env.Append( CCFLAGS=["-O0"] )