From 2667281745a889e4122acf8de5d26db726466522 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Mon, 16 Feb 2015 13:58:22 +0300 Subject: [PATCH] Adding VALGRIND={ON,OFF} make option. --- .gitignore | 2 +- CMakeLists.txt | 10 +++----- Makefile | 60 +++++++++++++++++++++++++++++++++++++-------- core/CMakeLists.txt | 9 ++++++- 4 files changed, 62 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 2e95681e1..e3ec9bcd5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ # Produced files build/bin -build/obj +build/obj-* build/tests # IDE related files diff --git a/CMakeLists.txt b/CMakeLists.txt index 2fca58c7b..9d87a5471 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,6 +53,8 @@ project (Jerry CXX C ASM) set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS ) # Determining platform and defining options + option(ENABLE_VALGRIND "Enable valgrind helpers in memory allocators" OFF) + set(PLATFORM "${CMAKE_SYSTEM_NAME}") string(TOUPPER "${PLATFORM}" PLATFORM) @@ -87,8 +89,7 @@ project (Jerry CXX C ASM) COMPACT_PROFILE COMPACT_PROFILE_MINIMAL FULL_PROFILE - MEMORY_STATISTICS - VALGRIND) + MEMORY_STATISTICS) # Profiles # Full profile (default, so - no suffix) @@ -103,11 +104,6 @@ project (Jerry CXX C ASM) # Memory statistics set(MODIFIER_SUFFIX_MEMORY_STATISTICS -mem_stats) - # Valgrind (TODO: make option) -# set(MODIFIER_SUFFIX_VALGRIND -valgrind) -# set(MODIFIER_DEFINES_VALGRIND DEFINES_JERRY_VALGRIND) -# set(MODIFIER_INCLUDE_VALGRIND INCLUDE_THIRD_PARTY_VALGRIND) - # Modifier lists # Linux set(MODIFIERS_LISTS_LINUX diff --git a/Makefile b/Makefile index 220aea092..5af576671 100644 --- a/Makefile +++ b/Makefile @@ -36,6 +36,14 @@ # Unit test target: unittests_run # +# Options + # Valgrind + VALGRIND ?= OFF + + ifneq ($(VALGRIND),ON) + VALGRIND := OFF + endif + export TARGET_DEBUG_MODES = debug export TARGET_RELEASE_MODES = release export TARGET_PC_SYSTEMS = linux @@ -64,21 +72,53 @@ export CHECK_TARGETS = $(foreach __TARGET,$(JERRY_LINUX_TARGETS),$(__TARGET).che export FLASH_TARGETS = $(foreach __TARGET,$(JERRY_STM32F3_TARGETS) $(JERRY_STM32F4_TARGETS),$(__TARGET).flash) export OUT_DIR = ./build/bin -export BUILD_DIR = ./build/obj 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))) + +# Building current options string + OPTIONS_STRING := -VALGRIND-$(VALGRIND) + +# Build directories + BUILD_DIR_PREFIX := ./build/obj + + # Native + BUILD_DIRS_NATIVE := $(foreach _OPTIONS_COMBINATION,$(OPTIONS_COMBINATIONS),$(BUILD_DIR_PREFIX)$(_OPTIONS_COMBINATION)/native) + # stm32f3 + BUILD_DIRS_STM32F3 := $(foreach _OPTIONS_COMBINATION,$(OPTIONS_COMBINATIONS),$(BUILD_DIR_PREFIX)$(_OPTIONS_COMBINATION)/stm32f3) + # stm32f4 + BUILD_DIRS_STM32F4 := $(foreach _OPTIONS_COMBINATION,$(OPTIONS_COMBINATIONS),$(BUILD_DIR_PREFIX)$(_OPTIONS_COMBINATION)/stm32f4) + + # All together + BUILD_DIRS_ALL := $(BUILD_DIRS_NATIVE) $(BUILD_DIRS_STM32F3) $(BUILD_DIRS_STM32F4) + + # Current + BUILD_DIR := ./build/obj$(OPTIONS_STRING) + all: precommit -$(BUILD_DIR)/native: - @ arch=`uname -p`; if [ "$$arch" == "armv7l" ]; then readelf -A /proc/self/exe | grep Tag_ABI_VFP_args && arch=$$arch"-hf" || arch=$$arch"-el"; fi; \ - mkdir -p $(BUILD_DIR)/native && cd $(BUILD_DIR)/native && cmake -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_linux_$$arch.cmake ../../.. &>cmake.log +$(BUILD_DIRS_NATIVE): + @ arch=`uname -p`; \ + if [ "$$arch" == "armv7l" ]; \ + then \ + readelf -A /proc/self/exe | grep Tag_ABI_VFP_args && arch=$$arch"-hf" || arch=$$arch"-el";\ + fi; \ + mkdir -p $@ && \ + cd $@ && \ + cmake -DENABLE_VALGRIND=$(VALGRIND) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_linux_$$arch.cmake ../../.. &>cmake.log -$(BUILD_DIR)/stm32f3: - @ mkdir -p $(BUILD_DIR)/stm32f3 && cd $(BUILD_DIR)/stm32f3 && cmake -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f3.cmake ../../.. &>cmake.log +$(BUILD_DIRS_STM32F3): + @ mkdir -p $@ && \ + cd $@ && \ + cmake -DENABLE_VALGRIND=$(VALGRIND) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f3.cmake ../../.. &>cmake.log -$(BUILD_DIR)/stm32f4: - @ mkdir -p $(BUILD_DIR)/stm32f4 && cd $(BUILD_DIR)/stm32f4 && cmake -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f4.cmake ../../.. &>cmake.log +$(BUILD_DIRS_STM32F4): + @ mkdir -p $@ && \ + cd $@ && \ + cmake -DENABLE_VALGRIND=$(VALGRIND) -DCMAKE_TOOLCHAIN_FILE=build/configs/toolchain_mcu_stm32f4.cmake ../../.. &>cmake.log $(JERRY_LINUX_TARGETS): $(BUILD_DIR)/native @ mkdir -p $(OUT_DIR)/$@ @@ -185,6 +225,6 @@ precommit: clean # @$(MAKE) -s -f Makefile.mk TARGET=$@ $@ clean: - @ rm -rf $(BUILD_DIR) $(OUT_DIR) + @ rm -rf $(BUILD_DIRS_ALL) $(OUT_DIR) -.PHONY: clean build unittests_run +.PHONY: clean build unittests_run $(JERRY_TARGETS) $(FLASH_TARGETS) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 320522463..85fb64c89 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -112,7 +112,14 @@ project (JerryCore CXX C ASM) ${SOURCE_CORE_PARSER_COLLECTIONS} ${SOURCE_CORE_PARSER_JS} ${SOURCE_CORE_JRT}) - + +# Per-option configuration + # Valgrind + if("${ENABLE_VALGRIND}" STREQUAL "ON") + set(DEFINES_JERRY ${DEFINES_JERRY} ${DEFINES_JERRY_VALGRIND}) + set(INCLUDE_CORE ${INCLUDE_CORE} ${INCLUDE_THIRD_PARTY_VALGRIND}) + endif() + # Platform-specific configuration set(DEFINES_JERRY ${DEFINES_JERRY} ${DEFINES_JERRY_${PLATFORM}})