Build project with LLVM 7. Add option to disable using ld.gold

This commit is contained in:
Wes McKinney committed 2019-02-06 10:36:58 -06:00
1 parent 4c680ca23c
commit 2fc3a26d69
13 files changed
+52 -38

No files matched your search

+5 -5
View File
@@ -58,7 +58,7 @@ matrix:
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_lint.sh
- name: "C++ unit tests w/ Valgrind, clang 6.0"
- name: "C++ unit tests w/ Valgrind, clang 7.0"
language: cpp
os: linux
env:
@@ -72,8 +72,8 @@ matrix:
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ]; then exit; fi
- export CC="clang-6.0"
- export CXX="clang++-6.0"
- export CC="clang-7.0"
- export CXX="clang++-7.0"
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
# If either C++ or Python changed, we must install the C++ libraries
@@ -264,8 +264,8 @@ matrix:
- ARROW_TRAVIS_PLASMA_JAVA_CLIENT=1
before_script:
- if [ $ARROW_CI_INTEGRATION_AFFECTED != "1" ]; then exit; fi
- export CC="clang-6.0"
- export CXX="clang++-6.0"
- export CC="clang-7.0"
- export CXX="clang++-7.0"
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
- nvm install 11.6
+3
View File
@@ -23,6 +23,9 @@ export MINICONDA=$HOME/miniconda
export CONDA_PKGS_DIRS=$HOME/.conda_packages
export CONDA_BINUTILS_VERSION=2.31
export ARROW_LLVM_VERSION=7.0
export CONDA_LLVM_VERSION=7.0.1
export ARROW_CPP_DIR=$TRAVIS_BUILD_DIR/cpp
export ARROW_PYTHON_DIR=$TRAVIS_BUILD_DIR/python
export ARROW_C_GLIB_DIR=$TRAVIS_BUILD_DIR/c_glib
+3 -2
View File
@@ -24,6 +24,7 @@ source $TRAVIS_BUILD_DIR/ci/travis_env_common.sh
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
sudo apt-add-repository -y \
"deb https://apt.llvm.org/$DISTRO_CODENAME/ llvm-toolchain-$DISTRO_CODENAME-6.0 main"
"deb https://llvm.org/apt/$DISTRO_CODENAME/ llvm-toolchain-$DISTRO_CODENAME-$ARROW_LLVM_VERSION main"
>>>>>>> Build project with LLVM 7. Add option to disable using ld.gold
sudo apt-get update -qq
sudo apt-get install -q clang-6.0 clang-format-6.0 clang-tidy-6.0
sudo apt-get install -q clang-$ARROW_LLVM_VERSION clang-format-$ARROW_LLVM_VERSION clang-tidy-$ARROW_LLVM_VERSION
+4 -1
View File
@@ -37,6 +37,10 @@ if [ "$ARROW_TRAVIS_COVERAGE" == "1" ]; then
sudo apt-get install -y -qq lcov
fi
if [ "$ARROW_TRAVIS_GANDIVA" == "1" ]; then
sudo apt-get install -y -qq llvm-$ARROW_LLVM_VERSION-dev
fi
set -x
if [ "$DISTRO_CODENAME" != "trusty" ]; then
if [ "$ARROW_TRAVIS_GANDIVA" == "1" ]; then
@@ -56,4 +60,3 @@ if [ "$DISTRO_CODENAME" != "trusty" ]; then
java -version
mvn -v
fi
+1 -1
View File
@@ -26,7 +26,7 @@ if [ ! -e $CPP_TOOLCHAIN ]; then
CONDA_LABEL=""
if [ $ARROW_TRAVIS_GANDIVA == "1" ] && [ $TRAVIS_OS_NAME == "osx" ]; then
CONDA_PACKAGES="$CONDA_PACKAGES llvmdev=6.0.1"
CONDA_PACKAGES="$CONDA_PACKAGES llvmdev=$CONDA_LLVM_VERSION"
fi
if [ $TRAVIS_OS_NAME == "linux" ]; then
+10 -1
View File
@@ -74,7 +74,12 @@ endif()
set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support")
set(CLANG_FORMAT_VERSION "6.0")
set(CLANG_TOOLS_MAJOR_VERSION string(SUBSTRING ${CLANG_TOOLS_VERSION} 0 1))
set(ARROW_LLVM_VERSION "7.0")
STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+" "\\1" ARROW_LLVM_MAJOR_VERSION "${ARROW_LLVM_VERSION}")
STRING(REGEX REPLACE "^[0-9]+\\.([0-9]+)" "\\1" ARROW_LLVM_MINOR_VERSION "${ARROW_LLVM_VERSION}")
find_package(ClangTools)
if ("$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" STREQUAL "1" OR CLANG_TIDY_FOUND)
# Generate a Clang compile_commands.json "compilation database" file for use
@@ -123,6 +128,10 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
"Use ccache when compiling (if available)"
ON)
option(ARROW_USE_LD_GOLD
"Use ld.gold for linking on Linux (if available)"
ON)
option(ARROW_USE_TSAN
"Enable Thread Sanitizer checks"
OFF)
+2 -2
View File
@@ -292,9 +292,9 @@ In addition to the arrow dependencies, gandiva requires :
On Ubuntu/Debian you can install these requirements with:
```shell
sudo apt-add-repository -y "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-6.0 main"
sudo apt-add-repository -y "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-7.0 main"
sudo apt-get update -qq
sudo apt-get install llvm-6.0-dev
sudo apt-get install llvm-7.0-dev
```
On macOS, you can use [Homebrew][1]:
+10 -15
View File
@@ -57,12 +57,8 @@ set(CLANG_TOOLS_SEARCH_PATHS
"${HOMEBREW_PREFIX}/bin")
find_program(CLANG_TIDY_BIN
NAMES clang-tidy-4.0
clang-tidy-3.9
clang-tidy-3.8
clang-tidy-3.7
clang-tidy-3.6
clang-tidy
NAMES clang-tidy-${ARROW_LLVM_VERSION}
clang-tidy-${ARROW_LLVM_MAJOR_VERSION}
PATHS ${CLANG_TOOLS_SEARCH_PATHS} NO_DEFAULT_PATH
)
@@ -74,35 +70,34 @@ else()
message(STATUS "clang-tidy found at ${CLANG_TIDY_BIN}")
endif()
if (CLANG_FORMAT_VERSION)
if (ARROW_LLVM_VERSION)
find_program(CLANG_FORMAT_BIN
NAMES clang-format-${CLANG_FORMAT_VERSION}
NAMES clang-format-${ARROW_LLVM_VERSION}
clang-format-${ARROW_LLVM_MAJOR_VERSION}
PATHS ${CLANG_TOOLS_SEARCH_PATHS} NO_DEFAULT_PATH
)
# If not found yet, search alternative locations
if ("${CLANG_FORMAT_BIN}" STREQUAL "CLANG_FORMAT_BIN-NOTFOUND")
STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+" "\\1" CLANG_FORMAT_MAJOR_VERSION "${CLANG_FORMAT_VERSION}")
STRING(REGEX REPLACE "^[0-9]+\\.([0-9]+)" "\\1" CLANG_FORMAT_MINOR_VERSION "${CLANG_FORMAT_VERSION}")
if (APPLE)
# Homebrew ships older LLVM versions in /usr/local/opt/llvm@version/
if ("${CLANG_FORMAT_MINOR_VERSION}" STREQUAL "0")
if ("${ARROW_LLVM_MINOR_VERSION}" STREQUAL "0")
find_program(CLANG_FORMAT_BIN
NAMES clang-format
PATHS "${HOMEBREW_PREFIX}/opt/llvm@${CLANG_FORMAT_MAJOR_VERSION}/bin"
PATHS "${HOMEBREW_PREFIX}/opt/llvm@${ARROW_LLVM_MAJOR_VERSION}/bin"
NO_DEFAULT_PATH
)
else()
find_program(CLANG_FORMAT_BIN
NAMES clang-format
PATHS "${HOMEBREW_PREFIX}/opt/llvm@${CLANG_FORMAT_VERSION}/bin"
PATHS "${HOMEBREW_PREFIX}/opt/llvm@${ARROW_LLVM_VERSION}/bin"
NO_DEFAULT_PATH
)
endif()
if ("${CLANG_FORMAT_BIN}" STREQUAL "CLANG_FORMAT_BIN-NOTFOUND")
# binary was still not found, look into Cellar
file(GLOB CLANG_FORMAT_PATH "${HOMEBREW_PREFIX}/Cellar/llvm/${CLANG_FORMAT_VERSION}.*")
file(GLOB CLANG_FORMAT_PATH "${HOMEBREW_PREFIX}/Cellar/llvm/${ARROW_LLVM_VERSION}.*")
find_program(CLANG_FORMAT_BIN
NAMES clang-format
PATHS "${CLANG_FORMAT_PATH}/bin"
@@ -119,7 +114,7 @@ if (CLANG_FORMAT_VERSION)
execute_process(COMMAND ${CLANG_FORMAT_BIN} "-version"
OUTPUT_VARIABLE CLANG_FORMAT_FOUND_VERSION_MESSAGE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT ("${CLANG_FORMAT_FOUND_VERSION_MESSAGE}" MATCHES "^clang-format version ${CLANG_FORMAT_MAJOR_VERSION}\\.${CLANG_FORMAT_MINOR_VERSION}.*"))
if (NOT ("${CLANG_FORMAT_FOUND_VERSION_MESSAGE}" MATCHES "^clang-format version ${ARROW_LLVM_MAJOR_VERSION}\\.${ARROW_LLVM_MINOR_VERSION}.*"))
set(CLANG_FORMAT_BIN "CLANG_FORMAT_BIN-NOTFOUND")
endif()
endif()
+4 -4
View File
@@ -20,8 +20,6 @@
# find_package(LLVM)
#
set(GANDIVA_LLVM_VERSION 6.0)
if (APPLE)
# Also look in homebrew for a matching llvm version
find_program(BREW_BIN brew)
@@ -34,7 +32,7 @@ if (APPLE)
endif()
endif()
find_package(LLVM ${GANDIVA_LLVM_VERSION} REQUIRED CONFIG HINTS
find_package(LLVM ${ARROW_LLVM_VERSION} REQUIRED CONFIG HINTS
/usr/local/opt/llvm
/usr/share
${LLVM_BREW_PREFIX}
@@ -45,7 +43,9 @@ message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
# Find the libraries that correspond to the LLVM components
llvm_map_components_to_libnames(LLVM_LIBS core mcjit native ipo bitreader target linker analysis debuginfodwarf)
find_program(CLANG_EXECUTABLE clang
find_program(CLANG_EXECUTABLE
NAMES clang-${ARROW_LLVM_VERSION}
clang-${ARROW_LLVM_MAJOR_VERSION}
HINTS ${LLVM_TOOLS_BINARY_DIR})
if (CLANG_EXECUTABLE)
message(STATUS "Found clang ${CLANG_EXECUTABLE}")
+6 -5
View File
@@ -291,7 +291,7 @@ if (NOT WIN32 AND NOT APPLE)
GET_GOLD_VERSION()
if (GOLD_VERSION)
set(MUST_USE_GOLD 1)
else()
elseif(ARROW_USE_LD_GOLD)
# Can the compiler optionally enable the gold linker?
GET_GOLD_VERSION("-fuse-ld=gold")
@@ -359,10 +359,11 @@ endif()
# -DARROW_CXXFLAGS="-g" to add them
if (NOT MSVC)
if(ARROW_GGDB_DEBUG)
set(C_FLAGS_DEBUG "-ggdb -O0")
set(C_FLAGS_FASTDEBUG "-ggdb -O1")
set(CXX_FLAGS_DEBUG "-ggdb -O0")
set(CXX_FLAGS_FASTDEBUG "-ggdb -O1")
set(ARROW_DEBUG_SYMBOL_TYPE "gdb")
set(C_FLAGS_DEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O0")
set(C_FLAGS_FASTDEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O1")
set(CXX_FLAGS_DEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O0")
set(CXX_FLAGS_FASTDEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O1")
else()
set(C_FLAGS_DEBUG "-g -O0")
set(C_FLAGS_FASTDEBUG "-g -O1")
+2
View File
@@ -45,8 +45,10 @@
#include <llvm/Support/raw_ostream.h>
#include <llvm/Transforms/IPO.h>
#include <llvm/Transforms/IPO/PassManagerBuilder.h>
#include <llvm/Transforms/InstCombine/InstCombine.h>
#include <llvm/Transforms/Scalar.h>
#include <llvm/Transforms/Scalar/GVN.h>
#include <llvm/Transforms/Utils.h>
#include <llvm/Transforms/Vectorize.h>
#if defined(_MSC_VER)
+1 -1
View File
@@ -85,7 +85,7 @@ class EvalBatch {
/// An array of 'num_buffers_', each containing a buffer. The buffer
/// sizes depends on the data type, but all of them have the same
/// number of slots (equal to num_records_).
std::unique_ptr<uint8_t* []> buffers_array_;
std::unique_ptr<uint8_t*[]> buffers_array_;
std::unique_ptr<LocalBitMapsHolder> local_bitmaps_holder_;
+1 -1
View File
@@ -53,7 +53,7 @@ class LocalBitMapsHolder {
std::vector<std::unique_ptr<uint8_t[]>> local_bitmaps_vec_;
/// An array of the local bitmaps.
std::unique_ptr<uint8_t* []> local_bitmaps_array_;
std::unique_ptr<uint8_t*[]> local_bitmaps_array_;
int64_t local_bitmap_size_;
};