mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
54fef09ac3
This makes the standard build instructions a bit easier, just ./configure, and also requires less tools installed (bison). Also i think few people probably want to generate the lexer and paser code.
107 lines
3.2 KiB
Bash
Executable File
107 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Mac C. compile-ios.sh for JQ.
|
|
|
|
# Defaults
|
|
set -e
|
|
oniguruma='6.9.3'
|
|
|
|
unset CFLAGS
|
|
unset CXXFLAGS
|
|
unset LDFLAGS
|
|
|
|
# Parse args.
|
|
usage(){
|
|
cat << EOF
|
|
${0##*/}: usage
|
|
|
|
Description:
|
|
This simple script builds oniguruma and jq for all *-apple-darwin devices.
|
|
|
|
Arguments:
|
|
--extra-cflags <arg>: Pass defines or includes to clang.
|
|
--extra-ldflags <arg>: Pass libs or includes to ld64.
|
|
|
|
--with-oniguruma <arg>: Change default version of onigurma from ${oniguruma}.
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
while (( $# )); do
|
|
case "$1" in
|
|
--with-oniguruma) shift; oniguruma="${1}" ;;
|
|
|
|
--extra-cflags) shift; export CFLAGS_="${1}" ;;
|
|
--extra-ldflags) shift; export LDFLAGS_="${1}" ;;
|
|
|
|
--help) usage ;;
|
|
*) echo -e "Unknown option: ${1}\n"; usage ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Start building.
|
|
echo "Building..."
|
|
MAKEJOBS="$(sysctl -n hw.ncpu || echo 1)"
|
|
CC_="$(xcrun -f clang || echo clang)"
|
|
|
|
onig_url="https://github.com/kkos/oniguruma/releases/download/v${oniguruma}/onig-${oniguruma}.tar.gz"
|
|
builddir="${TMPDIR:-/tmp}/${RANDOM:-'xxxxx'}-compile-ios-build"
|
|
cwd="$(realpath ${PWD} 2>/dev/null || echo ${PWD})"
|
|
|
|
t_exit() {
|
|
cat << EOF
|
|
|
|
A error as occurred.
|
|
oniguruma location: ${builddir}/onig/onig-${oniguruma}
|
|
jq location: ${cwd}
|
|
|
|
Provide config.log and console logs when posting a issue.
|
|
|
|
EOF
|
|
}
|
|
trap t_exit ERR
|
|
|
|
# Onig.
|
|
mkdir -p "${builddir}/onig"
|
|
cd "${builddir}/"
|
|
curl -L ${onig_url} | tar xz
|
|
for arch in i386 x86_64 armv7 armv7s arm64; do
|
|
if [[ "$arch" = "i386" || "$arch" = "x86_64" ]]; then
|
|
SYSROOT=$(xcrun -f --sdk iphonesimulator --show-sdk-path)
|
|
else
|
|
SYSROOT=$(xcrun -f --sdk iphoneos --show-sdk-path)
|
|
fi
|
|
HOST="${arch}-apple-darwin"
|
|
[[ "${arch}" = "arm64" ]] && HOST="aarch64-apple-darwin"
|
|
|
|
CFLAGS="-arch ${arch} -miphoneos-version-min=9.0 -isysroot ${SYSROOT} ${CFLAGS_} -D_REENTRANT"
|
|
LDFLAGS="-arch ${arch} -miphoneos-version-min=9.0 -isysroot ${SYSROOT} ${LDFLAGS_}"
|
|
CC="${CC_} ${CFLAGS}"
|
|
|
|
# ./configure; make install
|
|
cd "${builddir}/onig-${oniguruma}"
|
|
CC=${CC} LDFLAGS=${LDFLAGS} \
|
|
./configure --host=${HOST} --build=$(./config.guess) --enable-shared=no --enable-static=yes --prefix=/
|
|
make -j${MAKEJOBS} install DESTDIR="${cwd}/ios/onig/${arch}"
|
|
make clean
|
|
|
|
# Jump back to JQ.
|
|
cd ${cwd}
|
|
[[ ! -f ./configure ]] && autoreconf -ivf
|
|
CC=${CC} LDFLAGS=${LDFLAGS} \
|
|
./configure --host=${HOST} --build=$(./config/config.guess) --enable-docs=no --enable-shared=no --enable-static=yes --prefix=/ --with-oniguruma=${cwd}/ios/onig/${arch} $(test -z ${BISON+x} || echo '--enable-maintainer-mode')
|
|
make -j${MAKEJOBS} install DESTDIR="${cwd}/ios/jq/${arch}"
|
|
make clean
|
|
done
|
|
|
|
mkdir -p "${cwd}/ios/dest/lib"
|
|
# lipo, make a static lib.
|
|
lipo -create -output ${cwd}/ios/dest/lib/libonig.a ${cwd}/ios/onig/{i386,x86_64,armv7,armv7s,arm64}/lib/libonig.a
|
|
lipo -create -output ${cwd}/ios/dest/lib/libjq.a ${cwd}/ios/jq/{i386,x86_64,armv7,armv7s,arm64}/lib/libjq.a
|
|
|
|
# Take the arm64 headers- the most common target.
|
|
cp -r ${cwd}/ios/jq/arm64/include ${cwd}/ios/dest/
|
|
rm -rf ${cwd}/build/ios/{i386,x86_64,armv7,armv7s,arm64}
|
|
|
|
echo "Output to ${cwd}/ios/dest"
|