osrm-backend/third_party/mason/scripts/llnode/1.4.1/script.sh

60 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
MASON_NAME=llnode
MASON_VERSION=1.4.1
MASON_LIB_FILE=lib/llnode.${MASON_DYNLIB_SUFFIX}
. ${MASON_DIR}/mason.sh
function mason_load_source {
mason_download \
https://github.com/nodejs/llnode/archive/v${MASON_VERSION}.tar.gz \
b7ff83ff4686fdeb15517310b6e048c9c864794a
mason_extract_tar_gz
export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION}
}
function mason_prepare_compile {
LLVM_VERSION=3.9.1
${MASON_DIR}/mason install llvm 3.9.1
LLVM_PATH=$(${MASON_DIR}/mason prefix llvm 3.9.1)
}
function mason_compile {
git clone --depth 1 https://chromium.googlesource.com/external/gyp.git tools/gyp
# ../src/llv8.cc:256:43: error: expected ')'
#snprintf(tmp, sizeof(tmp), " fn=0x%016" PRIx64, fn.raw());
# need to define STDC macros since libc++ adheres to spec: http://en.cppreference.com/w/cpp/types/integer
export CXXFLAGS="-stdlib=libc++ ${CXXFLAGS} -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
export LDFLAGS="-stdlib=libc++ ${LDFLAGS}"
# per the llvm package, on linux we statically link libc++ for full portability
# while on osx we use the system libc++
if [[ -f ${LLVM_PATH}/lib/libc++.a ]]; then
export LDFLAGS="-Wl,--whole-archive ${LLVM_PATH}/lib/libc++.a ${LLVM_PATH}/lib/libc++abi.a ${LDFLAGS}"
fi
./gyp_llnode -Dlldb_build_dir=${LLVM_PATH} -Dlldb_dir=${LLVM_PATH}
make -C out/ -j${MASON_CONCURRENCY} V=1
mkdir -p ${MASON_PREFIX}/lib
if [[ $(uname -s) == 'Darwin' ]]; then
cp ./out/Release/llnode* ${MASON_PREFIX}/lib/
else
cp ./out/Release/lib.target/llnode* ${MASON_PREFIX}/lib/
fi
}
function mason_cflags {
:
}
function mason_ldflags {
echo -L${MASON_PREFIX} -llnode
}
function mason_static_libs {
:
}
mason_run "$@"