From 80d9328c1f05355ad2eaa967798b2dc77b67ddb3 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Fri, 27 Mar 2015 14:19:33 +0300 Subject: [PATCH] Providing option for disabling LTO build mode. --- CMakeLists.txt | 11 +++++++++-- Makefile | 20 ++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c778bd6b8..52ab6eccc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,7 @@ project (Jerry CXX C ASM) # Determining platform and defining options option(ENABLE_VALGRIND "Enable valgrind helpers in memory allocators" OFF) + option(ENABLE_LTO "Enable LTO build" ON) set(PLATFORM "${CMAKE_SYSTEM_NAME}") string(TOUPPER "${PLATFORM}" PLATFORM) @@ -156,8 +157,14 @@ project (Jerry CXX C ASM) ${MODIFIERS_LISTS_LINUX}) # Compiler / Linker flags - set(COMPILE_FLAGS_JERRY "-flto -fno-fat-lto-objects -fno-builtin") - set(LINKER_FLAGS_COMMON "-flto") + set(COMPILE_FLAGS_JERRY "-fno-builtin") + set(LINKER_FLAGS_COMMON "") + + # LTO + if("${ENABLE_LTO}" STREQUAL "ON") + set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -flto -fno-fat-lto-objects") + set(LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -flto") + endif() # Turn off stack protector set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -fno-stack-protector") diff --git a/Makefile b/Makefile index 31b83fcfb..6b617ba56 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,7 @@ ifneq ($(VALGRIND),ON) VALGRIND := OFF endif + # Static checkers STATIC_CHECK ?= OFF @@ -54,6 +55,13 @@ STATIC_CHECK := OFF endif + # LTO + LTO ?= ON + + ifneq ($(LTO),ON) + LTO := OFF + endif + # External build configuration EXTERNAL_LIBS_INTERFACE ?= $(shell pwd)/third-party/nuttx/include EXTERNAL_C_COMPILER ?= arm-none-eabi-gcc @@ -102,10 +110,10 @@ export SHELL=/bin/bash # Building all options combinations OPTIONS_COMBINATIONS := $(foreach __OPTION,ON OFF,$(__COMBINATION)-VALGRIND-$(__OPTION)) - # OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-{ANOTHER_OPTION}-$(__OPTION))) + OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-LTO-$(__OPTION))) # Building current options string - OPTIONS_STRING := -VALGRIND-$(VALGRIND) + OPTIONS_STRING := -VALGRIND-$(VALGRIND)-LTO-$(LTO) # Build directories BUILD_DIR_PREFIX := ./build/obj @@ -138,7 +146,7 @@ $(BUILD_DIRS_NATIVE): fi; \ mkdir -p $@ && \ cd $@ && \ - cmake -DENABLE_VALGRIND=$(VALGRIND) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_linux_$$arch.cmake ../../.. &>cmake.log || \ + cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_LTO=$(LTO) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_linux_$$arch.cmake ../../.. &>cmake.log || \ (echo "CMake run failed. See "`pwd`"/cmake.log for details."; exit 1;) $(BUILD_DIRS_NUTTX): @@ -151,7 +159,7 @@ $(BUILD_DIRS_NUTTX): @ mkdir -p $@ && \ cd $@ && \ cmake \ - -DENABLE_VALGRIND=$(VALGRIND) \ + -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_LTO=$(LTO) \ -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_external.cmake \ -DEXTERNAL_LIBC_INTERFACE=${EXTERNAL_LIBS_INTERFACE} \ -DEXTERNAL_CMAKE_C_COMPILER=${EXTERNAL_C_COMPILER} \ @@ -162,13 +170,13 @@ $(BUILD_DIRS_NUTTX): $(BUILD_DIRS_STM32F3): @ mkdir -p $@ && \ cd $@ && \ - cmake -DENABLE_VALGRIND=$(VALGRIND) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f3.cmake ../../.. &>cmake.log || \ + cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_LTO=$(LTO) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f3.cmake ../../.. &>cmake.log || \ (echo "CMake run failed. See "`pwd`"/cmake.log for details."; exit 1;) $(BUILD_DIRS_STM32F4): @ mkdir -p $@ && \ cd $@ && \ - cmake -DENABLE_VALGRIND=$(VALGRIND) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f4.cmake ../../.. &>cmake.log || \ + cmake -DENABLE_VALGRIND=$(VALGRIND) -DENABLE_LTO=$(LTO) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f4.cmake ../../.. &>cmake.log || \ (echo "CMake run failed. See "`pwd`"/cmake.log for details."; exit 1;) $(JERRY_LINUX_TARGETS): $(BUILD_DIR)/native