1*44844408SAndroid Build Coastguard Worker#!/usr/bin/env sh 2*44844408SAndroid Build Coastguard Worker# This script can be used on the command line directly to configure several 3*44844408SAndroid Build Coastguard Worker# different build environments. 4*44844408SAndroid Build Coastguard Worker# This is called by `.travis.yml` via Travis CI. 5*44844408SAndroid Build Coastguard Worker# Travis supplies $TRAVIS_OS_NAME. 6*44844408SAndroid Build Coastguard Worker# http://docs.travis-ci.com/user/multi-os/ 7*44844408SAndroid Build Coastguard Worker# Our .travis.yml also defines: 8*44844408SAndroid Build Coastguard Worker 9*44844408SAndroid Build Coastguard Worker# - BUILD_TYPE=release/debug 10*44844408SAndroid Build Coastguard Worker# - LIB_TYPE=static/shared 11*44844408SAndroid Build Coastguard Worker 12*44844408SAndroid Build Coastguard Workerenv_set=1 13*44844408SAndroid Build Coastguard Workerif ${BUILD_TYPE+false}; then 14*44844408SAndroid Build Coastguard Worker echo "BUILD_TYPE not set in environment." 15*44844408SAndroid Build Coastguard Worker env_set=0 16*44844408SAndroid Build Coastguard Workerfi 17*44844408SAndroid Build Coastguard Workerif ${LIB_TYPE+false}; then 18*44844408SAndroid Build Coastguard Worker echo "LIB_TYPE not set in environment." 19*44844408SAndroid Build Coastguard Worker env_set=0 20*44844408SAndroid Build Coastguard Workerfi 21*44844408SAndroid Build Coastguard Workerif ${CXX+false}; then 22*44844408SAndroid Build Coastguard Worker echo "CXX not set in environment." 23*44844408SAndroid Build Coastguard Worker env_set=0 24*44844408SAndroid Build Coastguard Workerfi 25*44844408SAndroid Build Coastguard Worker 26*44844408SAndroid Build Coastguard Worker 27*44844408SAndroid Build Coastguard Workerif [ ${env_set} -eq 0 ]; then 28*44844408SAndroid Build Coastguard Worker echo "USAGE: CXX=$(which clang++) BUILD_TYPE=[release|debug] LIB_TYPE=[static|shared] $0" 29*44844408SAndroid Build Coastguard Worker echo "" 30*44844408SAndroid Build Coastguard Worker echo "Examples:" 31*44844408SAndroid Build Coastguard Worker echo " CXX=$(which clang++) BUILD_TYPE=release LIB_TYPE=shared DESTDIR=/tmp/meson_json_cpp $0" 32*44844408SAndroid Build Coastguard Worker echo " CXX=$(which clang++) BUILD_TYPE=debug LIB_TYPE=shared DESTDIR=/tmp/meson_json_cpp $0" 33*44844408SAndroid Build Coastguard Worker echo " CXX=$(which clang++) BUILD_TYPE=release LIB_TYPE=static DESTDIR=/tmp/meson_json_cpp $0" 34*44844408SAndroid Build Coastguard Worker echo " CXX=$(which clang++) BUILD_TYPE=debug LIB_TYPE=static DESTDIR=/tmp/meson_json_cpp $0" 35*44844408SAndroid Build Coastguard Worker 36*44844408SAndroid Build Coastguard Worker echo " CXX=$(which g++) BUILD_TYPE=release LIB_TYPE=shared DESTDIR=/tmp/meson_json_cpp $0" 37*44844408SAndroid Build Coastguard Worker echo " CXX=$(which g++) BUILD_TYPE=debug LIB_TYPE=shared DESTDIR=/tmp/meson_json_cpp $0" 38*44844408SAndroid Build Coastguard Worker echo " CXX=$(which g++) BUILD_TYPE=release LIB_TYPE=static DESTDIR=/tmp/meson_json_cpp $0" 39*44844408SAndroid Build Coastguard Worker echo " CXX=$(which g++) BUILD_TYPE=debug LIB_TYPE=static DESTDIR=/tmp/meson_json_cpp $0" 40*44844408SAndroid Build Coastguard Worker 41*44844408SAndroid Build Coastguard Worker exit -1 42*44844408SAndroid Build Coastguard Workerfi 43*44844408SAndroid Build Coastguard Worker 44*44844408SAndroid Build Coastguard Workerif ${DESTDIR+false}; then 45*44844408SAndroid Build Coastguard Worker DESTDIR="/usr/local" 46*44844408SAndroid Build Coastguard Workerfi 47*44844408SAndroid Build Coastguard Worker 48*44844408SAndroid Build Coastguard Worker# -e: fail on error 49*44844408SAndroid Build Coastguard Worker# -v: show commands 50*44844408SAndroid Build Coastguard Worker# -x: show expanded commands 51*44844408SAndroid Build Coastguard Workerset -vex 52*44844408SAndroid Build Coastguard Worker 53*44844408SAndroid Build Coastguard Worker 54*44844408SAndroid Build Coastguard Workerenv | sort 55*44844408SAndroid Build Coastguard Worker 56*44844408SAndroid Build Coastguard Workerwhich python3 57*44844408SAndroid Build Coastguard Workerwhich meson 58*44844408SAndroid Build Coastguard Workerwhich ninja 59*44844408SAndroid Build Coastguard Workerecho ${CXX} 60*44844408SAndroid Build Coastguard Worker${CXX} --version 61*44844408SAndroid Build Coastguard Workerpython3 --version 62*44844408SAndroid Build Coastguard Workermeson --version 63*44844408SAndroid Build Coastguard Workerninja --version 64*44844408SAndroid Build Coastguard Worker_COMPILER_NAME=`basename ${CXX}` 65*44844408SAndroid Build Coastguard Worker_BUILD_DIR_NAME="build-${BUILD_TYPE}_${LIB_TYPE}_${_COMPILER_NAME}" 66*44844408SAndroid Build Coastguard Worker 67*44844408SAndroid Build Coastguard Worker#./.travis_scripts/run-clang-format.sh 68*44844408SAndroid Build Coastguard Workermeson --fatal-meson-warnings --werror --buildtype ${BUILD_TYPE} --default-library ${LIB_TYPE} . "${_BUILD_DIR_NAME}" 69*44844408SAndroid Build Coastguard Workerninja -v -j 2 -C "${_BUILD_DIR_NAME}" 70*44844408SAndroid Build Coastguard Worker 71*44844408SAndroid Build Coastguard Workercd "${_BUILD_DIR_NAME}" 72*44844408SAndroid Build Coastguard Worker meson test --no-rebuild --print-errorlogs 73*44844408SAndroid Build Coastguard Worker 74*44844408SAndroid Build Coastguard Worker if [ "${DESTDIR}" != "/usr/local" ]; then 75*44844408SAndroid Build Coastguard Worker ninja install 76*44844408SAndroid Build Coastguard Worker fi 77*44844408SAndroid Build Coastguard Workercd - 78*44844408SAndroid Build Coastguard Worker 79*44844408SAndroid Build Coastguard Workerif ${CLEANUP+false}; then 80*44844408SAndroid Build Coastguard Worker echo "Skipping cleanup: build directory will persist." 81*44844408SAndroid Build Coastguard Workerelse 82*44844408SAndroid Build Coastguard Worker rm -r "${_BUILD_DIR_NAME}" 83*44844408SAndroid Build Coastguard Workerfi 84