Files
textmate/configure
2019-06-26 23:32:54 +02:00

96 lines
3.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# set -u
function error () { printf >&2 "%s\n\nPlease see README.md for build instructions.\n" "$1"; exit 1; }
# =================================================
# = Fallback build directory and signing identity =
# =================================================
: ${builddir:=$HOME/build/TextMate}
: ${identity:=-}
: ${capnp_prefix:=/usr/local}
: ${rest_api:=https://api.textmate.org}
# =======================
# = Application version =
# =======================
ver=$(curl -sf "${rest_api}/releases/nightly/version")${tag:-+git.$(git rev-parse --short HEAD)}
# ===============================
# = Check if boost is installed =
# ===============================
if which -s brew && [[ -z "$boostdir" && ! -d /usr/local/include/boost ]]; then
boostdir=$(brew --prefix boost)/include/boost
fi
for dir in "${boostdir:-/usr/include/boost}" /{opt,usr}/local/include/boost ${CPATH//:/ }; do
if [[ ! -L "${builddir}/include/boost" && -d "${dir}" ]]; then
mkdir -p "${builddir}/include" && ln -fs "${dir}" "${builddir}/include/boost"
fi
done
test -L "${builddir}/include/boost" || error "*** boost not installed."
# ===========================================
# = Check if google sparsehash is installed =
# ===========================================
if which -s brew && [[ -z "$sparsedir" && ! -d /usr/local/include/sparsehash ]]; then
sparsedir=$(brew --prefix google-sparsehash)/include/sparsehash
fi
for dir in "${sparsedir:-/usr/include/sparsehash}" /{opt,usr}/local/include/sparsehash/ ; do
if [[ ! -L "${builddir}/include/sparsehash" && -d "${dir}" ]]; then
mkdir -p "${builddir}/include" && ln -fs "${dir}" "${builddir}/include/sparsehash"
fi
done
test -L "${builddir}/include/sparsehash" || error "*** google sparsehash not installed."
# ===========================================
# = Check if non-system openssl is intalled =
# ===========================================
if which -s brew && [[ -z "$libressl_prefix" && ! -d "${libressl_prefix}/include/openssl" ]]; then
libressl_prefix=$(brew --prefix libressl)
test -d "${libressl_prefix}/include/" || error "*** openssl headers not found."
fi
if which -s port && [[ -z "$libressl_prefix" && ! -d "${libressl_prefix}/include/openssl" ]]; then
libressl_prefix=/opt/local/
test -d "${libressl_prefix}/include/openssl" || error "*** openssl headers not found."
fi
# ===============================================
# = Check if we can use pbzip2 instead of bzip2 =
# ===============================================
bzip2_flag="-j"
if which -s pbzip2; then
bzip2_flag="--use-compress-prog=pbzip2"
fi
# ==============================
# = Check various dependencies =
# ==============================
test -x "${capnp_prefix}/bin/capnp" || error "*** capnproto not installed in ${capnp_prefix}. Set \`capnp_prefix\` if installed elsewhere."
for dep in ninja ragel multimarkdown pgrep pkill; do
which -s "$dep" || error "*** dependency missing: ${dep}."
done
# =====================================
# = Generate fixtures and build files =
# =====================================
mkdir -p "$builddir/Frameworks/SoftwareUpdate/fixtures"
DST=$(cd >/dev/null "$builddir/Frameworks/SoftwareUpdate/fixtures"; pwd) make -C Frameworks/SoftwareUpdate/fixtures
bin/gen_build -o build.ninja -C "$builddir" -dAPP_VERSION="$ver" -didentity="$identity" -drest_api="$rest_api" -dbzip2_flag="$bzip2_flag" -dcapnp_prefix="$capnp_prefix" -dlibressl_prefix="$libressl_prefix" target
BUNDLES_TBZ=Applications/TextMate/resources/DefaultBundles.tbz
test -e "$BUNDLES_TBZ" || builddir="$builddir" bin/create_default_bundles_tbz "$BUNDLES_TBZ"