120 lines
2.6 KiB
Bash
120 lines
2.6 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
CUR_DIR=$( cd $( dirname $0 ) && pwd )
|
||
|
|
||
|
project=zlib-searcher
|
||
|
targets=()
|
||
|
features=()
|
||
|
|
||
|
ALL_TARGETS="
|
||
|
i686-unknown-linux-musl
|
||
|
x86_64-pc-windows-gnu
|
||
|
x86_64-unknown-linux-gnu
|
||
|
x86_64-unknown-linux-musl
|
||
|
armv7-unknown-linux-musleabihf
|
||
|
armv7-unknown-linux-gnueabihf
|
||
|
arm-unknown-linux-gnueabi
|
||
|
arm-unknown-linux-gnueabihf
|
||
|
arm-unknown-linux-musleabi
|
||
|
arm-unknown-linux-musleabihf
|
||
|
aarch64-unknown-linux-gnu
|
||
|
aarch64-unknown-linux-musl
|
||
|
"
|
||
|
|
||
|
while getopts "p:t:a:f" opt; do
|
||
|
case $opt in
|
||
|
p)
|
||
|
project=($OPTARG)
|
||
|
;;
|
||
|
t)
|
||
|
targets+=($OPTARG)
|
||
|
;;
|
||
|
a)
|
||
|
targets+=($ALL_TARGETS)
|
||
|
;;
|
||
|
f)
|
||
|
features+=($OPTARG)
|
||
|
;;
|
||
|
?)
|
||
|
echo "Usage: $(basename $0) [-t <target-triple>] [-f features]"
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
features+=${EXTRA_FEATURES}
|
||
|
|
||
|
if [[ "${#targets[@]}" == "0" ]]; then
|
||
|
echo "Specifying compile target with -t <target-triple>"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
function build() {
|
||
|
cd "$CUR_DIR/.."
|
||
|
|
||
|
TARGET=$1
|
||
|
|
||
|
RELEASE_DIR="target/${TARGET}/release"
|
||
|
TARGET_FEATURES="${features[@]}"
|
||
|
|
||
|
if [[ "${TARGET_FEATURES}" != "" ]]; then
|
||
|
echo "* Building ${project} package for ${TARGET} with features \"${TARGET_FEATURES}\" ..."
|
||
|
|
||
|
cross build --target "${TARGET}" \
|
||
|
--default-features=false
|
||
|
--features "${TARGET_FEATURES}" \
|
||
|
-p zlib-searcher \
|
||
|
--release
|
||
|
else
|
||
|
echo "* Building ${project} package for ${TARGET} ..."
|
||
|
|
||
|
cross build --target "${TARGET}" \
|
||
|
-p zlib-searcher \
|
||
|
--release
|
||
|
fi
|
||
|
|
||
|
if [[ $? != "0" ]]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
PKG_DIR="${CUR_DIR}/../release"
|
||
|
mkdir -p "${PKG_DIR}"
|
||
|
|
||
|
if [[ "$TARGET" == *"-windows-"* ]]; then
|
||
|
PKG_NAME="${project}-${TARGET}.zip"
|
||
|
PKG_PATH="${PKG_DIR}/${PKG_NAME}"
|
||
|
|
||
|
echo "* Packaging ZIP in ${PKG_PATH} ..."
|
||
|
cd ${RELEASE_DIR}
|
||
|
zip ${PKG_PATH} ${project}.exe
|
||
|
|
||
|
if [[ $? != "0" ]]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
cd "${PKG_DIR}"
|
||
|
shasum -a 256 "${PKG_NAME}" > "${PKG_NAME}.sha256"
|
||
|
else
|
||
|
PKG_NAME="${project}-${TARGET}.tar.gz"
|
||
|
PKG_PATH="${PKG_DIR}/${PKG_NAME}"
|
||
|
|
||
|
cd ${RELEASE_DIR}
|
||
|
|
||
|
echo "* Packaging gz in ${PKG_PATH} ..."
|
||
|
tar -czf ${PKG_PATH} ${project}
|
||
|
|
||
|
if [[ $? != "0" ]]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
cd "${PKG_DIR}"
|
||
|
shasum -a 256 "${PKG_NAME}" > "${PKG_NAME}.sha256"
|
||
|
fi
|
||
|
|
||
|
echo "* Done build package ${PKG_NAME}"
|
||
|
}
|
||
|
|
||
|
for target in "${targets[@]}"; do
|
||
|
cargo clean;
|
||
|
build "$target";
|
||
|
done
|