Use -Os for lite release build (#4652)

Summary:
Set `-Os` for lite release build to minimize binary size.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/4652

Differential Revision: D12965427

Pulled By: yiwu-arbug

fbshipit-source-id: c8b647642c24b3e5df6a2cd13112e452a08e8398
This commit is contained in:
Yi Wu 2018-11-07 22:08:35 -08:00 committed by Facebook Github Bot
parent fce5994603
commit 8c2a48742a
3 changed files with 20 additions and 6 deletions

View File

@ -366,7 +366,7 @@ endif()
option(ROCKSDB_LITE "Build RocksDBLite version" OFF) option(ROCKSDB_LITE "Build RocksDBLite version" OFF)
if(ROCKSDB_LITE) if(ROCKSDB_LITE)
add_definitions(-DROCKSDB_LITE) add_definitions(-DROCKSDB_LITE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -Os")
endif() endif()
if(CMAKE_SYSTEM_NAME MATCHES "Cygwin") if(CMAKE_SYSTEM_NAME MATCHES "Cygwin")

View File

@ -93,9 +93,24 @@ ifeq ($(MAKECMDGOALS),rocksdbjavastaticpublish)
DEBUG_LEVEL=0 DEBUG_LEVEL=0
endif endif
# Lite build flag.
LITE ?= 0
ifneq ($(LITE), 0)
OPT += -DROCKSDB_LITE
endif
# Figure out optimize level.
ifneq ($(DEBUG_LEVEL), 2)
ifeq ($(LITE), 0)
OPT += -O2
else
OPT += -Os
endif
endif
# compile with -O2 if debug level is not 2 # compile with -O2 if debug level is not 2
ifneq ($(DEBUG_LEVEL), 2) ifneq ($(DEBUG_LEVEL), 2)
OPT += -O2 -fno-omit-frame-pointer OPT += -fno-omit-frame-pointer
# Skip for archs that don't support -momit-leaf-frame-pointer # Skip for archs that don't support -momit-leaf-frame-pointer
ifeq (,$(shell $(CXX) -fsyntax-only -momit-leaf-frame-pointer -xc /dev/null 2>&1)) ifeq (,$(shell $(CXX) -fsyntax-only -momit-leaf-frame-pointer -xc /dev/null 2>&1))
OPT += -momit-leaf-frame-pointer OPT += -momit-leaf-frame-pointer

View File

@ -85,7 +85,6 @@ NON_SHM="TMPD=/tmp/rocksdb_test_tmp"
GCC_481="ROCKSDB_FBCODE_BUILD_WITH_481=1" GCC_481="ROCKSDB_FBCODE_BUILD_WITH_481=1"
ASAN="COMPILE_WITH_ASAN=1" ASAN="COMPILE_WITH_ASAN=1"
CLANG="USE_CLANG=1" CLANG="USE_CLANG=1"
LITE="OPT=\"-DROCKSDB_LITE -g\""
TSAN="COMPILE_WITH_TSAN=1" TSAN="COMPILE_WITH_TSAN=1"
UBSAN="COMPILE_WITH_UBSAN=1" UBSAN="COMPILE_WITH_UBSAN=1"
TSAN_CRASH='CRASH_TEST_EXT_ARGS="--compression_type=zstd --log2_keys_per_lock=22"' TSAN_CRASH='CRASH_TEST_EXT_ARGS="--compression_type=zstd --log2_keys_per_lock=22"'
@ -345,7 +344,7 @@ LITE_BUILD_COMMANDS="[
$CLEANUP_ENV, $CLEANUP_ENV,
{ {
'name':'Build RocksDB debug version', 'name':'Build RocksDB debug version',
'shell':'$LITE make J=1 all check || $CONTRUN_NAME=lite $TASK_CREATION_TOOL', 'shell':'make J=1 LITE=1 all check || $CONTRUN_NAME=lite $TASK_CREATION_TOOL',
'user':'root', 'user':'root',
$PARSER $PARSER
}, },
@ -663,12 +662,12 @@ run_regression()
# === lite build === # === lite build ===
make clean make clean
OPT=-DROCKSDB_LITE make -j$(nproc) static_lib make LITE=1 -j$(nproc) static_lib
send_size_to_ods static_lib_lite $(stat --printf="%s" librocksdb.a) send_size_to_ods static_lib_lite $(stat --printf="%s" librocksdb.a)
strip librocksdb.a strip librocksdb.a
send_size_to_ods static_lib_lite_stripped $(stat --printf="%s" librocksdb.a) send_size_to_ods static_lib_lite_stripped $(stat --printf="%s" librocksdb.a)
OPT=-DROCKSDB_LITE make -j$(nproc) shared_lib make LITE=1 -j$(nproc) shared_lib
send_size_to_ods shared_lib_lite $(stat --printf="%s" `readlink -f librocksdb.so`) send_size_to_ods shared_lib_lite $(stat --printf="%s" `readlink -f librocksdb.so`)
strip `readlink -f librocksdb.so` strip `readlink -f librocksdb.so`
send_size_to_ods shared_lib_lite_stripped $(stat --printf="%s" `readlink -f librocksdb.so`) send_size_to_ods shared_lib_lite_stripped $(stat --printf="%s" `readlink -f librocksdb.so`)