Files
textmate/configure
Allan Odgaard 67c17d838b Move git clone + submodule update to README.
A few people were reporting build issues because they downloaded the source and thus lacked the submodules.
2012-08-10 11:01:32 +02:00

105 lines
3.4 KiB
Bash
Executable File
Raw 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; }
# =================================================
# = Fallback build directory and signing identity =
# =================================================
: ${builddir:=$HOME/build/TextMate}
: ${identity:=-}
: ${rest_api:=https://api.textmate.org}
# ========================================================
# = Application name, version, revision, and required OS =
# ========================================================
name=TextMate
ver=2.0
rev=1
min_os=10.7
rev=$(( $(curl -sf "${rest_api}/releases/nightly/revision")+1 )) || \
if test -d .git && which -s git; then
rev=$(git log --oneline master | wc -l)
fi
# ===============================================
# = Find clang via xcrun, MacPorts, or Homebrew =
# ===============================================
if which -s xcrun; then
: ${CC:=$(xcrun -find clang)}
: ${CXX:=$(xcrun -find clang++)}
fi
for cc in /{opt,usr}/local/bin/clang /usr/bin/clang; do
if [[ ! -x "$CC" || ! -x "$CXX" ]]; then
CC="${cc}"
CXX="${cc}++"
fi
done
test -x "$CC" || error "*** clang not installed."
"$CC" &>/dev/null -x objective-c -include Foundation/Foundation.h -c -o /tmp/dummy - <<< 'int main () { id str = @("str"); return 0; }' || error "$CC is too old to build this project."
# ===============================
# = 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; 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."
# ==================================
# = Locate Xcode directory and SDK =
# ==================================
xcodedir=/Developer
sdk="/Developer/SDKs/${sdk:-MacOSX10.7}.sdk"
if which -s xcode-select; then
xcodedir=$(xcode-select -print-path)
if ! [[ -e "$sdk" ]]; then
sdk="$xcodedir/Platforms/MacOSX.platform$sdk"
fi
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 =
# ==============================
which -s multimarkdown || which -s maruku || which -s Markdown.pl || error "*** no markdown converter installed."
for dep in ninja ragel pgrep pkill "$CC" "$CXX"; do
which -s "$dep" || error "*** dependency missing: ${dep}."
done
# =====================================
# = Generate fixtures and build files =
# =====================================
DST="$builddir/Frameworks/SoftwareUpdate/fixtures" make -C Frameworks/SoftwareUpdate/fixtures
# # Necessary if you do distribution builds (which should include some default bundles)
# builddir="$builddir" bin/create_default_bundles_tbz
bin/gen_build -o build.ninja -C "$builddir" -dAPP_NAME="$name" -dAPP_VERSION="$ver" -dAPP_REVISION="$rev" -dAPP_MIN_OS="$min_os" -dCC="$CC" -dCXX="$CXX" -dxcodedir="$xcodedir" -didentity="$identity" -drest_api="$rest_api" -dsdk="$sdk" -dbzip2_flag="$bzip2_flag" target