SIGN IN SIGN UP

openFrameworks is a community-developed cross platform toolkit for creative coding in C++.

0 0 0 C++
2024-01-23 07:36:51 +11:00
#!/usr/bin/env bash
set -e
VER=master
PLATFORM=""
ARCH=""
OVERWRITE=1
SILENT_ARGS=""
BLEEDING_EDGE=0
printHelp(){
cat << EOF
Usage: download_libs.sh [OPTIONS]
Options:
-v, --version VERSION OF version to download the libraries for. Defaults to master
-p, --platform PLATFORM Platorm among: android, emscritpen, ios, linux, linux64, linuxarmv6l, linuxarmv7l, msys2, osx, tvos, vs
If not specified tries to autodetect the platform.
-a, --arch ARCH Architecture:
vs: 64
msys2: 64
android: armv7, arm64, and x86 (if not specified will download all)
linux: 64gcc6, armv6l or armv7l
-n, --no-overwrite Merge new libraries with existing ones, use only to download same version for different platforms
If not set deletes any existing libraries
-s, --silent Silent download progress
-h, --help Shows this message
EOF
}
SCRIPT_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$SCRIPT_DIR" ]]; then SCRIPT_DIR="$PWD"; fi
. "$SCRIPT_DIR/downloader.sh"
download(){
echo "Downloading $1"
# downloader ci.openframeworks.cc/libs/$1 $SILENT_ARGS
if [[ $BLEEDING_EDGE = 1 ]] ; then
echo downloader https://github.com/openframeworks/apothecary/releases/download/bleeding/$1 $SILENT_ARGS
downloader https://github.com/openframeworks/apothecary/releases/download/bleeding/$1 $SILENT_ARGS
else
echo downloader https://github.com/openframeworks/apothecary/releases/download/nightly/$1 $SILENT_ARGS
downloader https://github.com/openframeworks/apothecary/releases/download/nightly/$1 $SILENT_ARGS
fi
}
# trap any script errors and exit
trap 'trapError ${LINENO}' ERR
trap "trapError" SIGINT SIGTERM
trapError() {
local parent_lineno="$1"
if [[ "$#" = "3" ]] ; then
local message="$2"
local code="${3:-1}"
echo "Error on or near line ${parent_lineno}: ${message}; exiting with status ${code}"
else
local code="${2:-1}"
echo "Error on or near line ${parent_lineno}; exiting with status ${code}"
fi
if [ -e openFrameworksLibs* ]; then
echo "removing packages"
rm openFrameworksLibs*
fi
exit "${code}"
}
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-v|--version)
VER="$2"
shift # past argument
;;
-p|--platform)
PLATFORM="$2"
shift # past argument
;;
-a|--arch)
ARCH="$2"
shift # past argument
;;
-n|--no-overwrite)
OVERWRITE=0
;;
-b|--bleeding-edge)
BLEEDING_EDGE=1
;;
-s|--silent)
SILENT_ARGS=-nv
;;
-h|--help)
printHelp
exit 0
;;
*)
echo "Error: invalid argument: $key"
printHelp
exit 1
;;
esac
shift # past argument or value
done
if [ "$PLATFORM" == "" ]; then
OS=$(uname)
if [ "$OS" == "Linux" ]; then
PLATFORM="linux"
elif [ "$OS" == "Darwin" ]; then
PLATFORM="osx"
elif [ "${OS:0:5}" == "MINGW" ]; then
PLATFORM="msys2"
else
# otherwise we are on windows and will download 32bit msys2
PLATFORM="msys2"
fi
fi
if [ "$ARCH" == "" ]; then
if [ "$PLATFORM" == "linux" ]; then
ARCH=$(uname -m)
if [ "$ARCH" == "x86_64" ]; then
GCC_VERSION=$(gcc -dumpversion | cut -f1 -d.)
if [ $GCC_VERSION -eq 4 ]; then
ARCH=64gcc6
elif [ $GCC_VERSION -eq 5 ]; then
ARCH=64gcc6
else
ARCH=64gcc6
fi
elif [ "$ARCH" == "armv7l" ]; then
# Check for Raspberry Pi
if [ -f /opt/vc/include/bcm_host.h ]; then
ARCH=armv6l
fi
elif [ "$ARCH" == "i686" ] || [ "$ARCH" == "i386" ]; then
cat << EOF
32bit linux is not officially supported anymore but compiling
the libraries using the build script in apothecary/scripts
should compile all the dependencies without problem
EOF
exit 1
fi
elif [ "$PLATFORM" == "msys2" ]; then
if [ "$MSYSTEM" == "MINGW64" ]; then
ARCH=mingw64
elif [ "$MSYSTEM" == "MINGW32" ]; then
ARCH=mingw32
elif [ "$MSYSTEM" == "UCRT64" ]; then
ARCH=ucrt64
elif [ "$MSYSTEM" == "CLANG64" ]; then
ARCH=clang64
fi
fi
fi
if [ "$PLATFORM" == "linux" ] && [ "$ARCH" == "64" ]; then
ARCH=64gcc6
fi
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
if [[ $BLEEDING_EDGE = 1 ]] ; then
VER=bleeding
fi
if [ "$PLATFORM" == "msys2" ]; then
PKGS="openFrameworksLibs_${VER}_${PLATFORM}_${ARCH}.zip"
elif [ "$ARCH" == "" ] && [ "$PLATFORM" == "vs" ]; then
PKGS="openFrameworksLibs_${VER}_${PLATFORM}.zip"
elif [ "$PLATFORM" == "vs" ]; then
PKGS="openFrameworksLibs_${VER}_${PLATFORM}.zip"
elif [ "$ARCH" == "" ] && [[ "$PLATFORM" == "osx" || "$PLATFORM" == "ios" || "$PLATFORM" == "tvos" ]]; then
if [[ $BLEEDING_EDGE = 1 ]] ; then
PKGS="openFrameworksLibs_${VER}_${PLATFORM}_1.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}_2.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}_3.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}_4.tar.bz2"
else
PKGS="openFrameworksLibs_${VER}_${PLATFORM}1.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}2.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}3.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}4.tar.bz2"
fi
elif [ "$ARCH" == "" ] && [ "$PLATFORM" == "android" ]; then
if [[ $BLEEDING_EDGE = 1 ]] ; then
PKGS="openFrameworksLibs_${VER}_${PLATFORM}_armv7.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}_arm64.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}_x86_64.tar.bz2
openFrameworksLibs_${VER}_${PLATFORM}_x86.tar.bz2"
else
PKGS="openFrameworksLibs_${VER}_${PLATFORM}armv7.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}arm64.tar.bz2 \
openFrameworksLibs_${VER}_${PLATFORM}x86.tar.bz2"
fi
else # Linux
if [[ $BLEEDING_EDGE = 1 ]] ; then
PKGS="openFrameworksLibs_${VER}_${PLATFORM}${ARCH}.tar.bz2"
else
PKGS="openFrameworksLibs_${VER}_${PLATFORM}${ARCH}.tar.bz2"
fi
fi
# for PKG in $PKGS; do
# download $PKG
# done
echo "$PKGS"
cd ../../
mkdir -p libs
cd libs
if [ $OVERWRITE -eq 1 ]; then
echo "Removing old libraries"
libs=("cairo" "curl" "FreeImage" "freetype" "glew" "glfw" "json" "libpng" "openssl" "pixman" "poco" "rtAudio" "tess2" "uriparser" "utf8" "videoInput" "zlib" "opencv" "ippicv" "assimp" "libxml2" "svgtiny" "README.md")
2024-01-23 07:36:51 +11:00
for lib in $libs; do
if [ -e $lib ]; then
rm -rf $lib
fi
done
fi
for PKG in $PKGS; do
echo "Uncompressing libraries ${PLATFORM}${ARCH} from $PKG"
if [ "$PLATFORM" == "msys2" ] || [ "$PLATFORM" == "vs" ]; then
unzip -qov ../scripts/dev/$PKG
rm ../scripts/dev/$PKG
else
tar xjf ../scripts/dev/$PKG
rm ../scripts/dev/$PKG
fi
done
if [ "$PLATFORM" == "osx" ]; then
addonslibs=("opencv" "ippicv" "libusb" "assimp" "libxml2" "svgtiny" "poco" "openssl")
addons=("ofxOpenCv" "ofxOpenCv" "ofxKinect" "ofxAssimpModelLoader" "ofxSvg" "ofxSvg" "ofxPoco" "ofxPoco")
elif [ "$PLATFORM" == "vs" ]; then
addonslibs=("opencv" "ippicv" "libusb" "assimp" "libxml2" "svgtiny" "poco")
addons=("ofxOpenCv" "ofxOpenCv" "ofxKinect" "ofxAssimpModelLoader" "ofxSvg" "ofxSvg" "ofxPoco")
elif [ "$PLATFORM" == "ios" ] || [ "$PLATFORM" == "tvos" ]; then
addonslibs=("opencv" "ippicv" "assimp" "libxml2" "svgtiny" "poco" "openssl")
addons=("ofxOpenCv" "ofxOpenCv" "ofxAssimpModelLoader" "ofxSvg" "ofxSvg" "ofxPoco" "ofxPoco")
else
addonslibs=("opencv" "ippicv" "assimp" "libxml2" "svgtiny" "poco")
addons=("ofxOpenCv" "ofxOpenCv" "ofxAssimpModelLoader" "ofxSvg" "ofxSvg" "ofxPoco")
fi
for ((i=0;i<${#addonslibs[@]};++i)); do
if [ -e ${addonslibs[i]} ]; then
echo "Copying ${addonslibs[i]} to ${addons[i]}"
if [ $OVERWRITE -eq 1 ] && [ -e ../addons/${addons[i]}/libs/${addonslibs[i]} ]; then
echo "Removing old opencv libraries"
rm -rf ../addons/${addons[i]}/libs/${addonslibs[i]}
fi
mkdir -p ../addons/${addons[i]}/libs/${addonslibs[i]}
if ! command -v rsync &> /dev/null
then
cp -a ${addonslibs[i]}/* ../addons/${addons[i]}/libs/${addonslibs[i]}
else
rsync -a ${addonslibs[i]}/ ../addons/${addons[i]}/libs/${addonslibs[i]}/
fi
rm -rf ${addonslibs[i]}
fi
done