diff --git a/third_party/mason/CHANGELOG.md b/third_party/mason/CHANGELOG.md index 2e608b8bb..cd52d6cd6 100644 --- a/third_party/mason/CHANGELOG.md +++ b/third_party/mason/CHANGELOG.md @@ -1,4 +1,18 @@ +## 0.4.0 + + - Now defaulting to clang 3.9.1 for building binaries + - clang++ binaries no longer distribute libc++ headers on OS X (instead they depend on system) + - Reduced size of v8 libs by striping debug symbols + - Fixed minjur latest package to build in Release mode + - Added polylabel 1.0.2, protozero 1.4.5, rocksdb v4.13, libosmium 2.10.3, llvm 3.9.1, + boost 1.63.0, cmake 3.7.1, cairo 1.14.6, freetype 2.6.5, harfbuzz 1.3.0, jpeg_turbo 1.5.0, + libpng 1.6.24, pixman 0.34.0, sqlite 3.14.1, twemproxy 0.4.1, + - Removed llvm 3.8.0, clang 3.8.0, llvm 3.9.0, luabind, luajit + - Rebuilt libpq 9.5.2, libtiff 4.0.6, utfcpp 2.3.4, minjur latest + +Changes: https://github.com/mapbox/mason/compare/v0.3.0...v0.4.0 + ## 0.3.0 - Updated android compile flags @@ -7,7 +21,7 @@ - Added tippecanoe `1.15.1` - Added `iwyu` and `asan_symbolize` python script to llvm+clang++ packages -Changes: https://github.com/mapbox/mason/compare/v0.1.1...v0.2.0 +Changes: https://github.com/mapbox/mason/compare/v0.2.0...v0.3.0 ## 0.2.0 diff --git a/third_party/mason/mason b/third_party/mason/mason index 9b10e36d2..16cd82e59 100755 --- a/third_party/mason/mason +++ b/third_party/mason/mason @@ -7,7 +7,7 @@ MASON_VERSION=$1 ; shift set -e set -o pipefail -MASON_RELEASED_VERSION="0.3.0" +MASON_RELEASED_VERSION="0.4.0" if [ "${MASON_COMMAND}" = "--version" ]; then echo ${MASON_RELEASED_VERSION} diff --git a/third_party/mason/scripts/luabind_lua51/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml b/third_party/mason/scripts/boost/1.63.0/.travis.yml similarity index 58% rename from third_party/mason/scripts/luabind_lua51/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml rename to third_party/mason/scripts/boost/1.63.0/.travis.yml index 3431d4fb7..15c3ad555 100644 --- a/third_party/mason/scripts/luabind_lua51/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml +++ b/third_party/mason/scripts/boost/1.63.0/.travis.yml @@ -1,16 +1,10 @@ -language: cpp - -sudo: false +language: generic matrix: include: - - os: osx - compiler: clang - os: linux - compiler: clang + sudo: false script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost/1.63.0/base.sh b/third_party/mason/scripts/boost/1.63.0/base.sh new file mode 100644 index 000000000..68f713f7b --- /dev/null +++ b/third_party/mason/scripts/boost/1.63.0/base.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# NOTE: use the ./utils/new_boost.sh script to create new versions + +export MASON_VERSION=1.63.0 +export BOOST_VERSION=${MASON_VERSION//./_} +export BOOST_TOOLSET="clang" +export BOOST_TOOLSET_CXX="clang++" +export BOOST_ARCH="x86" +export BOOST_SHASUM=5c5cf0fd35a5950ed9e00ba54153df47747803f9 +# special override to ensure each library shares the cached download +export MASON_DOWNLOAD_SLUG="boost-${MASON_VERSION}" diff --git a/third_party/mason/scripts/boost/1.63.0/common.sh b/third_party/mason/scripts/boost/1.63.0/common.sh new file mode 100644 index 000000000..70c45d38a --- /dev/null +++ b/third_party/mason/scripts/boost/1.63.0/common.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +function mason_load_source { + mason_download \ + http://downloads.sourceforge.net/project/boost/boost/${MASON_VERSION}/boost_${BOOST_VERSION}.tar.bz2 \ + ${BOOST_SHASUM} + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/boost_${BOOST_VERSION} + + mason_extract_tar_bz2 +} + +function gen_config() { + echo "using $1 : : $(which $2)" > user-config.jam + if [[ "${AR:-false}" != false ]] || [[ "${RANLIB:-false}" != false ]]; then + echo ' : ' >> user-config.jam + if [[ "${AR:-false}" != false ]]; then + echo "${AR} " >> user-config.jam + fi + if [[ "${RANLIB:-false}" != false ]]; then + echo "${RANLIB} " >> user-config.jam + fi + fi + echo ' ;' >> user-config.jam +} + +function mason_compile { + gen_config ${BOOST_TOOLSET} ${BOOST_TOOLSET_CXX} + if [[ ! -f ./b2 ]] ; then + ./bootstrap.sh + fi + ./b2 \ + --with-${BOOST_LIBRARY} \ + --prefix=${MASON_PREFIX} \ + -j${MASON_CONCURRENCY} \ + -d0 \ + --ignore-site-config --user-config=user-config.jam \ + architecture="${BOOST_ARCH}" \ + toolset="${BOOST_TOOLSET}" \ + link=static \ + variant=release \ + linkflags="${LDFLAGS:-" "}" \ + cxxflags="${CXXFLAGS:-" "}" \ + stage + mkdir -p $(dirname ${MASON_PREFIX}/${MASON_LIB_FILE}) + mv stage/${MASON_LIB_FILE} ${MASON_PREFIX}/${MASON_LIB_FILE} +} + +function mason_prefix { + echo "${MASON_PREFIX}" +} + +function mason_cflags { + echo "-I${MASON_PREFIX}/include" +} + +function mason_ldflags { + local LOCAL_LDFLAGS + LOCAL_LDFLAGS="-L${MASON_PREFIX}/lib" + if [[ ${BOOST_LIBRARY:-false} != false ]]; then + LOCAL_LDFLAGS="${LOCAL_LDFLAGS} -lboost_${BOOST_LIBRARY}" + fi + echo $LOCAL_LDFLAGS +} diff --git a/third_party/mason/scripts/boost/1.63.0/script.sh b/third_party/mason/scripts/boost/1.63.0/script.sh new file mode 100755 index 000000000..2790bbe9a --- /dev/null +++ b/third_party/mason/scripts/boost/1.63.0/script.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# inherit from boost base (used for all boost library packages) +source ${HERE}/base.sh + +# this package is the one that is header-only +MASON_NAME=boost +MASON_HEADER_ONLY=true + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${HERE}/common.sh + +# override default unpacking to just unpack headers +function mason_load_source { + mason_download \ + http://downloads.sourceforge.net/project/boost/boost/${MASON_VERSION}/boost_${BOOST_VERSION}.tar.bz2 \ + ${BOOST_SHASUM} + + mason_extract_tar_bz2 boost_${BOOST_VERSION}/boost + + MASON_BUILD_PATH=${MASON_ROOT}/.build/boost_${BOOST_VERSION} +} + +# override default "compile" target for just the header install +function mason_compile { + mkdir -p ${MASON_PREFIX}/include + cp -r ${MASON_ROOT}/.build/boost_${BOOST_VERSION}/boost ${MASON_PREFIX}/include + + # work around NDK bug https://code.google.com/p/android/issues/detail?id=79483 + + patch ${MASON_PREFIX}/include/boost/core/demangle.hpp <<< "19a20,21 +> #if !defined(__ANDROID__) +> +25a28,29 +> #endif +> +" + + # work around https://github.com/Project-OSRM/node-osrm/issues/191 + patch ${MASON_PREFIX}/include/boost/interprocess/detail/os_file_functions.hpp <<< "471c471 +< return ::open(name, (int)mode); +--- +> return ::open(name, (int)mode,S_IRUSR|S_IWUSR); +" + +} + +function mason_ldflags { + : +} + +function mason_static_libs { + : +} + +mason_run "$@" diff --git a/third_party/mason/scripts/clang++/3.8.0/.travis.yml b/third_party/mason/scripts/boost_libatomic/1.63.0/.travis.yml similarity index 70% rename from third_party/mason/scripts/clang++/3.8.0/.travis.yml rename to third_party/mason/scripts/boost_libatomic/1.63.0/.travis.yml index d48323148..d4048f062 100644 --- a/third_party/mason/scripts/clang++/3.8.0/.travis.yml +++ b/third_party/mason/scripts/boost_libatomic/1.63.0/.travis.yml @@ -3,22 +3,17 @@ language: generic matrix: include: - os: osx - osx_image: xcode7.3 + osx_image: xcode8 compiler: clang - os: linux - compiler: gcc - env: CXX=g++-5 CC=gcc-5 sudo: false addons: apt: sources: - ubuntu-toolchain-r-test packages: - - libstdc++6 - - g++-5 + - libstdc++-5-dev script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libatomic/1.63.0/script.sh b/third_party/mason/scripts/boost_libatomic/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libatomic/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/clang-tidy/3.8.0/.travis.yml b/third_party/mason/scripts/boost_libchrono/1.63.0/.travis.yml similarity index 70% rename from third_party/mason/scripts/clang-tidy/3.8.0/.travis.yml rename to third_party/mason/scripts/boost_libchrono/1.63.0/.travis.yml index d48323148..d4048f062 100644 --- a/third_party/mason/scripts/clang-tidy/3.8.0/.travis.yml +++ b/third_party/mason/scripts/boost_libchrono/1.63.0/.travis.yml @@ -3,22 +3,17 @@ language: generic matrix: include: - os: osx - osx_image: xcode7.3 + osx_image: xcode8 compiler: clang - os: linux - compiler: gcc - env: CXX=g++-5 CC=gcc-5 sudo: false addons: apt: sources: - ubuntu-toolchain-r-test packages: - - libstdc++6 - - g++-5 + - libstdc++-5-dev script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libchrono/1.63.0/script.sh b/third_party/mason/scripts/boost_libchrono/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libchrono/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/clang-format/3.8.0/.travis.yml b/third_party/mason/scripts/boost_libdate_time/1.63.0/.travis.yml similarity index 70% rename from third_party/mason/scripts/clang-format/3.8.0/.travis.yml rename to third_party/mason/scripts/boost_libdate_time/1.63.0/.travis.yml index d48323148..d4048f062 100644 --- a/third_party/mason/scripts/clang-format/3.8.0/.travis.yml +++ b/third_party/mason/scripts/boost_libdate_time/1.63.0/.travis.yml @@ -3,22 +3,17 @@ language: generic matrix: include: - os: osx - osx_image: xcode7.3 + osx_image: xcode8 compiler: clang - os: linux - compiler: gcc - env: CXX=g++-5 CC=gcc-5 sudo: false addons: apt: sources: - ubuntu-toolchain-r-test packages: - - libstdc++6 - - g++-5 + - libstdc++-5-dev script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libdate_time/1.63.0/script.sh b/third_party/mason/scripts/boost_libdate_time/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libdate_time/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/clang/3.8.0/.travis.yml b/third_party/mason/scripts/boost_libfilesystem/1.63.0/.travis.yml similarity index 60% rename from third_party/mason/scripts/clang/3.8.0/.travis.yml rename to third_party/mason/scripts/boost_libfilesystem/1.63.0/.travis.yml index 992433060..d4048f062 100644 --- a/third_party/mason/scripts/clang/3.8.0/.travis.yml +++ b/third_party/mason/scripts/boost_libfilesystem/1.63.0/.travis.yml @@ -1,19 +1,9 @@ language: generic -cache: - directories: - - $HOME/.ccache - -env: - global: - - CCACHE_TEMPDIR=/tmp/.ccache-temp - - CCACHE_COMPRESS=1 - - CASHER_TIME_OUT=1000 - matrix: include: - os: osx - osx_image: xcode7.3 + osx_image: xcode8 compiler: clang - os: linux sudo: false @@ -22,12 +12,8 @@ matrix: sources: - ubuntu-toolchain-r-test packages: - - libstdc++6 - libstdc++-5-dev - - g++-5 script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libfilesystem/1.63.0/script.sh b/third_party/mason/scripts/boost_libfilesystem/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libfilesystem/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libiostreams/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libiostreams/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libiostreams/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libiostreams/1.63.0/script.sh b/third_party/mason/scripts/boost_libiostreams/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libiostreams/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libprogram_options/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libprogram_options/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libprogram_options/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libprogram_options/1.63.0/script.sh b/third_party/mason/scripts/boost_libprogram_options/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libprogram_options/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libpython/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libpython/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libpython/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libpython/1.63.0/patch.diff b/third_party/mason/scripts/boost_libpython/1.63.0/patch.diff new file mode 100644 index 000000000..f0fa2b156 --- /dev/null +++ b/third_party/mason/scripts/boost_libpython/1.63.0/patch.diff @@ -0,0 +1,12 @@ +--- libs/python/src/converter/builtin_converters.cpp 2012-12-07 11:51:06.000000000 -0800 ++++ libs/python/src/converter/builtin_converters.cpp 2014-04-01 17:24:37.000000000 -0700 +@@ -32,7 +32,9 @@ + + void shared_ptr_deleter::operator()(void const*) + { ++ PyGILState_STATE gil = PyGILState_Ensure(); + owner.reset(); ++ PyGILState_Release(gil); + } + + namespace diff --git a/third_party/mason/scripts/boost_libpython/1.63.0/script.sh b/third_party/mason/scripts/boost_libpython/1.63.0/script.sh new file mode 100755 index 000000000..d1b6c4a21 --- /dev/null +++ b/third_party/mason/scripts/boost_libpython/1.63.0/script.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +function write_python_config() { +# usage: +# write_python_config +PYTHON_VERSION=$2 +# note: apple pythons need '/System' +PYTHON_BASE=$3 +# note: python 3 uses 'm' +PYTHON_VARIANT=$4 +if [[ ${UNAME} == 'Darwin' ]]; then + echo " + using python + : ${PYTHON_VERSION} # version + : ${PYTHON_BASE}/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}${PYTHON_VARIANT} # cmd-or-prefix + : ${PYTHON_BASE}/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}${PYTHON_VARIANT} # includes + : ${PYTHON_BASE}/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config${PYTHON_VARIANT} # a lib actually symlink + : ${BOOST_TOOLSET} # condition + ; + " >> $1 +else + if [[ ${UNAME} == 'FreeBSD' ]]; then + echo " + using python + : ${PYTHON_VERSION} # version + : /usr/local/bin/python${PYTHON_VERSION}${PYTHON_VARIANT} # cmd-or-prefix + : /usr/local/include/python${PYTHON_VERSION} # includes + : /usr/local/lib/python${PYTHON_VERSION}/config${PYTHON_VARIANT} + : ${BOOST_TOOLSET} # condition + ; + " >> $1 + else + echo " + using python + : ${PYTHON_VERSION} # version + : /usr/bin/python${PYTHON_VERSION}${PYTHON_VARIANT} # cmd-or-prefix + : /usr/include/python${PYTHON_VERSION} # includes + : /usr/lib/python${PYTHON_VERSION}/config${PYTHON_VARIANT} + : ${BOOST_TOOLSET} # condition + ; + " >> $1 + fi +fi +} + +function mason_compile { + # patch to workaround crashes in python.input + # https://github.com/mapnik/mapnik/issues/1968 + mason_step "Loading patch ${MASON_DIR}/scripts/${MASON_NAME}/${MASON_VERSION}/patch.diff" + patch -N -p0 < ${MASON_DIR}/scripts/${MASON_NAME}/${MASON_VERSION}/patch.diff + write_python_config user-config.jam "2.7" "/System" "" + gen_config ${BOOST_TOOLSET} ${BOOST_TOOLSET_CXX} + if [[ ! -f ./b2 ]] ; then + ./bootstrap.sh + fi + ./b2 \ + --with-${BOOST_LIBRARY} \ + --prefix=${MASON_PREFIX} \ + -j${MASON_CONCURRENCY} \ + -d0 \ + --ignore-site-config --user-config=user-config.jam \ + architecture="${BOOST_ARCH}" \ + toolset="${BOOST_TOOLSET}" \ + link=static \ + variant=release \ + linkflags="${LDFLAGS:-" "}" \ + cxxflags="${CXXFLAGS:-" "}" \ + stage + mkdir -p $(dirname ${MASON_PREFIX}/${MASON_LIB_FILE}) + mv stage/${MASON_LIB_FILE} ${MASON_PREFIX}/${MASON_LIB_FILE} +} + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libregex/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libregex/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libregex/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libregex/1.63.0/script.sh b/third_party/mason/scripts/boost_libregex/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libregex/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libregex_icu/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libregex_icu/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libregex_icu/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libregex_icu/1.63.0/script.sh b/third_party/mason/scripts/boost_libregex_icu/1.63.0/script.sh new file mode 100755 index 000000000..7a556ac0b --- /dev/null +++ b/third_party/mason/scripts/boost_libregex_icu/1.63.0/script.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +# Note: cannot duduce from directory since it is named in a custom way +#BOOST_LIBRARY=${THIS_DIR#boost_lib} +BOOST_LIBRARY=regex +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +function mason_prepare_compile { + ${MASON_DIR}/mason install icu 55.1 + MASON_ICU=$(${MASON_DIR}/mason prefix icu 55.1) +} + +# custom compile that gets icu working +function mason_compile { + gen_config ${BOOST_TOOLSET} ${BOOST_TOOLSET_CXX} + if [[ ! -f ./b2 ]] ; then + ./bootstrap.sh + fi + echo 'int main() { return 0; }' > libs/regex/build/has_icu_test.cpp + ./b2 \ + --with-${BOOST_LIBRARY} \ + --prefix=${MASON_PREFIX} \ + -j${MASON_CONCURRENCY} \ + -sHAVE_ICU=1 -sICU_PATH=${MASON_ICU} --reconfigure --debug-configuration \ + -d0 \ + --ignore-site-config --user-config=user-config.jam \ + architecture="${BOOST_ARCH}" \ + toolset="${BOOST_TOOLSET}" \ + link=static \ + variant=release \ + linkflags="${LDFLAGS:-" "}" \ + cxxflags="${CXXFLAGS:-" "}" \ + stage + mkdir -p $(dirname ${MASON_PREFIX}/${MASON_LIB_FILE}) + mv stage/${MASON_LIB_FILE} ${MASON_PREFIX}/${MASON_LIB_FILE} +} + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libsystem/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libsystem/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libsystem/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libsystem/1.63.0/script.sh b/third_party/mason/scripts/boost_libsystem/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libsystem/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libtest/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libtest/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libtest/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libtest/1.63.0/script.sh b/third_party/mason/scripts/boost_libtest/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libtest/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/boost_libthread/1.63.0/.travis.yml b/third_party/mason/scripts/boost_libthread/1.63.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/boost_libthread/1.63.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/boost_libthread/1.63.0/script.sh b/third_party/mason/scripts/boost_libthread/1.63.0/script.sh new file mode 100755 index 000000000..24b9c6418 --- /dev/null +++ b/third_party/mason/scripts/boost_libthread/1.63.0/script.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# dynamically determine the path to this package +HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" + +# key properties unique to this library +THIS_DIR=$(basename $(dirname $HERE)) +BOOST_LIBRARY=${THIS_DIR#boost_lib} +MASON_NAME=boost_lib${BOOST_LIBRARY} +MASON_LIB_FILE=lib/libboost_${BOOST_LIBRARY}.a +# hack for inconsistently named test lib +if [[ ${MASON_LIB_FILE} == "lib/libboost_test.a" ]]; then + MASON_LIB_FILE=lib/libboost_unit_test_framework.a +fi + +# inherit from boost base (used for all boost library packages) +BASE_PATH=${HERE}/../../boost/$(basename $HERE) +source ${BASE_PATH}/base.sh + +# setup mason env +. ${MASON_DIR}/mason.sh + +# source common build functions +source ${BASE_PATH}/common.sh + +mason_run "$@" diff --git a/third_party/mason/scripts/cairo/1.14.6/.travis.yml b/third_party/mason/scripts/cairo/1.14.6/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/cairo/1.14.6/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/cairo/1.14.6/patch.diff b/third_party/mason/scripts/cairo/1.14.6/patch.diff new file mode 100644 index 000000000..a0f21614f --- /dev/null +++ b/third_party/mason/scripts/cairo/1.14.6/patch.diff @@ -0,0 +1,96 @@ +diff --git a/build/configure.ac.tools b/build/configure.ac.tools +index a24dbce..aaf0e5d 100644 +--- a/build/configure.ac.tools ++++ b/build/configure.ac.tools +@@ -10,16 +10,3 @@ AC_C_INLINE + + dnl =========================================================================== + +-PKG_PROG_PKG_CONFIG() +-if test "x$PKG_CONFIG" = x; then +- AC_MSG_ERROR([pkg-config >= $PKGCONFIG_REQUIRED required but not found (http://pkgconfig.freedesktop.org/)]) +-fi +- +-dnl Check for recent pkg-config which supports Requires.private +-case `$PKG_CONFIG --version` in +-[0.?|0.?.?|0.1[0-7]|0.1[0-7].?]) PKGCONFIG_REQUIRES="Requires"; ;; +-*) PKGCONFIG_REQUIRES="Requires.private"; ;; +-esac +- +-AC_SUBST(PKGCONFIG_REQUIRES) +- +diff --git a/configure.ac b/configure.ac +index 2ce1959..87c71ac 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -321,26 +321,7 @@ CAIRO_ENABLE_SURFACE_BACKEND(gallium, Gallium3D, no, [ + dnl =========================================================================== + + CAIRO_ENABLE_FUNCTIONS(png, PNG, yes, [ +- use_png=no +- AC_ARG_VAR([png_REQUIRES], [module name for libpng to search for using pkg-config]) +- if test "x$png_REQUIRES" = x; then +- # libpng13 is GnuWin32's libpng-1.2.8 :-( +- for l in libpng libpng14 libpng12 libpng13 libpng10; do +- if $PKG_CONFIG --exists $l ; then +- png_REQUIRES=$l +- use_png=yes +- break +- fi +- done +- else +- use_png=yes +- fi +- +- if test "x$use_png" = "xyes" ; then +- PKG_CHECK_MODULES(png, $png_REQUIRES, , : ) +- else +- AC_MSG_WARN([Could not find libpng in the pkg-config search path]) +- fi ++ use_png=yes + ]) + + dnl =========================================================================== +@@ -495,10 +476,6 @@ FREETYPE_MIN_RELEASE=2.1.9 + FREETYPE_MIN_VERSION=9.7.3 + + CAIRO_ENABLE_FONT_BACKEND(ft, FreeType, auto, [ +- +- PKG_CHECK_MODULES(FREETYPE, freetype2 >= $FREETYPE_MIN_VERSION, +- [freetype_pkgconfig=yes], +- [freetype_pkgconfig=no]) + + if test "x$freetype_pkgconfig" = "xyes"; then + ft_REQUIRES="freetype2 >= $FREETYPE_MIN_VERSION $ft_REQUIRES" +@@ -662,18 +639,12 @@ CAIRO_ENABLE(test_surfaces, test surfaces, no) + dnl =========================================================================== + + CAIRO_ENABLE_SURFACE_BACKEND(image, image, always, [ +- pixman_REQUIRES="pixman-1 >= 0.30.0" +- PKG_CHECK_MODULES(pixman, $pixman_REQUIRES, , +- [use_image="no (requires $pixman_REQUIRES http://cairographics.org/releases/)"]) ++ use_image=yes + image_REQUIRES=$pixman_REQUIRES + image_CFLAGS=$pixman_CFLAGS + image_LIBS=$pixman_LIBS + ]) + +-if pkg-config --exists 'pixman-1 >= 0.27.1'; then +- AC_DEFINE([HAS_PIXMAN_GLYPHS], 1, [Enable pixman glyph cache]) +-fi +- + + dnl =========================================================================== + +diff --git a/test/Makefile.am b/test/Makefile.am +index 950629b..f733dd9 100644 +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -75,7 +75,6 @@ endif + endif + test_sources += $(test) + +-noinst_PROGRAMS = cairo-test-suite$(EXEEXT) # always build + noinst_SCRIPTS = check-refs.sh + + TESTS += cairo-test-suite$(EXEEXT) diff --git a/third_party/mason/scripts/cairo/1.14.6/script.sh b/third_party/mason/scripts/cairo/1.14.6/script.sh new file mode 100755 index 000000000..3c5a69456 --- /dev/null +++ b/third_party/mason/scripts/cairo/1.14.6/script.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +MASON_NAME=cairo +MASON_VERSION=1.14.6 +MASON_LIB_FILE=lib/libcairo.a + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://cairographics.org/releases/${MASON_NAME}-${MASON_VERSION}.tar.xz \ + b19d7d7b4e290eb6377ddc3688984cb66da036cb + + mason_extract_tar_xz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} +} + +function mason_prepare_compile { + cd $(dirname ${MASON_ROOT}) + ${MASON_DIR}/mason install libpng 1.6.24 + MASON_PNG=$(${MASON_DIR}/mason prefix libpng 1.6.24) + ${MASON_DIR}/mason install freetype 2.6.5 + MASON_FREETYPE=$(${MASON_DIR}/mason prefix freetype 2.6.5) + ${MASON_DIR}/mason install pixman 0.34.0 + MASON_PIXMAN=$(${MASON_DIR}/mason prefix pixman 0.34.0) +} + +function mason_compile { + mason_step "Loading patch" + patch -N -p1 < ${MASON_DIR}/scripts/${MASON_NAME}/${MASON_VERSION}/patch.diff + CFLAGS="${CFLAGS} -Wno-enum-conversion -I${MASON_PIXMAN}/include/pixman-1 -I${MASON_FREETYPE}/include/freetype2 -I${MASON_PNG}/include/" + LDFLAGS="-L${MASON_PIXMAN}/lib -lpixman-1 -L${MASON_FREETYPE}/lib -lfreetype -L${MASON_PNG}/lib -lpng" + CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} ./autogen.sh \ + --prefix=${MASON_PREFIX} \ + ${MASON_HOST_ARG} \ + --enable-static --disable-shared \ + --enable-pdf=yes \ + --enable-ft=yes \ + --enable-png=yes \ + --enable-svg=yes \ + --enable-ps=yes \ + --enable-fc=no \ + --enable-script=no \ + --enable-interpreter=no \ + --enable-quartz=no \ + --enable-quartz-image=no \ + --enable-quartz-font=no \ + --enable-trace=no \ + --enable-gtk-doc=no \ + --enable-qt=no \ + --enable-win32=no \ + --enable-win32-font=no \ + --enable-skia=no \ + --enable-os2=no \ + --enable-beos=no \ + --enable-drm=no \ + --enable-gallium=no \ + --enable-gl=no \ + --enable-glesv2=no \ + --enable-directfb=no \ + --enable-vg=no \ + --enable-egl=no \ + --enable-glx=no \ + --enable-wgl=no \ + --enable-test-surfaces=no \ + --enable-tee=no \ + --enable-xml=no \ + --disable-valgrind \ + --enable-gobject=no \ + --enable-xlib=no \ + --enable-xlib-xrender=no \ + --enable-xcb=no \ + --enable-xlib-xcb=no \ + --enable-xcb-shm=no \ + --enable-full-testing=no \ + --enable-symbol-lookup=no \ + --disable-dependency-tracking + # The -i and -k flags are to workaround make[6]: [install-data-local] Error 1 (ignored) + make V=1 -j${MASON_CONCURRENCY} -i -k + make install -i -k +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/clang++/3.8.0/script.sh b/third_party/mason/scripts/clang++/3.8.0/script.sh deleted file mode 100755 index 22489b56b..000000000 --- a/third_party/mason/scripts/clang++/3.8.0/script.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -# dynamically determine the path to this package -HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" - -# dynamically take name of package from directory -MASON_NAME=$(basename $(dirname $HERE)) -# dynamically take the version of the package from directory -MASON_VERSION=$(basename $HERE) -MASON_LIB_FILE=bin/${MASON_NAME} - -. ${MASON_DIR}/mason.sh - -function mason_build { - ${MASON_DIR}/mason install clang ${MASON_VERSION} - CLANG_PREFIX=$(${MASON_DIR}/mason prefix clang ${MASON_VERSION}) - mkdir -p "${MASON_PREFIX}/bin" - # we need to copy the standard C++ headers because clang-tidy doesn't know - # where to find them in the system and complains about missing information - mkdir -p "${MASON_PREFIX}/include" - mkdir -p "${MASON_PREFIX}/lib/clang/${MASON_VERSION}" - cp ${CLANG_PREFIX}/bin/${MASON_NAME} "${MASON_PREFIX}/bin/" - cp ${CLANG_PREFIX}/bin/clang "${MASON_PREFIX}/bin/" - cp -R ${CLANG_PREFIX}/include/c++ "${MASON_PREFIX}/include/c++" - cp -R ${CLANG_PREFIX}/lib/clang/${MASON_VERSION}/* "${MASON_PREFIX}/lib/clang/${MASON_VERSION}/" - cd ${MASON_PREFIX}/bin/ - rm -f "clang++-3.8" - ln -s "clang++" "clang++-3.8" - rm -f "clang-3.8" - ln -s "clang" "clang-3.8" -} - -mason_run "$@" diff --git a/third_party/mason/scripts/clang++/3.9.0/.travis.yml b/third_party/mason/scripts/clang++/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/clang++/3.9.0/.travis.yml rename to third_party/mason/scripts/clang++/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/clang++/3.9.0/script.sh b/third_party/mason/scripts/clang++/3.9.1/script.sh similarity index 100% rename from third_party/mason/scripts/clang++/3.9.0/script.sh rename to third_party/mason/scripts/clang++/3.9.1/script.sh diff --git a/third_party/mason/scripts/clang++/base/common.sh b/third_party/mason/scripts/clang++/base/common.sh index 132c7d272..054d4bcf7 100755 --- a/third_party/mason/scripts/clang++/base/common.sh +++ b/third_party/mason/scripts/clang++/base/common.sh @@ -27,10 +27,14 @@ function mason_build { # if custom libc++ was built if [[ $(uname -s) == 'Linux' ]]; then - cp -r "${CLANG_PREFIX}/include/c++" "${MASON_PREFIX}/include/" cp -r ${CLANG_PREFIX}/lib/libc++* "${MASON_PREFIX}/lib/" fi + # copy c++ headers (on osx these are a symlink to the system headers) + if [[ -d "${CLANG_PREFIX}/include/c++" ]]; then + cp -r "${CLANG_PREFIX}/include/c++" "${MASON_PREFIX}/include/" + fi + # copy libs cp -r ${CLANG_PREFIX}/lib/libLTO.* "${MASON_PREFIX}/lib/" if [[ $(uname -s) == 'Linux' ]]; then diff --git a/third_party/mason/scripts/clang-format/3.8.0/script.sh b/third_party/mason/scripts/clang-format/3.8.0/script.sh deleted file mode 100755 index 520bdfc30..000000000 --- a/third_party/mason/scripts/clang-format/3.8.0/script.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# dynamically determine the path to this package -HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" - -# dynamically take name of package from directory -MASON_NAME=$(basename $(dirname $HERE)) -# dynamically take the version of the package from directory -MASON_VERSION=$(basename $HERE) -MASON_LIB_FILE=bin/${MASON_NAME} - -. ${MASON_DIR}/mason.sh - -function mason_build { - ${MASON_DIR}/mason install clang ${MASON_VERSION} - CLANG_PREFIX=$(${MASON_DIR}/mason prefix clang ${MASON_VERSION}) - mkdir -p "${MASON_PREFIX}/bin" - cp ${CLANG_PREFIX}/bin/${MASON_NAME} "${MASON_PREFIX}/bin/" -} - -mason_run "$@" diff --git a/third_party/mason/scripts/clang-format/3.9.0/.travis.yml b/third_party/mason/scripts/clang-format/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/clang-format/3.9.0/.travis.yml rename to third_party/mason/scripts/clang-format/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/clang-format/3.9.0/script.sh b/third_party/mason/scripts/clang-format/3.9.1/script.sh similarity index 100% rename from third_party/mason/scripts/clang-format/3.9.0/script.sh rename to third_party/mason/scripts/clang-format/3.9.1/script.sh diff --git a/third_party/mason/scripts/clang-tidy/3.8.0/script.sh b/third_party/mason/scripts/clang-tidy/3.8.0/script.sh deleted file mode 100755 index ca9142b53..000000000 --- a/third_party/mason/scripts/clang-tidy/3.8.0/script.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -# dynamically determine the path to this package -HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" - -# dynamically take name of package from directory -MASON_NAME=$(basename $(dirname $HERE)) -# dynamically take the version of the package from directory -MASON_VERSION=$(basename $HERE) -MASON_LIB_FILE=bin/${MASON_NAME} - -. ${MASON_DIR}/mason.sh - -function mason_build { - ${MASON_DIR}/mason install clang ${MASON_VERSION} - CLANG_PREFIX=$(${MASON_DIR}/mason prefix clang ${MASON_VERSION}) - mkdir -p "${MASON_PREFIX}/bin" - # we need to copy the standard C++ headers because clang-tidy doesn't know - # where to find them in the system and complains about missing information - mkdir -p "${MASON_PREFIX}/include" - mkdir -p "${MASON_PREFIX}/lib/clang/${MASON_VERSION}" - cp ${CLANG_PREFIX}/bin/${MASON_NAME} "${MASON_PREFIX}/bin/" - cp -R ${CLANG_PREFIX}/include/c++ "${MASON_PREFIX}/include/c++" - cp -R ${CLANG_PREFIX}/lib/clang/${MASON_VERSION}/include "${MASON_PREFIX}/lib/clang/${MASON_VERSION}/include" -} - -mason_run "$@" diff --git a/third_party/mason/scripts/clang-tidy/3.8/script.sh b/third_party/mason/scripts/clang-tidy/3.8/script.sh deleted file mode 100755 index 17b84fade..000000000 --- a/third_party/mason/scripts/clang-tidy/3.8/script.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=clang-tidy -MASON_VERSION=3.8 -MASON_LIB_FILE=bin/clang-tidy - -. ${MASON_DIR}/mason.sh - -function mason_build { - mkdir -p "${MASON_PREFIX}/bin" - cd "${MASON_PREFIX}" - - URL="https://mason-binaries.s3.amazonaws.com/prebuilt/${MASON_PLATFORM}-$(uname -m)/clang-tidy-${MASON_VERSION}" - curl "${URL}" -o "${MASON_LIB_FILE}" -} - -mason_run "$@" diff --git a/third_party/mason/scripts/clang-tidy/3.9.0/.travis.yml b/third_party/mason/scripts/clang-tidy/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/clang-tidy/3.9.0/.travis.yml rename to third_party/mason/scripts/clang-tidy/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/clang-tidy/3.9.0/script.sh b/third_party/mason/scripts/clang-tidy/3.9.1/script.sh similarity index 100% rename from third_party/mason/scripts/clang-tidy/3.9.0/script.sh rename to third_party/mason/scripts/clang-tidy/3.9.1/script.sh diff --git a/third_party/mason/scripts/clang-tidy/base/common.sh b/third_party/mason/scripts/clang-tidy/base/common.sh index 94dc4846d..9de9af930 100755 --- a/third_party/mason/scripts/clang-tidy/base/common.sh +++ b/third_party/mason/scripts/clang-tidy/base/common.sh @@ -10,10 +10,12 @@ function mason_build { # copy include/c++ mkdir -p "${MASON_PREFIX}/include" - # if custom libc++ was built - if [[ $(uname -s) == 'Linux' ]]; then + + # copy c++ headers (on osx these are a symlink to the system headers) + if [[ -d "${CLANG_PREFIX}/include/c++" ]]; then cp -r "${CLANG_PREFIX}/include/c++" "${MASON_PREFIX}/include/" fi + # copy libs mkdir -p "${MASON_PREFIX}/lib" mkdir -p "${MASON_PREFIX}/lib/clang" diff --git a/third_party/mason/scripts/clang/3.5.2/.travis.yml b/third_party/mason/scripts/clang/3.5.2/.travis.yml deleted file mode 100644 index 163c5181b..000000000 --- a/third_party/mason/scripts/clang/3.5.2/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: generic - -matrix: - include: - - os: osx - osx_image: xcode7.3 - compiler: clang - - os: linux - compiler: gcc - env: CXX=g++-5 CC=gcc-5 - sudo: false - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - libstdc++6 - - g++-5 - -script: -- ./mason install cmake 3.5.2 -- export PATH=$(./mason prefix cmake 3.5.2)/bin:${PATH} -- ./mason install ninja 1.7.1 -- export PATH=$(./mason prefix ninja 1.7.1)/bin:${PATH} -- ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: -- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/clang/3.5.2/script.sh b/third_party/mason/scripts/clang/3.5.2/script.sh deleted file mode 100755 index a3ce7cf2e..000000000 --- a/third_party/mason/scripts/clang/3.5.2/script.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=clang -MASON_VERSION=3.5.2 -MASON_LIB_FILE=bin/clang - -. ${MASON_DIR}/mason.sh - - -# options -ENABLE_LLDB=false - -function curl_get() { - if [ ! -f $(basename ${1}) ] ; then - mason_step "Downloading $1 to $(pwd)/$(basename ${1})" - curl --retry 3 -f -L -O "$1" - else - echo "already downloaded $1 to $(pwd)/$(basename ${1})" - fi -} - -function setup_release() { - LLVM_RELEASE=$1 - BUILD_PATH=$2 - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/llvm-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/cfe-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/compiler-rt-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/libcxx-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/libcxxabi-${LLVM_RELEASE}.src.tar.xz" - #curl_get "http://llvm.org/releases/${LLVM_RELEASE}/libunwind-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/lld-${LLVM_RELEASE}.src.tar.xz" - if [[ ${ENABLE_LLDB} == true ]]; then - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/lldb-${LLVM_RELEASE}.src.tar.xz" - fi - #curl_get "http://llvm.org/releases/${LLVM_RELEASE}/openmp-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/clang-tools-extra-${LLVM_RELEASE}.src.tar.xz" - for i in $(ls *.xz); do - echo "unpacking $i" - tar xf $i; - done - mv llvm-${LLVM_RELEASE}.src/* ${BUILD_PATH}/ - ls ${BUILD_PATH}/ - mv cfe-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/clang - mv compiler-rt-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/compiler-rt - mv libcxx-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/libcxx - mv libcxxabi-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/libcxxabi - #mv libunwind-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/libunwind - mv lld-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/lld - if [[ ${ENABLE_LLDB} == true ]]; then - mv lldb-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/lldb - fi - #mv openmp-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/openmp - mv clang-tools-extra-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/clang/tools/extra - cd ../ -} - - -function mason_load_source { - mkdir -p "${MASON_ROOT}/.cache" - cd "${MASON_ROOT}/.cache" - export MASON_BUILD_PATH=${MASON_ROOT}/.build/llvm-${MASON_VERSION} - if [[ -d ${MASON_BUILD_PATH}/ ]]; then - rm -rf ${MASON_BUILD_PATH}/ - fi - mkdir -p ${MASON_BUILD_PATH}/ - setup_release ${MASON_VERSION} ${MASON_BUILD_PATH} -} - -function mason_compile { - CLANG_GIT_REV=$(git -C tools/clang/ rev-list --max-count=1 HEAD) - mkdir -p ./build - cd ./build - CMAKE_EXTRA_ARGS="" - ## TODO: CLANG_DEFAULT_CXX_STDLIB and CLANG_APPEND_VC_REV not available in clang-3.8 cmake files - if [[ $(uname -s) == 'Darwin' ]]; then - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCLANG_DEFAULT_CXX_STDLIB=libc++" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DC_INCLUDE_DIRS=:/usr/include:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DDEFAULT_SYSROOT=/" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.10" - fi - cmake ../ -G Ninja -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_ASSERTIONS=OFF \ - -DCLANG_VENDOR=mapbox/mason \ - -DCLANG_REPOSITORY_STRING=https://github.com/mapbox/mason \ - -DCLANG_APPEND_VC_REV=$CLANG_GIT_REV \ - -DCLANG_VENDOR_UTI=org.mapbox.clang \ - -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ - -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ - -DLLVM_OPTIMIZED_TABLEGEN=ON \ - ${CMAKE_EXTRA_ARGS} - ninja -j${MASON_CONCURRENCY} -k5 - ninja install -k5 - cd ${MASON_PREFIX}/bin/ - ln -s "clang++" "clang++-3.5" -} - -function mason_cflags { - : -} - -function mason_ldflags { - : -} - -function mason_static_libs { - : -} - -mason_run "$@" diff --git a/third_party/mason/scripts/clang/3.8.0/README.md b/third_party/mason/scripts/clang/3.8.0/README.md deleted file mode 100644 index aad44d765..000000000 --- a/third_party/mason/scripts/clang/3.8.0/README.md +++ /dev/null @@ -1,51 +0,0 @@ -### Clang++ v3.8.0 - -This clang++ package depends on and defaults to compiling C++ programs against libstdc++. - -For clang++ itself to be able to run and compile C++ programs you need to upgrade the libstdc++ version. - -You also need to upgrade the libstdc++ for the programs to run that you compile with this version of clang++. - -You can do this on Travis like: - -```yml - addons: - apt: - sources: [ 'ubuntu-toolchain-r-test' ] - packages: [ 'libstdc++-5-dev' ] -``` - -You can do this on any debian system like: - -```sh -add-apt-repository -y ppa:ubuntu-toolchain-r/test -apt-get update -y -apt-get install -y libstdc++-5-dev -``` - -A full example of installing clang and upgrading libstdc++ on travis is: - -```yml - -language: generic - -matrix: - include: - - os: linux - sudo: false - env: CXX=clang++ - addons: - apt: - sources: [ 'ubuntu-toolchain-r-test' ] - packages: [ 'libstdc++-5-dev' ] - -install: - - git clone --depth 1 https://github.com/mapbox/mason - - ./.mason/mason install clang 3.8.0 - - export PATH=$(./.mason/mason prefix clang 3.8.0)/bin:${PATH} - - which clang++ -``` - -Note: Installing `libstdc++-5-dev` installs a library named `libstdc++6`. This is not version 6, it is the ABI 6. Note that there is no dash between the `++` and the `6` like there is between the `++` and the `5` in the dev package. So don't worry about the mismatch of `5` and `6`. While the package name is based on the g++ version (`5`) the actual library version used, at the time of this writing, is `v6.1.1` (this comes from https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages). The `6` again is ABI not version: even the libstdc++ `v4.6.3` package (the default on Ubuntu precise) is named/aliased to `libstdc++6` - -If you hit a runtime error like `/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.20' not found` it means you forgot to upgrade libstdc++6 to at least `v6.1.1`. diff --git a/third_party/mason/scripts/clang/3.8.0/script.sh b/third_party/mason/scripts/clang/3.8.0/script.sh deleted file mode 100755 index 230f1cfee..000000000 --- a/third_party/mason/scripts/clang/3.8.0/script.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=clang -MASON_VERSION=3.8.0 -MASON_LIB_FILE=bin/clang - -. ${MASON_DIR}/mason.sh - - -# options -ENABLE_LLDB=false - -function curl_get() { - if [ ! -f $(basename ${1}) ] ; then - mason_step "Downloading $1 to $(pwd)/$(basename ${1})" - curl --retry 3 -f -L -O "$1" - else - echo "already downloaded $1 to $(pwd)/$(basename ${1})" - fi -} - -function setup_release() { - LLVM_RELEASE=$1 - BUILD_PATH=$2 - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/llvm-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/cfe-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/compiler-rt-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/libcxx-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/libcxxabi-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/libunwind-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/lld-${LLVM_RELEASE}.src.tar.xz" - if [[ ${ENABLE_LLDB} == true ]]; then - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/lldb-${LLVM_RELEASE}.src.tar.xz" - fi - #curl_get "http://llvm.org/releases/${LLVM_RELEASE}/openmp-${LLVM_RELEASE}.src.tar.xz" - curl_get "http://llvm.org/releases/${LLVM_RELEASE}/clang-tools-extra-${LLVM_RELEASE}.src.tar.xz" - for i in $(ls *.xz); do - echo "unpacking $i" - tar xf $i; - done - mv llvm-${LLVM_RELEASE}.src/* ${BUILD_PATH}/ - ls ${BUILD_PATH}/ - mv cfe-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/clang - mv compiler-rt-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/compiler-rt - mv libcxx-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/libcxx - mv libcxxabi-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/libcxxabi - mv libunwind-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/libunwind - mv lld-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/lld - if [[ ${ENABLE_LLDB} == true ]]; then - mv lldb-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/lldb - fi - #mv openmp-${LLVM_RELEASE}.src ${BUILD_PATH}/projects/openmp - mv clang-tools-extra-${LLVM_RELEASE}.src ${BUILD_PATH}/tools/clang/tools/extra - cd ../ -} - - -function mason_load_source { - mkdir -p "${MASON_ROOT}/.cache" - cd "${MASON_ROOT}/.cache" - export MASON_BUILD_PATH=${MASON_ROOT}/.build/llvm-${MASON_VERSION} - if [[ -d ${MASON_BUILD_PATH}/ ]]; then - rm -rf ${MASON_BUILD_PATH}/ - fi - mkdir -p ${MASON_BUILD_PATH}/ - setup_release ${MASON_VERSION} ${MASON_BUILD_PATH} -} - -function mason_prepare_compile { - ${MASON_DIR}/mason install ccache 3.2.4 - MASON_CCACHE=$(${MASON_DIR}/mason prefix ccache 3.2.4) - ${MASON_DIR}/mason install clang 3.8.0 - MASON_CLANG=$(${MASON_DIR}/mason prefix clang 3.8.0) - ${MASON_DIR}/mason install cmake 3.5.2 - MASON_CMAKE=$(${MASON_DIR}/mason prefix cmake 3.5.2) - ${MASON_DIR}/mason install ninja 1.7.1 - MASON_NINJA=$(${MASON_DIR}/mason prefix ninja 1.7.1) -} - -function mason_compile { - export CXX="${MASON_CLANG}/bin/clang++" - export CC="${MASON_CLANG}/bin/clang" - mkdir -p ./build - cd ./build - CMAKE_EXTRA_ARGS="" - ## TODO: CLANG_DEFAULT_CXX_STDLIB and CLANG_APPEND_VC_REV not available in clang-3.8 cmake files - if [[ $(uname -s) == 'Darwin' ]]; then - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCLANG_DEFAULT_CXX_STDLIB=libc++" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DC_INCLUDE_DIRS=:/usr/include:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DDEFAULT_SYSROOT=/" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11" - fi - CXXFLAGS="${CXXFLAGS//-mmacosx-version-min=10.8}" - ${MASON_CMAKE}/bin/cmake ../ -G Ninja -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_COMPILER_LAUNCHER="${MASON_CCACHE}/bin/ccache" \ - -DCMAKE_CXX_COMPILER="$CXX" \ - -DCMAKE_C_COMPILER="$CC" \ - -DLLVM_ENABLE_ASSERTIONS=OFF \ - -DCLANG_VENDOR=mapbox/mason \ - -DCLANG_REPOSITORY_STRING=https://github.com/mapbox/mason \ - -DCLANG_VENDOR_UTI=org.mapbox.clang \ - -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ - -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ - -DLLVM_OPTIMIZED_TABLEGEN=ON \ - -DCMAKE_MAKE_PROGRAM=${MASON_NINJA}/bin/ninja \ - ${CMAKE_EXTRA_ARGS} - ${MASON_NINJA}/bin/ninja -j${MASON_CONCURRENCY} -k5 - ${MASON_NINJA}/bin/ninja install -k5 - cd ${MASON_PREFIX}/bin/ - rm -f "clang++-3.8" - ln -s "clang++" "clang++-3.8" -} - -function mason_cflags { - : -} - -function mason_ldflags { - : -} - -function mason_static_libs { - : -} - -mason_run "$@" diff --git a/third_party/mason/scripts/luabind_lua524/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml b/third_party/mason/scripts/cmake/3.7.1/.travis.yml similarity index 70% rename from third_party/mason/scripts/luabind_lua524/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml rename to third_party/mason/scripts/cmake/3.7.1/.travis.yml index 73dad8415..9a6107680 100644 --- a/third_party/mason/scripts/luabind_lua524/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml +++ b/third_party/mason/scripts/cmake/3.7.1/.travis.yml @@ -1,17 +1,18 @@ language: generic -sudo: false - matrix: include: - os: osx - osx_image: xcode7.3 + osx_image: xcode8 + compiler: clang - os: linux compiler: clang + sudo: false addons: apt: sources: [ 'ubuntu-toolchain-r-test' ] packages: [ 'libstdc++-5-dev' ] + script: - ./mason build ${MASON_NAME} ${MASON_VERSION} -- ./mason publish ${MASON_NAME} ${MASON_VERSION} \ No newline at end of file +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/cmake/3.7.1/script.sh b/third_party/mason/scripts/cmake/3.7.1/script.sh new file mode 100755 index 000000000..73c0880aa --- /dev/null +++ b/third_party/mason/scripts/cmake/3.7.1/script.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +MASON_NAME=cmake +MASON_VERSION=3.7.1 +MASON_LIB_FILE=bin/cmake + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://www.cmake.org/files/v3.7/cmake-${MASON_VERSION}.tar.gz \ + 591a89d83e3659884c52e6cf7009725a6b4e94e5 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} +} + +function mason_compile { + ./configure --prefix=${MASON_PREFIX} + make -j${MASON_CONCURRENCY} VERBOSE=1 + make install + # remove non-essential things to save on package size + rm -f ${MASON_PREFIX}/bin/ccmake + rm -f ${MASON_PREFIX}/bin/cmakexbuild + rm -f ${MASON_PREFIX}/bin/cpack + rm -f ${MASON_PREFIX}/bin/ctest + rm -rf ${MASON_PREFIX}/share/cmake-*/Help + ls -lh ${MASON_PREFIX}/bin/ +} + +function mason_cflags { + : +} + +function mason_ldflags { + : +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/freetype/2.6.5/.travis.yml b/third_party/mason/scripts/freetype/2.6.5/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/freetype/2.6.5/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/freetype/2.6.5/script.sh b/third_party/mason/scripts/freetype/2.6.5/script.sh new file mode 100755 index 000000000..719407c8c --- /dev/null +++ b/third_party/mason/scripts/freetype/2.6.5/script.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +MASON_NAME=freetype +MASON_VERSION=2.6.5 +MASON_LIB_FILE=lib/libfreetype.a +MASON_PKGCONFIG_FILE=lib/pkgconfig/freetype2.pc + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://nongnu.askapache.com/freetype/freetype-${MASON_VERSION}.tar.bz2 \ + 24dd30c95d3795cb3d82a760b9858992de262630 + + mason_extract_tar_bz2 + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/freetype-${MASON_VERSION} +} + +function mason_compile { + ./configure --prefix=${MASON_PREFIX} \ + --enable-static \ + --disable-shared ${MASON_HOST_ARG} \ + --with-zlib=yes \ + --with-bzip2=no \ + --with-harfbuzz=no \ + --with-png=no \ + --with-quickdraw-toolbox=no \ + --with-quickdraw-carbon=no \ + --with-ats=no \ + --with-fsref=no \ + --with-fsspec=no \ + + make -j${MASON_CONCURRENCY} + make install +} + +function mason_ldflags { + : # We're only using the full path to the archive, which is output in static_libs +} + +function mason_cflags { + echo "-I${MASON_PREFIX}/include/freetype2" +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/harfbuzz/1.3.0/.travis.yml b/third_party/mason/scripts/harfbuzz/1.3.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/harfbuzz/1.3.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/harfbuzz/1.3.0/script.sh b/third_party/mason/scripts/harfbuzz/1.3.0/script.sh new file mode 100755 index 000000000..d352c4af5 --- /dev/null +++ b/third_party/mason/scripts/harfbuzz/1.3.0/script.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash + +MASON_NAME=harfbuzz +MASON_VERSION=1.3.0 +MASON_LIB_FILE=lib/libharfbuzz.a +MASON_PKGCONFIG_FILE=lib/pkgconfig/harfbuzz.pc + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${MASON_VERSION}.tar.bz2 \ + f5674500c67484caa2c9936270d0a100e52f56f0 + + mason_extract_tar_bz2 + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} +} + +function mason_prepare_compile { + FREETYPE_VERSION="2.6.5" + ${MASON_DIR}/mason install freetype ${FREETYPE_VERSION} + MASON_FREETYPE=$(${MASON_DIR}/mason prefix freetype ${FREETYPE_VERSION}) + MASON_PLATFORM= ${MASON_DIR}/mason install ragel 6.9 + export PATH=$(MASON_PLATFORM= ${MASON_DIR}/mason prefix ragel 6.9)/bin:$PATH + export PKG_CONFIG_PATH="$(${MASON_DIR}/mason prefix freetype ${FREETYPE_VERSION})/lib/pkgconfig":$PKG_CONFIG_PATH + export C_INCLUDE_PATH="${MASON_FREETYPE}/include/freetype2" + export CPLUS_INCLUDE_PATH="${MASON_FREETYPE}/include/freetype2" + export LIBRARY_PATH="${MASON_FREETYPE}/lib" + if [[ ! `which pkg-config` ]]; then + echo "harfbuzz configure needs pkg-config, please install pkg-config" + exit 1 + fi +} + +function mason_compile { + export FREETYPE_CFLAGS="-I${MASON_FREETYPE}/include/freetype2" + export FREETYPE_LIBS="-L${MASON_FREETYPE}/lib -lfreetype -lz" + export CXXFLAGS="${CXXFLAGS} ${FREETYPE_CFLAGS}" + export CFLAGS="${CFLAGS} ${FREETYPE_CFLAGS}" + export LDFLAGS="${LDFLAGS} ${FREETYPE_LIBS}" + + ./configure --prefix=${MASON_PREFIX} ${MASON_HOST_ARG} \ + --enable-static \ + --disable-shared \ + --disable-dependency-tracking \ + --with-icu=no \ + --with-cairo=no \ + --with-glib=no \ + --with-gobject=no \ + --with-graphite2=no \ + --with-freetype \ + --with-uniscribe=no \ + --with-coretext=no + + make -j${MASON_CONCURRENCY} V=1 + make install +} + +function mason_ldflags { + : # We're only using the full path to the archive, which is output in static_libs +} + +function mason_cflags { + echo "-I${MASON_PREFIX}/include" +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/include-what-you-use/3.9.0/.travis.yml b/third_party/mason/scripts/include-what-you-use/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/include-what-you-use/3.9.0/.travis.yml rename to third_party/mason/scripts/include-what-you-use/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/include-what-you-use/3.9.0/script.sh b/third_party/mason/scripts/include-what-you-use/3.9.1/script.sh similarity index 100% rename from third_party/mason/scripts/include-what-you-use/3.9.0/script.sh rename to third_party/mason/scripts/include-what-you-use/3.9.1/script.sh diff --git a/third_party/mason/scripts/include-what-you-use/base/common.sh b/third_party/mason/scripts/include-what-you-use/base/common.sh index 4630ad51d..20b57971b 100755 --- a/third_party/mason/scripts/include-what-you-use/base/common.sh +++ b/third_party/mason/scripts/include-what-you-use/base/common.sh @@ -10,8 +10,10 @@ function mason_build { # copy share mkdir -p "${MASON_PREFIX}/share" - cp -r "${CLANG_PREFIX}/share/${MASON_NAME}" "${MASON_PREFIX}/share/" - + # directory only present with llvm >= 3.9 + if [[ -d "{CLANG_PREFIX}/share/${MASON_NAME}" ]]; then + cp -r "${CLANG_PREFIX}/share/${MASON_NAME}" "${MASON_PREFIX}/share/" + fi } function mason_cflags { diff --git a/third_party/mason/scripts/jpeg_turbo/1.5.0/.travis.yml b/third_party/mason/scripts/jpeg_turbo/1.5.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/jpeg_turbo/1.5.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/jpeg_turbo/1.5.0/script.sh b/third_party/mason/scripts/jpeg_turbo/1.5.0/script.sh new file mode 100755 index 000000000..842a7d8b6 --- /dev/null +++ b/third_party/mason/scripts/jpeg_turbo/1.5.0/script.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +MASON_NAME=jpeg_turbo +MASON_VERSION=1.5.0 +MASON_LIB_FILE=lib/libjpeg.a + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://downloads.sourceforge.net/project/libjpeg-turbo/${MASON_VERSION}/libjpeg-turbo-${MASON_VERSION}.tar.gz \ + b90a76db4d0628bde8381150e355a858e3ced923 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/libjpeg-turbo-${MASON_VERSION} +} + +function mason_prepare_compile { + MASON_PLATFORM= ${MASON_DIR}/mason install nasm 2.11.06 + MASON_NASM=$(MASON_PLATFORM= ${MASON_DIR}/mason prefix nasm 2.11.06) +} + +function mason_compile { + ./configure \ + NASM="${MASON_NASM}/bin/nasm" \ + --prefix=${MASON_PREFIX} \ + ${MASON_HOST_ARG} \ + --with-jpeg8 \ + --enable-static \ + --disable-shared \ + --disable-dependency-tracking + + make -j1 # -j1 since build breaks with concurrency + make install +} + +function mason_cflags { + echo -I${MASON_PREFIX}/include +} + +function mason_ldflags { + echo -L${MASON_PREFIX}/lib -ljpeg +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/luabind_luajit2.0.3/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml b/third_party/mason/scripts/libosmium/2.10.3/.travis.yml similarity index 67% rename from third_party/mason/scripts/luabind_luajit2.0.3/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml rename to third_party/mason/scripts/libosmium/2.10.3/.travis.yml index 3431d4fb7..00c277c21 100644 --- a/third_party/mason/scripts/luabind_luajit2.0.3/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml +++ b/third_party/mason/scripts/libosmium/2.10.3/.travis.yml @@ -1,16 +1,11 @@ -language: cpp - -sudo: false +language: generic matrix: include: - - os: osx - compiler: clang - os: linux compiler: clang + sudo: false script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/libosmium/2.10.3/script.sh b/third_party/mason/scripts/libosmium/2.10.3/script.sh new file mode 100755 index 000000000..b60162596 --- /dev/null +++ b/third_party/mason/scripts/libosmium/2.10.3/script.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +MASON_NAME=libosmium +MASON_VERSION=2.10.3 +MASON_HEADER_ONLY=true + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + https://github.com/osmcode/${MASON_NAME}/archive/v${MASON_VERSION}.tar.gz \ + ddfacd6671befcf63989b749b3302608bd206af4 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} +} + +function mason_compile { + mkdir -p ${MASON_PREFIX}/include/ + cp -r include/osmium ${MASON_PREFIX}/include/osmium +} + +function mason_cflags { + echo "-I${MASON_PREFIX}/include" +} + +function mason_ldflags { + : +} + +mason_run "$@" diff --git a/third_party/mason/scripts/libpng/1.6.24/.travis.yml b/third_party/mason/scripts/libpng/1.6.24/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/libpng/1.6.24/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/libpng/1.6.24/script.sh b/third_party/mason/scripts/libpng/1.6.24/script.sh new file mode 100755 index 000000000..db1417b1d --- /dev/null +++ b/third_party/mason/scripts/libpng/1.6.24/script.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +MASON_NAME=libpng +MASON_VERSION=1.6.24 +MASON_LIB_FILE=lib/libpng.a +MASON_PKGCONFIG_FILE=lib/pkgconfig/libpng.pc + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://superb-sea2.dl.sourceforge.net/project/${MASON_NAME}/${MASON_NAME}16/${MASON_VERSION}/${MASON_NAME}-${MASON_VERSION}.tar.gz \ + ea724d11c25753ebad23ca0f63518b7f17c46a6a + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/libpng-${MASON_VERSION} +} + +function mason_compile { + export CFLAGS="${CFLAGS:-} -O3" + ./configure \ + --prefix=${MASON_PREFIX} \ + ${MASON_HOST_ARG} \ + --enable-static \ + --with-pic \ + --disable-shared \ + --disable-dependency-tracking + + make install -j${MASON_CONCURRENCY} +} + +function mason_strip_ldflags { + shift # -L... + shift # -lpng16 + echo "$@" +} + +function mason_ldflags { + mason_strip_ldflags $(`mason_pkgconfig` --static --libs) +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/libpq/9.5.2/.travis.yml b/third_party/mason/scripts/libpq/9.5.2/.travis.yml index cd56d3c56..d4048f062 100644 --- a/third_party/mason/scripts/libpq/9.5.2/.travis.yml +++ b/third_party/mason/scripts/libpq/9.5.2/.travis.yml @@ -1,17 +1,19 @@ -language: cpp - -sudo: false +language: generic matrix: include: - - os: linux - compiler: clang - os: osx - osx_image: xcode7.3 + osx_image: xcode8 compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/libtiff/4.0.6/.travis.yml b/third_party/mason/scripts/libtiff/4.0.6/.travis.yml index a724e9e3f..d4048f062 100644 --- a/third_party/mason/scripts/libtiff/4.0.6/.travis.yml +++ b/third_party/mason/scripts/libtiff/4.0.6/.travis.yml @@ -1,17 +1,19 @@ language: generic -sudo: false - matrix: include: - os: osx - osx_image: xcode7.3 + osx_image: xcode8 compiler: clang - os: linux - compiler: clang + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/libtiff/4.0.6/script.sh b/third_party/mason/scripts/libtiff/4.0.6/script.sh index 22d1fea30..45f98b84b 100755 --- a/third_party/mason/scripts/libtiff/4.0.6/script.sh +++ b/third_party/mason/scripts/libtiff/4.0.6/script.sh @@ -19,9 +19,11 @@ function mason_load_source { function mason_prepare_compile { cd $(dirname ${MASON_ROOT}) - ${MASON_DIR}/mason install jpeg_turbo 1.4.2 - MASON_JPEG=$(${MASON_DIR}/mason prefix jpeg_turbo 1.4.2) - SYSTEM_ZLIB="/usr" + ${MASON_DIR}/mason install jpeg_turbo 1.5.0 + MASON_JPEG=$(${MASON_DIR}/mason prefix jpeg_turbo 1.5.0) + # depends on sudo apt-get install zlib1g-dev + ${MASON_DIR}/mason install zlib system + MASON_ZLIB=$(${MASON_DIR}/mason prefix zlib system) } @@ -35,8 +37,8 @@ function mason_compile { --enable-chunky-strip-read \ --with-jpeg-include-dir=${MASON_JPEG}/include \ --with-jpeg-lib-dir=${MASON_JPEG}/lib \ - --with-zlib-include-dir=${SYSTEM_ZLIB}/include \ - --with-zlib-lib-dir=${SYSTEM_ZLIB}/lib \ + --with-zlib-include-dir=${MASON_ZLIB}/include \ + --with-zlib-lib-dir=${MASON_ZLIB}/lib \ --disable-lzma --disable-jbig --disable-mdi \ --without-x diff --git a/third_party/mason/scripts/lldb/3.9.0/.travis.yml b/third_party/mason/scripts/lldb/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/lldb/3.9.0/.travis.yml rename to third_party/mason/scripts/lldb/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/lldb/3.9.0/script.sh b/third_party/mason/scripts/lldb/3.9.1/script.sh similarity index 100% rename from third_party/mason/scripts/lldb/3.9.0/script.sh rename to third_party/mason/scripts/lldb/3.9.1/script.sh diff --git a/third_party/mason/scripts/llvm-cov/3.9.0/.travis.yml b/third_party/mason/scripts/llvm-cov/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/llvm-cov/3.9.0/.travis.yml rename to third_party/mason/scripts/llvm-cov/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/llvm-cov/3.9.0/script.sh b/third_party/mason/scripts/llvm-cov/3.9.1/script.sh similarity index 100% rename from third_party/mason/scripts/llvm-cov/3.9.0/script.sh rename to third_party/mason/scripts/llvm-cov/3.9.1/script.sh diff --git a/third_party/mason/scripts/llvm/3.8.1/README.md b/third_party/mason/scripts/llvm/3.8.1/README.md deleted file mode 100644 index 42f2d6f85..000000000 --- a/third_party/mason/scripts/llvm/3.8.1/README.md +++ /dev/null @@ -1,7 +0,0 @@ -### llvm v3.8.1 - -This is a package of all llvm tools. Multiple packages are based on repackaging the binaries from this one including: - - - clang++ 3.8.1 - - clang-tidy 3.8.1 - - clang-format 3.8.1 \ No newline at end of file diff --git a/third_party/mason/scripts/llvm/3.9.0/README.md b/third_party/mason/scripts/llvm/3.9.0/README.md deleted file mode 100644 index aad6b888d..000000000 --- a/third_party/mason/scripts/llvm/3.9.0/README.md +++ /dev/null @@ -1,124 +0,0 @@ -### llvm v3.9.0 - -This is a package of all llvm tools. Multiple packages are based on repackaging the binaries from this one including: - - - clang++ 3.9.0 - - clang-tidy 3.9.0 - - clang-format 3.9.0 - -### Details of package - -This package inherits from `scripts/llvm/base/common.sh`, which is a base configuration and not an actual package itself. - -Therefore to see the intricacies of how this package is built look in `scripts/llvm/base/common.sh`. - -The `scripts/llvm/base/common.sh` is used by both llvm 3.8.1 and llvm 3.9.0 packages (and future ones). It reduces duplication of package code and makes it easier to update the builds in one place to benefit all versions. - -The `scripts/llvm/3.9.0/script.sh` therefore sources `scripts/llvm/base/common.sh` and then overrides just the functions that need to be customized. At the time of writing this is only the `setup_release` function. It is customized in order to provide version specific md5 values which can ensure that upstream packages do not change without us noticing. - -### Details of builds - - - Done on Sept 22, 2016 by @springmeyer - - OS X build done on OS X 10.11 - - Linux build done on ubuntu precise - -The order and method of building was generally: - -```sh -VERSION=3.9.0 -./mason build llvm ${VERSION} -./mason publish llvm ${VERSION} -./mason build clang++ ${VERSION} -./mason publish clang++ ${VERSION} -./mason build clang-tidy ${VERSION} -./mason publish clang-tidy ${VERSION} -./mason build clang-format ${VERSION} -./mason publish clang-format ${VERSION} -./mason build lldb ${VERSION} -./mason publish lldb ${VERSION} -./mason build llvm-cov ${VERSION} -./mason publish llvm-cov ${VERSION} -``` - -#### OSX details - -On macOS we use the apple system clang++ to compile and link against the apple system libc++. - -```sh -$ clang++ -v -Apple LLVM version 7.3.0 (clang-703.0.31) -Target: x86_64-apple-darwin15.6.0 -Thread model: posix -InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin -``` - -Therefore the llvm package was built like: - -```sh -./mason build llvm 3.9.0 -``` - -#### Linux details - -On linux we use precise in order to ensure that binaries can be run on ubuntu precise and newer platforms. - -We still want to compile clang++ in c++11 mode so we compile clang++ using a mason provided clang++. - -To support c++11 we'd normally need to upgrade libstdc++ which would make it problematic for the resulting binary to be portable to linux systems without that upgraded libstdc++. So we avoid this issue by instead linking clang++ to libc++, which itself will travel inside the clang++ package. - -To accomplish this (c++11 build of clang++ and linking to libc++ instead of an upgraded libstdc++) we did: - -```sh -./mason install clang++ 3.9.0 -CLANG_39_PREFIX=$(./mason prefix clang++ 3.9.0) -export CXX=${CLANG_39_PREFIX}/bin/clang++-3.9 -export CC=${CLANG_39_PREFIX}/bin/clang-3.9 -./mason build llvm 3.9.0 -``` - -The reason `LD_LIBRARY_PATH` is set before the build is so that libc++.so can be found during linking. Once linked clang++ automatically uses the right @rpath on macOS and linux to find its own libc++.so at runtime. - -TODO: - - - Modify the llvm 3.9.0 build scripts to build libc++ and libc++abi first. - - Then we should be able to point LD_LIBRARY_PATH at llvm 3.9.0's libc++.so to avoid potential ABI mismatch with the version provided by 3.8.0 - - LD_LIBRARY_PATH would be pointed at the theoretical location of llvm 3.9.0's libc++, and that location would exist and become valid before llvm 3.9.0's clang++ is linked. - - -### Testing of these new tools - -Once these packages were built I needed to test that they could be used to build and publish other mason packages. And I needed to be able to test that these packages worked for downstream users. - -To accomplish this I branched mason and changed the `MASON_PLATFORM_ID` to enable publishing new binaries with llvm 3.9.0 tools without overwriting existing binaries. - -``` -diff --git a/mason.sh b/mason.sh -index 800216d..ccc1fcb 100644 ---- a/mason.sh -+++ b/mason.sh -@@ -259,7 +259,7 @@ MASON_SLUG=${MASON_NAME}-${MASON_VERSION} - if [[ ${MASON_HEADER_ONLY} == true ]]; then - MASON_PLATFORM_ID=headers - else -- MASON_PLATFORM_ID=${MASON_PLATFORM}-${MASON_PLATFORM_VERSION} -+ MASON_PLATFORM_ID=${MASON_PLATFORM}-${MASON_PLATFORM_VERSION}-llvm390 - fi - MASON_PREFIX=${MASON_ROOT}/${MASON_PLATFORM_ID}/${MASON_NAME}/${MASON_VERSION} - MASON_BINARIES=${MASON_PLATFORM_ID}/${MASON_NAME}/${MASON_VERSION}.tar.gz -``` - -But changing the `MASON_PLATFORM_ID` also means that you loose access to all existing binaries for building packages. To ensure I could still bootstrap the builds I seeded this new `MASON_PLATFORM_ID` with key build tools, including the previously built llvm tools being discussed here. - -``` -CUSTOM_PATH="llvm390" -aws s3 sync --acl public-read s3://mason-binaries/linux-x86_64/llvm/ s3://mason-binaries/linux-x86_64-{CUSTOM_PATH}/llvm/ -aws s3 sync --acl public-read s3://mason-binaries/linux-x86_64/clang++/ s3://mason-binaries/linux-x86_64-{CUSTOM_PATH}/clang++/ -aws s3 sync --acl public-read s3://mason-binaries/linux-x86_64/cmake/ s3://mason-binaries/linux-x86_64-{CUSTOM_PATH}/cmake/ -aws s3 sync --acl public-read s3://mason-binaries/linux-x86_64/ccache/ s3://mason-binaries/linux-x86_64-{CUSTOM_PATH}/ccache/ -aws s3 sync --acl public-read s3://mason-binaries/linux-x86_64/ninja/ s3://mason-binaries/linux-x86_64-{CUSTOM_PATH}/ninja/ -aws s3 sync --acl public-read s3://mason-binaries/osx-x86_64/llvm/ s3://mason-binaries/osx-x86_64-{CUSTOM_PATH}/llvm/ -aws s3 sync --acl public-read s3://mason-binaries/osx-x86_64/clang++/ s3://mason-binaries/osx-x86_64-{CUSTOM_PATH}/clang++/ -aws s3 sync --acl public-read s3://mason-binaries/osx-x86_64/cmake/ s3://mason-binaries/osx-x86_64-{CUSTOM_PATH}/cmake/ -aws s3 sync --acl public-read s3://mason-binaries/osx-x86_64/ccache/ s3://mason-binaries/osx-x86_64-{CUSTOM_PATH}/ccache/ -aws s3 sync --acl public-read s3://mason-binaries/osx-x86_64/ninja/ s3://mason-binaries/osx-x86_64-{CUSTOM_PATH}/ninja/ -``` diff --git a/third_party/mason/scripts/llvm/3.9.0/.travis.yml b/third_party/mason/scripts/llvm/3.9.1/.travis.yml similarity index 100% rename from third_party/mason/scripts/llvm/3.9.0/.travis.yml rename to third_party/mason/scripts/llvm/3.9.1/.travis.yml diff --git a/third_party/mason/scripts/llvm/3.9.0/script.sh b/third_party/mason/scripts/llvm/3.9.1/script.sh similarity index 75% rename from third_party/mason/scripts/llvm/3.9.0/script.sh rename to third_party/mason/scripts/llvm/3.9.1/script.sh index efb47c582..7e636afc7 100755 --- a/third_party/mason/scripts/llvm/3.9.0/script.sh +++ b/third_party/mason/scripts/llvm/3.9.1/script.sh @@ -10,17 +10,17 @@ MASON_VERSION=$(basename $HERE) source ${HERE}/../../${MASON_NAME}/base/common.sh function setup_release() { - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/llvm-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/ 00f5268479117c9c7f90d0f9e2f06485875f5444 - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/cfe-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/clang 465e70cfb1d8b3fb5d1f6577933f7b5014aca3bd - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/compiler-rt-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/compiler-rt 7a2ea8a7257a739330d8f7cfe2bcb70939476f31 + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/llvm-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/ 282e47884738e362ff4dc70910d2e08c242f161a + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/cfe-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/clang 211b70f3cc75ef318dfa4efd57a2e9c547375f94 + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/compiler-rt-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/compiler-rt 19981bad5a444b36b2834d5bfd3edd5c66c7ca22 if [[ ${BUILD_AND_LINK_LIBCXX} == true ]]; then - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/libcxx-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/libcxx 248635c4821b9f2e4b620364c21a2596eed514cd - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/libcxxabi-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/libcxxabi 04ffa28577ec3d935dcd69d137a2e478e71f2704 - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/libunwind-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/libunwind 32e17eaf6a5b769c244480bd32ab3c9cbdf6c97d + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/libcxx-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/libcxx 2fdaf6017fe742974eb06f9529321a915e84a034 + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/libcxxabi-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/libcxxabi 277446b2957d2a82ef10d173b3882b64d68ca5d0 + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/libunwind-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/projects/libunwind 0df57c982fda5ba8b97698525ed6fea09f87ea15 fi - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/lld-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/lld e1829cd47a5c44ad6c68957056afe63879ad9610 - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/clang-tools-extra-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/clang/tools/extra 8e7e118a769c76e70d5fb2ede66c8f5a2952f8d9 - get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/lldb-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/lldb 988766cbb3d4a295b33dd11f51f7f20811bfa8f2 + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/lld-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/lld 6c8018e5caf82f1f771d24b532af11c67228f333 + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/clang-tools-extra-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/clang/tools/extra a3f5d99cd3d4ccdfc6d4dba15db616d53a654c3f + get_llvm_project "http://llvm.org/releases/${MASON_VERSION}/lldb-${MASON_VERSION}.src.tar.xz" ${MASON_BUILD_PATH}/tools/lldb c8e35a599bd366d1fc122526d3b7a1902890d1ed get_llvm_project "https://github.com/include-what-you-use/include-what-you-use/archive/clang_${MAJOR_MINOR}.tar.gz" ${MASON_BUILD_PATH}/tools/clang/tools/include-what-you-use 7e5c73ce1a2fdd1ffd29fad1ae2628d0134368c6 } diff --git a/third_party/mason/scripts/llvm/base/common.sh b/third_party/mason/scripts/llvm/base/common.sh index e4b909823..35b8ad01c 100755 --- a/third_party/mason/scripts/llvm/base/common.sh +++ b/third_party/mason/scripts/llvm/base/common.sh @@ -9,8 +9,8 @@ export MAJOR_MINOR=$(echo ${MASON_VERSION} | cut -d '.' -f1-2) if [[ $(uname -s) == 'Darwin' ]]; then export BUILD_AND_LINK_LIBCXX=false - # TODO: could also use LIBCXX_INSTALL_SUPPORT_HEADERS, LIBCXX_INSTALL_LIBRARY, LIBCXX_INSTALL_HEADERS - # avoids this kind of problem with include-what-you-use: + # avoids this kind of problem with include-what-you-use + # because iwyu hardcodes at https://github.com/include-what-you-use/include-what-you-use/blob/da5c9b17fec571e6b2bbca29145463d7eaa3582e/iwyu_driver.cc#L219 : ' /Library/Developer/CommandLineTools/usr/include/c++/v1/cstdlib:167:44: error: declaration conflicts with target of using declaration already in scope inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} @@ -123,6 +123,11 @@ function mason_compile { # knock out lldb doc building, to remove doxygen dependency perl -i -p -e "s/add_subdirectory\(docs\)//g;" tools/lldb/CMakeLists.txt + # remove /usr/local/include from default paths (targeting linux) + # because we want users to have to explictly link things in /usr/local to avoid conflicts + # between mason and homebrew or source installs + perl -i -p -e "s/AddPath\(\"\/usr\/local\/include\"\, System\, false\)\;//g;" tools/clang/lib/Frontend/InitHeaderSearch.cpp + if [[ ${MAJOR_MINOR} == "3.8" ]]; then # workaround https://llvm.org/bugs/show_bug.cgi?id=25565 perl -i -p -e "s/set\(codegen_deps intrinsics_gen\)/set\(codegen_deps intrinsics_gen attributes_inc\)/g;" lib/CodeGen/CMakeLists.txt @@ -139,18 +144,35 @@ function mason_compile { cd ./build CMAKE_EXTRA_ARGS="" if [[ $(uname -s) == 'Darwin' ]]; then - # This is a stable location for libc++ headers from the system - SYSTEM_LIBCXX_HEADERS="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/" - # This is the location of C headers on 10.11 - OSX_10_11_SDK_C_HEADERS="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/" - # This is the location of C headers on >= 10.12 which is a symlink to the versioned SDK - OSX_10_12_AND_GREATER_SDK_HEADERS="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/" - # This allows this version of clang to find the headers from only a command line tools install (no xcode installed) - # It is debatable whether this should be supported - COMMAND_LINE_TOOLS_C_HEADERS="/usr/include" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DC_INCLUDE_DIRS=:${SYSTEM_LIBCXX_HEADERS}:${OSX_10_12_AND_GREATER_SDK_HEADERS}:${OSX_10_11_SDK_C_HEADERS}:${COMMAND_LINE_TOOLS_C_HEADERS}" + : ' + Note: C_INCLUDE_DIRS and DEFAULT_SYSROOT are critical options to understand to ensure C and C++ headers are predictably found. + + The way things work in clang++ on OS X (inside http://clang.llvm.org/doxygen/InitHeaderSearch_8cpp.html) is: + + - The `:` separated `C_INCLUDE_DIRS` are added to the include paths + - If `C_INCLUDE_DIRS` is present `InitHeaderSearch::AddDefaultCIncludePaths` returns early + - Without that early return `/usr/include` would be added by default on OS X + - If `-isysroot` is passed then absolute `C_INCLUDE_DIRS` are appended to the sysroot + - So if sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/ and + C_INCLUDE_DIRS=/usr/include the actual path searched would be: + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include + - Relative `C_INCLUDE_DIRS` seem pointless because they are not appended to the sysroot and so will not be portable + - clang++ finds C++ headers relative to itself at https://github.com/llvm-mirror/clang/blob/master/lib/Frontend/InitHeaderSearch.cpp#L469-L470 + - So, given on OS X we want to use the XCode/Apple provided libc++ and c++ headers we symlink the relative location to /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++ + - The alternative would be to symlink to the command line tools location (/Library/Developer/CommandLineTools/usr/include/c++/v1/) + + Another viable sysroot would be the command line tools at /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk + + Generally each SDK/Platform version has its own C headers inside SDK_PATH/usr/include while all platforms share the C++ headers which + are at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/ + + NOTE: show search paths with: `clang -x c -v -E /dev/null` || `cpp -v` && `clang -Xlinker -v` + ' + CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DC_INCLUDE_DIRS=/usr/include" + # setting the default sysroot to an explicit SDK avoids clang++ adding `/usr/local/include` to the paths by default at https://github.com/llvm-mirror/clang/blob/91d69c3c9c62946245a0fe6526d5ec226dfe7408/lib/Frontend/InitHeaderSearch.cpp#L226 + # because that value will be appended to the sysroot, not exist, and then get thrown out. If the sysroot were / then it would be added + CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DDEFAULT_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCLANG_DEFAULT_CXX_STDLIB=libc++" - CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DDEFAULT_SYSROOT=/" CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11" CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DLLVM_CREATE_XCODE_TOOLCHAIN=ON -DLLVM_EXTERNALIZE_DEBUGINFO=ON" fi @@ -182,16 +204,25 @@ function mason_compile { fi fi + # on linux the default is to link programs compiled by clang++ to libstdc++ and below we make that explicit. + if [[ $(uname -s) == 'Linux' ]]; then + export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCLANG_DEFAULT_CXX_STDLIB=libstdc++" + fi + # TODO: test this #-DLLVM_ENABLE_LTO=ON \ + # TODO: try rtlib=compiler-rt on linux + # https://blogs.gentoo.org/gsoc2016-native-clang/2016/05/31/build-gnu-free-executables-with-clang/ + if [[ ${BUILD_AND_LINK_LIBCXX} == true ]]; then CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DLIBCXX_ENABLE_ASSERTIONS=OFF -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXXABI_ENABLE_SHARED=OFF -DLIBCXXABI_USE_LLVM_UNWINDER=ON -DLIBUNWIND_ENABLE_SHARED=OFF" fi ${MASON_CMAKE}/bin/cmake ../ -G Ninja -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64" \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_TARGETS_TO_BUILD="X86" \ -DCMAKE_CXX_COMPILER_LAUNCHER="${MASON_CCACHE}/bin/ccache" \ -DCMAKE_CXX_COMPILER="$CXX" \ -DCMAKE_C_COMPILER="$CC" \ @@ -205,50 +236,45 @@ function mason_compile { -DCMAKE_MAKE_PROGRAM=${MASON_NINJA}/bin/ninja \ ${CMAKE_EXTRA_ARGS} + if [[ ${BUILD_AND_LINK_LIBCXX} == true ]]; then + ${MASON_NINJA}/bin/ninja unwind -j${MASON_CONCURRENCY} + + # make libc++ and libc++abi first + ${MASON_NINJA}/bin/ninja cxx -j${MASON_CONCURRENCY} + + ${MASON_NINJA}/bin/ninja lldb -j${MASON_CONCURRENCY} + fi + + # then make everything else + ${MASON_NINJA}/bin/ninja -j${MASON_CONCURRENCY} + + # install it all + ${MASON_NINJA}/bin/ninja install + if [[ $(uname -s) == 'Darwin' ]]; then # https://reviews.llvm.org/D13605 ${MASON_NINJA}/bin/ninja install-xcode-toolchain -j${MASON_CONCURRENCY} fi - if [[ ${BUILD_AND_LINK_LIBCXX} == true ]]; then - ${MASON_NINJA}/bin/ninja unwind -j${MASON_CONCURRENCY} - - # make libc++ and libc++abi first - # this ensures that the LD_LIBRARY_PATH above will be valid - # and that clang++ on linux will be able to link itself to - # this same instance of libc++ - ${MASON_NINJA}/bin/ninja cxx -j${MASON_CONCURRENCY} - - ${MASON_NINJA}/bin/ninja lldb -j${MASON_CONCURRENCY} - # no move the host compilers libc++ and libc++abi shared libs out of the way - if [[ ${CXX_BOOTSTRAP:-false} != false ]]; then - mkdir -p /tmp/backup_shlibs - mv $(dirname $(dirname $CXX))/lib/*c++*so /tmp/backup_shlibs/ - fi - fi - - # then make everything else - ${MASON_NINJA}/bin/ninja -j${MASON_CONCURRENCY} - # install it all - ${MASON_NINJA}/bin/ninja install - # install the asan_symbolizer.py tool cp -a ../projects/compiler-rt/lib/asan/scripts/asan_symbolize.py ${MASON_PREFIX}/bin/ - # set up symlinks for to match what llvm.org binaries provide + # set up symlinks to match what llvm.org binaries provide cd ${MASON_PREFIX}/bin/ ln -s "clang++" "clang++-${MAJOR_MINOR}" ln -s "asan_symbolize.py" "asan_symbolize" - # restore host compilers sharedlibs - if [[ ${BUILD_AND_LINK_LIBCXX} == true ]]; then - if [[ ${CXX_BOOTSTRAP:-false} != false ]]; then - cp -r /tmp/backup_shlibs/* $(dirname $(dirname $CXX))/lib/ - fi + # symlink so that we use the system libc++ headers on osx + if [[ $(uname -s) == 'Darwin' ]]; then + mkdir -p ${MASON_PREFIX}/include + cd ${MASON_PREFIX}/include + # note: passing -nostdinc++ will result in this local path being ignored + ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++ c++ fi } + function mason_cflags { : } diff --git a/third_party/mason/scripts/luabind/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh b/third_party/mason/scripts/luabind/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh deleted file mode 100755 index c5f0098be..000000000 --- a/third_party/mason/scripts/luabind/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=luabind -MASON_VERSION=e414c57bcb687bb3091b7c55bbff6947f052e46b -MASON_LIB_FILE=lib/libluabind.a - -. ${MASON_DIR}/mason.sh - -function mason_load_source { - mason_download \ - https://github.com/mapbox/luabind/archive/${MASON_VERSION}.tar.gz \ - 49bbe06214a6a747a1f20eba34b7c2d0ea41c51a - - mason_extract_tar_gz - - export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} -} - -function mason_prepare_compile { - cd $(dirname ${MASON_ROOT}) - ${MASON_DIR}/mason install lua 5.3.0 - MASON_LUA=$(${MASON_DIR}/mason prefix lua 5.3.0) - ${MASON_DIR}/mason install boost 1.57.0 - MASON_BOOST_HEADERS=$(${MASON_DIR}/mason prefix boost 1.57.0) - SYSTEM_ZLIB="/usr" -} - -function mason_compile { - mkdir build - cd build - cmake - cmake ../ -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ - -DLUA_LIBRARIES=${MASON_LUA}/lib \ - -DLUA_INCLUDE_DIR=${MASON_LUA}/include \ - -DBOOST_INCLUDEDIR=${MASON_BOOST_HEADERS}/include \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_TESTING=OFF - make -j${MASON_CONCURRENCY} VERBOSE=1 - make install -} - -function mason_cflags { - echo "-I${MASON_PREFIX}/include" -} - -function mason_ldflags { - echo "-L${MASON_PREFIX}/lib -lluabind" -} - -function mason_clean { - make clean -} - -mason_run "$@" diff --git a/third_party/mason/scripts/luabind_lua51/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh b/third_party/mason/scripts/luabind_lua51/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh deleted file mode 100755 index 6368bf7c7..000000000 --- a/third_party/mason/scripts/luabind_lua51/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=luabind_lua51 -MASON_VERSION=e414c57bcb687bb3091b7c55bbff6947f052e46b -MASON_LIB_FILE=lib/libluabind.a - -. ${MASON_DIR}/mason.sh - -function mason_load_source { - mason_download \ - https://github.com/mapbox/luabind/archive/${MASON_VERSION}.tar.gz \ - 49bbe06214a6a747a1f20eba34b7c2d0ea41c51a - - mason_extract_tar_gz - - export MASON_BUILD_PATH=${MASON_ROOT}/.build/luabind-${MASON_VERSION} -} - -function mason_prepare_compile { - cd $(dirname ${MASON_ROOT}) - ${MASON_DIR}/mason install lua 5.1.0 - MASON_LUA=$(${MASON_DIR}/mason prefix lua 5.1.0) - ${MASON_DIR}/mason install boost 1.57.0 - MASON_BOOST_HEADERS=$(${MASON_DIR}/mason prefix boost 1.57.0) - SYSTEM_ZLIB="/usr" -} - -function mason_compile { - mkdir build - cd build - cmake - cmake ../ -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ - -DLUA_LIBRARIES=${MASON_LUA}/lib \ - -DLUA_INCLUDE_DIR=${MASON_LUA}/include \ - -DBOOST_INCLUDEDIR=${MASON_BOOST_HEADERS}/include \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_TESTING=OFF - make -j${MASON_CONCURRENCY} VERBOSE=1 - make install -} - -function mason_cflags { - echo "-I${MASON_PREFIX}/include" -} - -function mason_ldflags { - echo "-L${MASON_PREFIX}/lib -lluabind" -} - -function mason_clean { - make clean -} - -mason_run "$@" diff --git a/third_party/mason/scripts/luabind_lua524/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh b/third_party/mason/scripts/luabind_lua524/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh deleted file mode 100755 index 697d72650..000000000 --- a/third_party/mason/scripts/luabind_lua524/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=luabind_lua524 -MASON_VERSION=e414c57bcb687bb3091b7c55bbff6947f052e46b -MASON_LIB_FILE=lib/libluabind.a - -. ${MASON_DIR}/mason.sh - -function mason_load_source { - mason_download \ - https://github.com/mapbox/luabind/archive/${MASON_VERSION}.tar.gz \ - 49bbe06214a6a747a1f20eba34b7c2d0ea41c51a - - mason_extract_tar_gz - - export MASON_BUILD_PATH=${MASON_ROOT}/.build/luabind-${MASON_VERSION} -} - -function mason_prepare_compile { - cd $(dirname ${MASON_ROOT}) - ${MASON_DIR}/mason install lua 5.2.4 - MASON_LUA=$(${MASON_DIR}/mason prefix lua 5.2.4) - ${MASON_DIR}/mason install boost 1.61.0 - MASON_BOOST_HEADERS=$(${MASON_DIR}/mason prefix boost 1.61.0) - ${MASON_DIR}/mason install cmake 3.5.2 - MASON_CMAKE=$(${MASON_DIR}/mason prefix cmake 3.5.2) -} - -function mason_compile { - rm -rf build - mkdir build - cd build - ${MASON_CMAKE}/bin/cmake ../ -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ - -DCMAKE_CXX_FLAGS="${CXXFLAGS} -DLUA_COMPAT_ALL" \ - -DLUA_LIBRARIES=${MASON_LUA}/lib \ - -DLUA_INCLUDE_DIR=${MASON_LUA}/include \ - -DBOOST_INCLUDEDIR=${MASON_BOOST_HEADERS}/include \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_TESTING=OFF - make -j${MASON_CONCURRENCY} VERBOSE=1 - make install -} - -function mason_cflags { - echo "-I${MASON_PREFIX}/include" -} - -function mason_ldflags { - echo "-L${MASON_PREFIX}/lib -lluabind" -} - -function mason_clean { - make clean -} - -mason_run "$@" diff --git a/third_party/mason/scripts/luabind_luajit2.0.3/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh b/third_party/mason/scripts/luabind_luajit2.0.3/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh deleted file mode 100755 index 802eeb9a0..000000000 --- a/third_party/mason/scripts/luabind_luajit2.0.3/e414c57bcb687bb3091b7c55bbff6947f052e46b/script.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=luabind_luajit2.0.3 -MASON_VERSION=e414c57bcb687bb3091b7c55bbff6947f052e46b -MASON_LIB_FILE=lib/libluabind.a - -. ${MASON_DIR}/mason.sh - -function mason_load_source { - mason_download \ - https://github.com/mapbox/luabind/archive/${MASON_VERSION}.tar.gz \ - 49bbe06214a6a747a1f20eba34b7c2d0ea41c51a - - mason_extract_tar_gz - - export MASON_BUILD_PATH=${MASON_ROOT}/.build/luabind-${MASON_VERSION} -} - -function mason_prepare_compile { - cd $(dirname ${MASON_ROOT}) - ${MASON_DIR}/mason install luajit 2.0.3 - MASON_LUA=$(${MASON_DIR}/mason prefix luajit 2.0.3) - ${MASON_DIR}/mason install boost 1.57.0 - MASON_BOOST_HEADERS=$(${MASON_DIR}/mason prefix boost 1.57.0) - SYSTEM_ZLIB="/usr" -} - -function mason_compile { - mkdir build - cd build - cmake - cmake ../ -DCMAKE_INSTALL_PREFIX=${MASON_PREFIX} \ - -DLUA_LIBRARIES=${MASON_LUA}/lib \ - -DLUA_INCLUDE_DIR=${MASON_LUA}/include/luajit-2.0 \ - -DBOOST_INCLUDEDIR=${MASON_BOOST_HEADERS}/include \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_TESTING=OFF - make -j${MASON_CONCURRENCY} VERBOSE=1 - make install -} - -function mason_cflags { - echo "-I${MASON_PREFIX}/include" -} - -function mason_ldflags { - echo "-L${MASON_PREFIX}/lib -lluabind" -} - -function mason_clean { - make clean -} - -mason_run "$@" diff --git a/third_party/mason/scripts/luajit/2.0.3/script.sh b/third_party/mason/scripts/luajit/2.0.3/script.sh deleted file mode 100755 index 1fb044ed0..000000000 --- a/third_party/mason/scripts/luajit/2.0.3/script.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -MASON_NAME=luajit -MASON_VERSION=2.0.3 -MASON_LIB_FILE=lib/libluajit-5.1.a - -. ${MASON_DIR}/mason.sh - -function mason_load_source { - mason_download \ - http://luajit.org/download/LuaJIT-2.0.3.tar.gz \ - 0705f5967736b3b01fe7b96af03a8fff45fa43d8 - - mason_extract_tar_gz - - export MASON_BUILD_PATH=${MASON_ROOT}/.build/LuaJIT-${MASON_VERSION} -} - -function mason_compile { - make CC=$CC CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" PREFIX=${MASON_PREFIX} install -} - -function mason_cflags { - echo "-I${MASON_PREFIX}/include" -} - -function mason_ldflags { - echo "ld ${MASON_PREFIX}/lib/libluajit-5.1.a" -} - -function mason_clean { - make clean -} - -mason_run "$@" diff --git a/third_party/mason/scripts/minjur/a2c9dc871369432c7978718834dac487c0591bd6/script.sh b/third_party/mason/scripts/minjur/a2c9dc871369432c7978718834dac487c0591bd6/script.sh index db3d2641d..f5d2e1835 100755 --- a/third_party/mason/scripts/minjur/a2c9dc871369432c7978718834dac487c0591bd6/script.sh +++ b/third_party/mason/scripts/minjur/a2c9dc871369432c7978718834dac487c0591bd6/script.sh @@ -44,6 +44,7 @@ function mason_compile { cd build CMAKE_PREFIX_PATH=${MASON_ROOT}/.link \ cmake \ + -DCMAKE_BUILD_TYPE=Release \ -DOSMIUM_INCLUDE_DIR=${OSMIUM_INCLUDE_DIR} \ .. make diff --git a/third_party/mason/scripts/minjur/feac70472f46c3145b6bdf7a02fdc37777828318/script.sh b/third_party/mason/scripts/minjur/feac70472f46c3145b6bdf7a02fdc37777828318/script.sh index dec053d66..88e790bb7 100755 --- a/third_party/mason/scripts/minjur/feac70472f46c3145b6bdf7a02fdc37777828318/script.sh +++ b/third_party/mason/scripts/minjur/feac70472f46c3145b6bdf7a02fdc37777828318/script.sh @@ -44,6 +44,7 @@ function mason_compile { cd build CMAKE_PREFIX_PATH=${MASON_ROOT}/.link \ cmake \ + -DCMAKE_BUILD_TYPE=Release \ -DOSMIUM_INCLUDE_DIR=${OSMIUM_INCLUDE_DIR} \ .. make diff --git a/third_party/mason/scripts/minjur/latest/.travis.yml b/third_party/mason/scripts/minjur/latest/.travis.yml index 5de46c60f..d4048f062 100644 --- a/third_party/mason/scripts/minjur/latest/.travis.yml +++ b/third_party/mason/scripts/minjur/latest/.travis.yml @@ -1,29 +1,19 @@ -language: c - -sudo: false - -addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.7 - packages: - - clang-3.7 +language: generic matrix: include: - os: osx - osx_image: xcode6 - compiler: clang - - os: osx - osx_image: xcode7 + osx_image: xcode8 compiler: clang - os: linux - compiler: clang - env: CXX=clang++-3.7 + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/minjur/latest/script.sh b/third_party/mason/scripts/minjur/latest/script.sh index 85aac521a..dd74f207e 100755 --- a/third_party/mason/scripts/minjur/latest/script.sh +++ b/third_party/mason/scripts/minjur/latest/script.sh @@ -16,27 +16,24 @@ function mason_load_source { } function mason_prepare_compile { - echo ${MASON_ROOT}/.build - cd ${MASON_ROOT} - OSMIUM_INCLUDE_DIR=${MASON_ROOT}/osmcode-libosmium-latest/include - curl --retry 3 -f -# -L "https://github.com/osmcode/libosmium/tarball/master" -o osmium.tar.gz - tar -xzf osmium.tar.gz - rm -rf osmcode-libosmium-latest - mv osmcode-libosmium-* osmcode-libosmium-latest - - cd $(dirname ${MASON_ROOT}) - ${MASON_DIR}/mason install cmake 3.2.2 - ${MASON_DIR}/mason link cmake 3.2.2 - ${MASON_DIR}/mason install boost 1.59.0 - ${MASON_DIR}/mason link boost 1.59.0 - ${MASON_DIR}/mason install boost_liball 1.59.0 - ${MASON_DIR}/mason link boost_liball 1.59.0 + ${MASON_DIR}/mason install cmake 3.6.2 + ${MASON_DIR}/mason link cmake 3.6.2 + ${MASON_DIR}/mason install utfcpp 2.3.4 + ${MASON_DIR}/mason link utfcpp 2.3.4 + ${MASON_DIR}/mason install protozero 1.4.5 + ${MASON_DIR}/mason link protozero 1.4.5 + ${MASON_DIR}/mason install rapidjson 2016-07-20-369de87 + ${MASON_DIR}/mason link rapidjson 2016-07-20-369de87 + ${MASON_DIR}/mason install libosmium 2.10.3 + ${MASON_DIR}/mason link libosmium 2.10.3 + ${MASON_DIR}/mason install boost 1.62.0 + ${MASON_DIR}/mason link boost 1.62.0 ${MASON_DIR}/mason install zlib 1.2.8 ${MASON_DIR}/mason link zlib 1.2.8 - ${MASON_DIR}/mason install expat 2.1.0 - ${MASON_DIR}/mason link expat 2.1.0 - ${MASON_DIR}/mason install bzip 1.0.6 - ${MASON_DIR}/mason link bzip 1.0.6 + ${MASON_DIR}/mason install expat 2.2.0 + ${MASON_DIR}/mason link expat 2.2.0 + ${MASON_DIR}/mason install bzip2 1.0.6 + ${MASON_DIR}/mason link bzip2 1.0.6 } function mason_compile { @@ -45,15 +42,27 @@ function mason_compile { cd build CMAKE_PREFIX_PATH=${MASON_ROOT}/.link \ ${MASON_ROOT}/.link/bin/cmake \ - -DOSMIUM_INCLUDE_DIR=${OSMIUM_INCLUDE_DIR} \ + -DCMAKE_BUILD_TYPE=Release \ .. - make + make VERBOSE=1 mkdir -p ${MASON_PREFIX}/bin mv minjur ${MASON_PREFIX}/bin/minjur mv minjur-mp ${MASON_PREFIX}/bin/minjur-mp mv minjur-generate-tilelist ${MASON_PREFIX}/bin/minjur-generate-tilelist } +function mason_cflags { + : +} + +function mason_ldflags { + : +} + +function mason_static_libs { + : +} + function mason_clean { make clean } diff --git a/third_party/mason/scripts/pixman/0.34.0/.travis.yml b/third_party/mason/scripts/pixman/0.34.0/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/pixman/0.34.0/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/pixman/0.34.0/script.sh b/third_party/mason/scripts/pixman/0.34.0/script.sh new file mode 100755 index 000000000..806aa52e2 --- /dev/null +++ b/third_party/mason/scripts/pixman/0.34.0/script.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +MASON_NAME=pixman +MASON_VERSION=0.34.0 +MASON_LIB_FILE=lib/libpixman-1.a + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + http://cairographics.org/releases/pixman-${MASON_VERSION}.tar.gz \ + 022e9e5856f4c5a8c9bdea3996c6b199683fce78 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} +} + +function mason_compile { + ./configure \ + --prefix=${MASON_PREFIX} \ + ${MASON_HOST_ARG} \ + --enable-static \ + --disable-shared \ + --disable-dependency-tracking \ + --disable-mmx \ + --disable-ssse3 \ + --disable-libpng \ + --disable-gtk + + # The -i and -k flags are to workaround osx bug in pixman tests: Undefined symbols for architecture x86_64: "_prng_state + make -j${MASON_CONCURRENCY} -i -k + make install -i -k +} + +function mason_cflags { + echo -I${MASON_PREFIX}/include +} + +function mason_ldflags { + echo -L${MASON_PREFIX}/lib -ljpeg +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/luajit/2.0.3/.travis.yml b/third_party/mason/scripts/polylabel/1.0.2/.travis.yml similarity index 60% rename from third_party/mason/scripts/luajit/2.0.3/.travis.yml rename to third_party/mason/scripts/polylabel/1.0.2/.travis.yml index 3431d4fb7..5fca39ee3 100644 --- a/third_party/mason/scripts/luajit/2.0.3/.travis.yml +++ b/third_party/mason/scripts/polylabel/1.0.2/.travis.yml @@ -1,14 +1,6 @@ language: cpp - sudo: false -matrix: - include: - - os: osx - compiler: clang - - os: linux - compiler: clang - script: - ./mason build ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/polylabel/1.0.2/script.sh b/third_party/mason/scripts/polylabel/1.0.2/script.sh new file mode 100755 index 000000000..1285e7766 --- /dev/null +++ b/third_party/mason/scripts/polylabel/1.0.2/script.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +MASON_NAME=polylabel +MASON_VERSION=1.0.2 +MASON_HEADER_ONLY=true + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + https://github.com/mapbox/polylabel/archive/ad5b37a15502507198f62d1ced608cebf0abf6cf.tar.gz \ + 7f982a293c5024ad170c8b54977189a995486615 + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-ad5b37a15502507198f62d1ced608cebf0abf6cf +} + +function mason_compile { + mkdir -p ${MASON_PREFIX}/include/mapbox + cp -v polylabel.hpp ${MASON_PREFIX}/include/mapbox/polylabel.hpp + cp -v README.md LICENSE ${MASON_PREFIX} +} + +function mason_cflags { + echo -I${MASON_PREFIX}/include +} + +function mason_ldflags { + : +} + +function mason_static_libs { + : +} + +mason_run "$@" diff --git a/third_party/mason/scripts/luabind/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml b/third_party/mason/scripts/protozero/1.4.5/.travis.yml similarity index 67% rename from third_party/mason/scripts/luabind/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml rename to third_party/mason/scripts/protozero/1.4.5/.travis.yml index 3431d4fb7..00c277c21 100644 --- a/third_party/mason/scripts/luabind/e414c57bcb687bb3091b7c55bbff6947f052e46b/.travis.yml +++ b/third_party/mason/scripts/protozero/1.4.5/.travis.yml @@ -1,16 +1,11 @@ -language: cpp - -sudo: false +language: generic matrix: include: - - os: osx - compiler: clang - os: linux compiler: clang + sudo: false script: - ./mason build ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/protozero/1.4.5/script.sh b/third_party/mason/scripts/protozero/1.4.5/script.sh new file mode 100644 index 000000000..114c3d252 --- /dev/null +++ b/third_party/mason/scripts/protozero/1.4.5/script.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +MASON_NAME=protozero +MASON_VERSION=1.4.5 +MASON_HEADER_ONLY=true + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + https://github.com/mapbox/protozero/archive/v${MASON_VERSION}.tar.gz \ + 17958acf20ba7071a040135821afc17d196a33ba + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/protozero-${MASON_VERSION} +} + +function mason_compile { + mkdir -p ${MASON_PREFIX}/include/ + cp -r include/protozero ${MASON_PREFIX}/include/protozero +} + +function mason_cflags { + echo "-I${MASON_PREFIX}/include" +} + +function mason_ldflags { + : +} + +mason_run "$@" diff --git a/third_party/mason/scripts/rocksdb/4.13/.travis.yml b/third_party/mason/scripts/rocksdb/4.13/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/rocksdb/4.13/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/rocksdb/4.13/script.sh b/third_party/mason/scripts/rocksdb/4.13/script.sh new file mode 100644 index 000000000..8e5d79ff1 --- /dev/null +++ b/third_party/mason/scripts/rocksdb/4.13/script.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +MASON_NAME=rocksdb +MASON_VERSION=4.13 +MASON_LIB_FILE=lib/librocksdb.a + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + https://github.com/facebook/${MASON_NAME}/archive/v4.13.tar.gz \ + 0f82fd1e08e3c339dab5b19b08e201aebe6dace4 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-4.13 +} + +function mason_compile { + # by default -O2 is used for release builds (https://github.com/facebook/rocksdb/commit/1d08140e817d5908889f59046148ed4d3b1039e5) + # but this is too conservative + # we want -O3 for best performance + perl -i -p -e "s/-O2 -fno-omit-frame-pointer/-O3/g;" Makefile + INSTALL_PATH=${MASON_PREFIX} V=1 make install-static -j${MASON_CONCURRENCY} + # remove debug symbols (200 MB -> 10 MB) + strip -S ${MASON_PREFIX}/${MASON_LIB_FILE} +} + +function mason_static_libs { + echo ${MASON_PREFIX}/${MASON_LIB_FILE} +} + +function mason_ldflags { + : +} + +mason_run "$@" diff --git a/third_party/mason/scripts/sqlite/3.14.1/.travis.yml b/third_party/mason/scripts/sqlite/3.14.1/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/sqlite/3.14.1/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/sqlite/3.14.1/script.sh b/third_party/mason/scripts/sqlite/3.14.1/script.sh new file mode 100755 index 000000000..e61586b44 --- /dev/null +++ b/third_party/mason/scripts/sqlite/3.14.1/script.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +MASON_NAME=sqlite +MASON_VERSION=3.41.1 +MASON_LIB_FILE=lib/libsqlite3.a +MASON_PKGCONFIG_FILE=lib/pkgconfig/sqlite3.pc + +SQLITE_FILE_VERSION=3140100 + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + https://www.sqlite.org/2016/sqlite-autoconf-${SQLITE_FILE_VERSION}.tar.gz \ + 3cd6b9b45b3c8822d443e50587a242db7c05bbd4 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/sqlite-autoconf-${SQLITE_FILE_VERSION} +} + +function mason_compile { + CFLAGS="-O3 ${CFLAGS}" ./configure \ + --prefix=${MASON_PREFIX} \ + ${MASON_HOST_ARG} \ + --enable-static \ + --with-pic \ + --disable-shared \ + --disable-dependency-tracking + + make install -j${MASON_CONCURRENCY} +} + +function mason_strip_ldflags { + shift # -L... + shift # -lsqlite3 + echo "$@" +} + +function mason_ldflags { + mason_strip_ldflags $(`mason_pkgconfig` --static --libs) +} + +function mason_clean { + make clean +} + +mason_run "$@" diff --git a/third_party/mason/scripts/twemproxy/0.4.1/.travis.yml b/third_party/mason/scripts/twemproxy/0.4.1/.travis.yml new file mode 100644 index 000000000..d4048f062 --- /dev/null +++ b/third_party/mason/scripts/twemproxy/0.4.1/.travis.yml @@ -0,0 +1,19 @@ +language: generic + +matrix: + include: + - os: osx + osx_image: xcode8 + compiler: clang + - os: linux + sudo: false + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-5-dev + +script: +- ./mason build ${MASON_NAME} ${MASON_VERSION} +- ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/twemproxy/0.4.1/script.sh b/third_party/mason/scripts/twemproxy/0.4.1/script.sh new file mode 100755 index 000000000..50ae18ca1 --- /dev/null +++ b/third_party/mason/scripts/twemproxy/0.4.1/script.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +MASON_NAME=twemproxy +MASON_VERSION=0.4.1 +MASON_LIB_FILE=sbin/nutcracker + +. ${MASON_DIR}/mason.sh + +function mason_load_source { + mason_download \ + https://github.com/twitter/${MASON_NAME}/archive/v${MASON_VERSION}.tar.gz \ + 8af659bf54240aecc2f86cdd9ba3ddcc9c35f1f0 + + mason_extract_tar_gz + + export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}-${MASON_VERSION} +} + + +function mason_compile { + autoreconf -ivf + # NOTE: CFLAGS overrides internal default + # which in this case is desirable because it allows us to override the internal + # default of -O2 + export CFLAGS="${CFLAGS} -O3 -DNDEBUG" + ./configure \ + --prefix=${MASON_PREFIX} \ + --disable-debug --disable-dependency-tracking + make -j${MASON_CONCURRENCY} + make install +} + +function mason_cflags { + : +} + +function mason_ldflags { + : +} + +function mason_static_libs { + : +} + +mason_run "$@" diff --git a/third_party/mason/scripts/utfcpp/2.3.4/.travis.yml b/third_party/mason/scripts/utfcpp/2.3.4/.travis.yml index 6cb8a7653..00c277c21 100644 --- a/third_party/mason/scripts/utfcpp/2.3.4/.travis.yml +++ b/third_party/mason/scripts/utfcpp/2.3.4/.travis.yml @@ -1,17 +1,11 @@ -language: cpp - -sudo: false +language: generic matrix: include: - - os: osx - compiler: clang - os: linux compiler: clang + sudo: false script: - ./mason build ${MASON_NAME} ${MASON_VERSION} -- ./mason link ${MASON_NAME} ${MASON_VERSION} - -after_success: - ./mason publish ${MASON_NAME} ${MASON_VERSION} diff --git a/third_party/mason/scripts/utfcpp/2.3.4/script.sh b/third_party/mason/scripts/utfcpp/2.3.4/script.sh index 8e4a40568..90c1d584c 100644 --- a/third_party/mason/scripts/utfcpp/2.3.4/script.sh +++ b/third_party/mason/scripts/utfcpp/2.3.4/script.sh @@ -22,4 +22,16 @@ function mason_compile { cp source/utf8.h ${MASON_PREFIX}/include/ } +function mason_cflags { + echo -I${MASON_PREFIX}/include +} + +function mason_ldflags { + : +} + +function mason_static_libs { + : +} + mason_run "$@" diff --git a/third_party/mason/scripts/v8/5.1.281.47/script.sh b/third_party/mason/scripts/v8/5.1.281.47/script.sh index d8cd492f0..011b5ec63 100755 --- a/third_party/mason/scripts/v8/5.1.281.47/script.sh +++ b/third_party/mason/scripts/v8/5.1.281.47/script.sh @@ -101,7 +101,7 @@ function mason_compile { # -Dtarget_arch=x64 \ # -S.x64.release -Dv8_enable_backtrace=1 -Dwerror='' -Darm_fpu=default -Darm_float_abi=default \ # -Dv8_no_strict_aliasing=1 -Dv8_enable_i18n_support=0 - make x64.release library=static werror=no snapshot=on strictaliasing=off i18nsupport=off -j${MASON_CONCURRENCY} + GYPFLAGS=-Dmac_deployment_target=10.8 make x64.release library=static werror=no snapshot=on strictaliasing=off i18nsupport=off -j${MASON_CONCURRENCY} mkdir -p ${MASON_PREFIX}/include mkdir -p ${MASON_PREFIX}/lib cp -r include/* ${MASON_PREFIX}/include/ @@ -110,6 +110,7 @@ function mason_compile { else cp out/x64.release/obj.target/tools/gyp/lib*.a ${MASON_PREFIX}/lib/ fi + strip -S ${MASON_PREFIX}/lib/* } function mason_cflags { diff --git a/third_party/mason/test/unit.sh b/third_party/mason/test/unit.sh index d5bafbac5..af22e196e 100755 --- a/third_party/mason/test/unit.sh +++ b/third_party/mason/test/unit.sh @@ -14,7 +14,7 @@ fi VAL=$(./mason --version) assertEqual "$?" "0" "able to run ./mason --version" -assertEqual "0.3.0" "$VAL" "got correct result of ./mason --version" +assertEqual "0.4.0" "$VAL" "got correct result of ./mason --version" exit $CODE \ No newline at end of file diff --git a/third_party/mason/utils/new_boost.sh b/third_party/mason/utils/new_boost.sh index e01a86d8d..05d61405f 100755 --- a/third_party/mason/utils/new_boost.sh +++ b/third_party/mason/utils/new_boost.sh @@ -1,8 +1,8 @@ set -eu set -o pipefail -LAST_VERSION="1.61.0" -NEW_VERSION="1.62.0" +LAST_VERSION="1.62.0" +NEW_VERSION="1.63.0" : ' @@ -47,8 +47,8 @@ for lib in $(find scripts/ -maxdepth 1 -type dir -name 'boost_lib*' -print); do done ./mason trigger boost ${NEW_VERSION} +# TODO: this is rate limited so it needs to be run over many hours to avoid travis blocking for lib in $(find scripts/ -maxdepth 1 -type dir -name 'boost_lib*' -print); do - echo "running ./mason build $(basename $lib) ${NEW_VERSION}" - ./mason trigger $(basename $lib) ${NEW_VERSION} + echo ./mason trigger $(basename $lib) ${NEW_VERSION} done diff --git a/third_party/mason/utils/rebuild-llvm-tools.sh b/third_party/mason/utils/rebuild-llvm-tools.sh new file mode 100755 index 000000000..6df2eb7f1 --- /dev/null +++ b/third_party/mason/utils/rebuild-llvm-tools.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +set -eu +set -o pipefail + +packages=(llvm clang++ clang-tidy clang-format lldb llvm-cov include-what-you-use) +versions=(3.9.1 4.0.0 3.8.1) + +if [[ $(uname -s) == 'Linux' ]]; then + CLANG_BOOTSTRAP_VERSION="3.8.1" + ./mason install clang++ ${CLANG_BOOTSTRAP_VERSION} + CLANG_PREFIX=$(./mason prefix clang++ ${CLANG_BOOTSTRAP_VERSION}) + export CXX=${CLANG_PREFIX}/bin/clang++ + export CC=${CLANG_PREFIX}/bin/clang +fi + +function build() { + local VERSION=$1 + for package in "${!packages[@]}"; do + ./mason build ${packages[$package]} ${VERSION} + done +} + +function publish() { + local VERSION=$1 + for package in "${!packages[@]}"; do + ./mason publish ${packages[$package]} ${VERSION} + done +} + +function new_version() { + local NEW_VERSION="$1" + local LAST_VERSION="$2" + for package in "${!packages[@]}"; do + mkdir -p scripts/${package}/${NEW_VERSION} + cp -r scripts/${package}/${LAST_VERSION}/. scripts/${package}/${NEW_VERSION}/ + done +} + + +function build_all() { + for ver in "${!versions[@]}"; do + build ${versions[$ver]} + publish ${versions[$ver]} + done +} + +if [[ ${1:-0} == "all" ]]; then + build_all +fi diff --git a/third_party/mason/utils/toolchain.sh b/third_party/mason/utils/toolchain.sh index 509d6164b..54fd3eee8 100644 --- a/third_party/mason/utils/toolchain.sh +++ b/third_party/mason/utils/toolchain.sh @@ -3,7 +3,7 @@ set -eu set -o pipefail -CLANG_VERSION="3.9.0" +CLANG_VERSION="3.9.1" ./mason install clang++ ${CLANG_VERSION} export PATH=$(./mason prefix clang++ ${CLANG_VERSION})/bin:${PATH} export CXX=clang++-3.9