Updates vendored mason to v0.4 for LLVM 3.9.1

This commit is contained in:
Daniel J. Hofmann 2017-01-09 14:26:44 +05:30
commit 93d89ad686
105 changed files with 1873 additions and 1000 deletions

View File

@ -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

View File

@ -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}

View File

@ -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}

View File

@ -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}"

View File

@ -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 "<archiver>${AR} " >> user-config.jam
fi
if [[ "${RANLIB:-false}" != false ]]; then
echo "<ranlib>${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
}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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

View File

@ -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 <user-config.jam> <version> <base> <variant>
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
: <toolset>${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}
: <toolset>${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}
: <toolset>${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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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)

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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`.

View File

@ -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 "$@"

View File

@ -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}
- ./mason publish ${MASON_NAME} ${MASON_VERSION}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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 {

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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}

View File

@ -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

View File

@ -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

View File

@ -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/
```

View File

@ -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
}

View File

@ -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 {
:
}

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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 "$@"

View File

@ -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

View File

@ -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

View File

@ -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}

View File

@ -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
}

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

View File

@ -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}

View File

@ -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 "$@"

Some files were not shown because too many files have changed in this diff Show More