application-services/libs/build-all.sh

143 строки
4.4 KiB
Bash
Исходник Обычный вид История

#!/usr/bin/env bash
set -euvx
SQLCIPHER_VERSION="4.3.0"
SQLCIPHER_SHA256="fccb37e440ada898902b294d02cde7af9e8706b185d77ed9f6f4d5b18b4c305f"
2020-01-14 22:46:06 +03:00
NSS="nss-3.52"
NSS_ARCHIVE="nss-3.52-with-nspr-4.25.tar.gz"
NSS_URL="https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_52_RTM/src/${NSS_ARCHIVE}"
NSS_SHA256="6c0dccbe4e357539fcbe81407bf26f3c89559ebf3054e75d8d4cec5a618498b1"
2019-03-27 00:35:50 +03:00
# End of configuration.
if [[ ! -f "$(pwd)/build-all.sh" ]]
then
echo "build-all.sh must be executed from within the libs/ directory."
exit 1
fi
if [[ "${#}" -ne 1 ]]
then
echo "Usage:"
2018-05-28 21:44:34 +03:00
echo "./build-all.sh [ios|android|desktop]"
exit 1
fi
PLATFORM="${1}"
abspath () { case "${1}" in /*)printf "%s\\n" "${1}";; *)printf "%s\\n" "${PWD}/${1}";; esac; }
export -f abspath
if ! [[ -x "$(command -v gyp)" ]]; then
echo 'Error: gyp needs to be installed and executable. See https://github.com/mogemimi/pomdog/wiki/How-to-Install-GYP for install instructions.' >&2
exit 1
fi
if ! [[ -x "$(command -v ninja)" ]]; then
echo 'Error: ninja needs to be installed and executable. See https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages for install instructions.' >&2
exit 1
fi
# SQLCipher needs TCL.
if ! [[ -x "$(command -v tclsh)" ]]; then
echo 'Error: tclsh needs to be installed and executable. See https://www.tcl.tk/software/tcltk/.' >&2
exit 1
fi
SQLCIPHER="v${SQLCIPHER_VERSION}"
rm -rf "${SQLCIPHER}"
if [[ ! -e "${SQLCIPHER}.tar.gz" ]]; then
echo "Downloading ${SQLCIPHER}.tar.gz"
curl -sfSL --retry 5 --retry-delay 10 -O "https://github.com/sqlcipher/sqlcipher/archive/${SQLCIPHER}.tar.gz"
else
echo "Using ${SQLCIPHER}.tar.gz"
fi
echo "${SQLCIPHER_SHA256} ${SQLCIPHER}.tar.gz" | shasum -a 256 -c - || exit 2
tar xfz "${SQLCIPHER}.tar.gz"
SQLCIPHER_SRC_PATH=$(abspath "sqlcipher-${SQLCIPHER_VERSION}")
2019-03-27 00:35:50 +03:00
rm -rf "${NSS}"
2019-08-30 20:48:57 +03:00
if [[ ! -e "${NSS_ARCHIVE}" ]]; then
echo "Downloading ${NSS_ARCHIVE}"
2019-09-26 18:38:47 +03:00
curl -sfSL --retry 5 --retry-delay 10 -O "${NSS_URL}"
2019-08-30 20:48:57 +03:00
else
echo "Using ${NSS_ARCHIVE}"
fi
echo "${NSS_SHA256} ${NSS_ARCHIVE}" | shasum -a 256 -c - || exit 2
tar xfz "${NSS_ARCHIVE}"
NSS_SRC_PATH=$(abspath "${NSS}")
2019-07-09 21:00:48 +03:00
# Some NSS symbols clash with OpenSSL symbols, rename them using
# C preprocessor define macros.
echo $'\
diff -r 65efa74ef84a coreconf/config.gypi
--- a/coreconf/config.gypi Thu May 16 09:43:04 2019 +0000
+++ b/coreconf/config.gypi Thu May 23 19:46:44 2019 -0400
2020-01-14 22:46:06 +03:00
@@ -138,6 +138,23 @@
2019-07-09 21:00:48 +03:00
\'<(nspr_include_dir)\',
\'<(nss_dist_dir)/private/<(module)\',
],
+ \'defines\': [
+ \'HMAC_Update=NSS_HMAC_Update\',
+ \'HMAC_Init=NSS_HMAC_Init\',
2020-01-14 22:46:06 +03:00
+ \'CMAC_Update=NSS_CMAC_Update\',
+ \'CMAC_Init=NSS_CMAC_Init\',
2019-07-09 21:00:48 +03:00
+ \'MD5_Update=NSS_MD5_Update\',
+ \'SHA1_Update=NSS_SHA1_Update\',
+ \'SHA256_Update=NSS_SHA256_Update\',
+ \'SHA224_Update=NSS_SHA224_Update\',
+ \'SHA512_Update=NSS_SHA512_Update\',
+ \'SHA384_Update=NSS_SHA384_Update\',
+ \'SEED_set_key=NSS_SEED_set_key\',
+ \'SEED_encrypt=NSS_SEED_encrypt\',
+ \'SEED_decrypt=NSS_SEED_decrypt\',
+ \'SEED_ecb_encrypt=NSS_SEED_ecb_encrypt\',
+ \'SEED_cbc_encrypt=NSS_SEED_cbc_encrypt\',
+ ],
\'conditions\': [
[ \'mozpkix_only==1 and OS=="linux"\', {
\'include_dirs\': [
' | patch "${NSS_SRC_PATH}/nss/coreconf/config.gypi"
2019-10-01 21:23:27 +03:00
# Early return hack to prevent NSPR Android setup
# which does not work with ndk unified headers and clang.
echo $'\
@@ -2662,6 +2662,9 @@
case "$target" in
*-android*|*-linuxandroid*)
+ $as_echo "#define ANDROID 1" >>confdefs.h
+ ;;
+ unreachable)
if test -z "$android_ndk" ; then
as_fn_error $? "You must specify --with-android-ndk=/path/to/ndk when targeting Android." "$LINENO" 5
fi
' | patch "${NSS_SRC_PATH}/nspr/configure"
if [[ "${PLATFORM}" == "ios" ]]
then
2019-08-14 20:57:50 +03:00
./build-all-ios.sh "${SQLCIPHER_SRC_PATH}" "${NSS_SRC_PATH}"
elif [[ "${PLATFORM}" == "android" ]]
then
2019-08-14 20:57:50 +03:00
./build-all-android.sh "${SQLCIPHER_SRC_PATH}" "${NSS_SRC_PATH}"
elif [[ "${PLATFORM}" == "desktop" ]]
2018-05-28 21:44:34 +03:00
then
./build-nss-desktop.sh "${NSS_SRC_PATH}"
./build-sqlcipher-desktop.sh "${SQLCIPHER_SRC_PATH}"
elif [[ "${PLATFORM}" == "darwin" ]] || [[ "${PLATFORM}" == "win32-x86-64" ]]
then
./build-nss-desktop.sh "${NSS_SRC_PATH}" "${PLATFORM}"
./build-sqlcipher-desktop.sh "${SQLCIPHER_SRC_PATH}" "${PLATFORM}"
else
echo "Unrecognized platform"
exit 1
fi
echo "Cleaning up"
rm -rf "${SQLCIPHER_SRC_PATH}"
rm -rf "${NSS_SRC_PATH}"
echo "Done"