kopia lustrzana https://github.com/OpenDroneMap/ODM
Add macos build script
rodzic
333eec7644
commit
21895ca71a
|
@ -0,0 +1,121 @@
|
|||
#!/bin/bash
|
||||
uname=$(uname)
|
||||
if [[ "$uname" != "Darwin" ]]; then
|
||||
echo "This script is meant for MacOS only."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $2 =~ ^[0-9]+$ ]] ; then
|
||||
processes=$2
|
||||
else
|
||||
processes=$(sysctl -n hw.ncpu)
|
||||
fi
|
||||
|
||||
ensure_prereqs() {
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
if ! command -v xcodebuild &> /dev/null; then
|
||||
echo "You need to install Xcode first. Go to the App Store and download Xcode"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v brew &> /dev/null; then
|
||||
echo "You need to install Homebrew first. https://brew.sh/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
installreqs() {
|
||||
ensure_prereqs
|
||||
|
||||
brew install cmake gcc@12 python@3.8 tbb@2020 eigen gdal boost cgal libomp
|
||||
brew link tbb@2020
|
||||
|
||||
python3.8 -m pip install virtualenv
|
||||
|
||||
if [ -e ./venv ]; then
|
||||
python3.8 -m virtualenv venv
|
||||
fi
|
||||
|
||||
source venv/bin/activate
|
||||
pip install --ignore-installed -r requirements.txt
|
||||
}
|
||||
|
||||
install() {
|
||||
installreqs
|
||||
|
||||
echo "Compiling SuperBuild"
|
||||
cd ${RUNPATH}/SuperBuild
|
||||
mkdir -p build && cd build
|
||||
cmake .. && make -j$processes
|
||||
|
||||
cd /tmp
|
||||
pip download GDAL==3.5.1
|
||||
tar -xpzf GDAL-3.5.1.tar.gz
|
||||
cd GDAL-3.5.1
|
||||
if [ -e /opt/homebrew/bin/gdal-config ]; then
|
||||
python setup.py build_ext --gdal-config /opt/homebrew/bin/gdal-config
|
||||
else
|
||||
python setup.py build_ext --gdal-config /usr/local/bin/gdal-config
|
||||
fi
|
||||
python setup.py build
|
||||
python setup.py install
|
||||
rm -fr /tmp/GDAL-3.5.1 /tmp/GDAL-3.5.1.tar.gz
|
||||
|
||||
cd ${RUNPATH}
|
||||
|
||||
echo "Configuration Finished"
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
echo "Removing SuperBuild and build directories"
|
||||
cd ${RUNPATH}/SuperBuild
|
||||
rm -rfv build src download install
|
||||
cd ../
|
||||
rm -rfv build
|
||||
}
|
||||
|
||||
reinstall() {
|
||||
echo "Reinstalling ODM modules"
|
||||
uninstall
|
||||
install
|
||||
}
|
||||
|
||||
clean() {
|
||||
rm -rf \
|
||||
${RUNPATH}/SuperBuild/build \
|
||||
${RUNPATH}/SuperBuild/download \
|
||||
${RUNPATH}/SuperBuild/src
|
||||
|
||||
# find in /code and delete static libraries and intermediate object files
|
||||
find ${RUNPATH} -type f -name "*.a" -delete -or -type f -name "*.o" -delete
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "Usage:"
|
||||
echo "bash configure.sh <install|update|uninstall|installreqs|help> [nproc]"
|
||||
echo "Subcommands:"
|
||||
echo " install"
|
||||
echo " Installs all dependencies and modules for running OpenDroneMap"
|
||||
echo " reinstall"
|
||||
echo " Removes SuperBuild and build modules, then re-installs them. Note this does not update OpenDroneMap to the latest version. "
|
||||
echo " uninstall"
|
||||
echo " Removes SuperBuild and build modules. Does not uninstall dependencies"
|
||||
echo " installreqs"
|
||||
echo " Only installs the requirements (does not build SuperBuild)"
|
||||
echo " clean"
|
||||
echo " Cleans the SuperBuild directory by removing temporary files. "
|
||||
echo " help"
|
||||
echo " Displays this message"
|
||||
echo "[nproc] is an optional argument that can set the number of processes for the make -j tag. By default it uses $(nproc)"
|
||||
}
|
||||
|
||||
if [[ $1 =~ ^(install|installruntimedepsonly|reinstall|uninstall|installreqs|clean)$ ]]; then
|
||||
RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
"$1"
|
||||
else
|
||||
echo "Invalid instructions." >&2
|
||||
usage
|
||||
exit 1
|
||||
fi
|
Ładowanie…
Reference in New Issue