From c104a58008fc4bb82026c56c178338771cac2010 Mon Sep 17 00:00:00 2001 From: "Jerry Deferred Test Account (ARM Linux Host)" Date: Tue, 10 Feb 2015 10:45:21 +0000 Subject: [PATCH] CMake: fixing search of gcc-ar and gcc-ranlib tools, linkage of libgcc; Makefile: replacing path to out with $(OUT_DIR). --- CMakeLists.txt | 33 +++++++++++++++++++++++++++------ Makefile | 18 +++++++++--------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41c4469b7..2e537a826 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,8 +29,13 @@ project (Jerry CXX C ASM) endif() # Use gcc-ar and gcc-ranlib to support LTO - set(CMAKE_AR ${CMAKE_C_COMPILER}-ar) - set(CMAKE_RANLIB ${CMAKE_C_COMPILER}-ranlib) + get_filename_component(PATH_TO_GCC ${CMAKE_C_COMPILER} REALPATH) + get_filename_component(DIRECTORY_GCC ${PATH_TO_GCC} DIRECTORY) + get_filename_component(FILE_NAME_GCC ${PATH_TO_GCC} NAME) + string(REPLACE "gcc" "gcc-ar" CMAKE_AR ${FILE_NAME_GCC}) + string(REPLACE "gcc" "gcc-ranlib" CMAKE_RANLIB ${FILE_NAME_GCC}) + set(CMAKE_AR ${DIRECTORY_GCC}/${CMAKE_AR}) + set(CMAKE_RANLIB ${DIRECTORY_GCC}/${CMAKE_RANLIB}) # Remove rdynamic option set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS ) @@ -159,7 +164,7 @@ project (Jerry CXX C ASM) # Unit tests set(LINKER_FLAGS_UNIT_TEST - "${LINKER_FLAGS_COMMON_RELEASE} -lc") + "${LINKER_FLAGS_COMMON_RELEASE}") # Definitions # Common @@ -463,6 +468,22 @@ project (Jerry CXX C ASM) tests/unit/test_preparser.cpp tests/unit/test_string_to_number.cpp) +# Imported libraries + # libc + add_library(imported_libc SHARED IMPORTED) + execute_process(COMMAND gcc -print-file-name=libc.so + OUTPUT_VARIABLE IMPORTED_LIBC_LOCATION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set_property(TARGET imported_libc + PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBC_LOCATION}) + # libgcc + add_library(imported_libgcc STATIC IMPORTED) + execute_process(COMMAND gcc -print-file-name=libgcc.a + OUTPUT_VARIABLE IMPORTED_LIBGCC_LOCATION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set_property(TARGET imported_libgcc + PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION}) + # Architecture-specific configuration if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") set(CXX_FLAGS_COMMON_ARCH ${CXX_FLAGS_JERRY_X86_64}) @@ -509,7 +530,7 @@ project (Jerry CXX C ASM) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_JERRY} ${LINKER_FLAGS_STATIC}") target_compile_definitions(${TARGET_NAME} PRIVATE ${DEFINES_JERRY}) target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_DIRECTORIES_JERRY}) - target_link_libraries(${TARGET_NAME} ${TARGET_NAME}.lib) + target_link_libraries(${TARGET_NAME} ${TARGET_NAME}.lib imported_libgcc) if(${STRIP_LINUX_RELEASE_BINARY} STREQUAL "ON") add_custom_command(TARGET ${TARGET_NAME} @@ -557,7 +578,7 @@ project (Jerry CXX C ASM) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_JERRY} ${LINKER_FLAGS_UNIT_TEST}") target_compile_definitions(${TARGET_NAME} PRIVATE ${DEFINES_JERRY} ${DEFINES_UNIT_TEST}) target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_DIRECTORIES_JERRY} ${INCLUDE_DIRECTORIES_UNIT_TEST}) - target_link_libraries(${TARGET_NAME} unit_tests.lib) + target_link_libraries(${TARGET_NAME} unit_tests.lib imported_libc imported_libgcc) add_dependencies(unittests ${TARGET_NAME}) endforeach() @@ -615,7 +636,7 @@ project (Jerry CXX C ASM) ${INCLUDE_DIRECTORIES_JERRY} ${INCLUDE_DIRECTORIES_JERRY_MCU_${PLATFORM}} ${INCLUDE_DIRECTORIES_THIRD_PARTY_MCU_${PLATFORM}}) - target_link_libraries(${TARGET_NAME} ${TARGET_NAME}.jerry.lib ${TARGET_NAME}.third_party.lib) + target_link_libraries(${TARGET_NAME} ${TARGET_NAME}.jerry.lib ${TARGET_NAME}.third_party.lib imported_libgcc) add_custom_target(${TARGET_NAME}.flash COMMAND ${CMAKE_OBJCOPY} -Obinary $ $.bin diff --git a/Makefile b/Makefile index 09d4d2344..94be1808b 100644 --- a/Makefile +++ b/Makefile @@ -74,19 +74,19 @@ $(BUILD_DIR)/mcu: @ cd $(BUILD_DIR)/mcu; cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain_mcu_armv7l.cmake ../.. &>cmake.log $(JERRY_LINUX_TARGETS): $(BUILD_DIR)/native - @ mkdir -p out/$@ - @ $(MAKE) -C $(BUILD_DIR)/native VERBOSE=1 $@ &>out/$@/make.log - @ cp $(BUILD_DIR)/native/$@ out/$@/jerry + @ mkdir -p $(OUT_DIR)/$@ + @ $(MAKE) -C $(BUILD_DIR)/native VERBOSE=1 $@ &>$(OUT_DIR)/$@/make.log + @ cp $(BUILD_DIR)/native/$@ $(OUT_DIR)/$@/jerry unittests: $(BUILD_DIR)/native - @ mkdir -p out/$@ - @ $(MAKE) -C $(BUILD_DIR)/native VERBOSE=1 $@ &>out/$@/make.log - @ cp $(BUILD_DIR)/native/unit_test_* out/$@ + @ mkdir -p $(OUT_DIR)/$@ + @ $(MAKE) -C $(BUILD_DIR)/native VERBOSE=1 $@ &>$(OUT_DIR)/$@/make.log + @ cp $(BUILD_DIR)/native/unit_test_* $(OUT_DIR)/$@ $(JERRY_MCU_TARGETS): $(BUILD_DIR)/mcu - @ mkdir -p out/$@ - @ $(MAKE) -C $(BUILD_DIR)/mcu VERBOSE=1 $@ &>out/$@/make.log - @ cp $(BUILD_DIR)/mcu/$@ out/$@/jerry + @ mkdir -p $(OUT_DIR)/$@ + @ $(MAKE) -C $(BUILD_DIR)/mcu VERBOSE=1 $@ &>$(OUT_DIR)/$@/make.log + @ cp $(BUILD_DIR)/mcu/$@ $(OUT_DIR)/$@/jerry build: $(JERRY_TARGETS) unittests