forked from RobotecAI/RobotecGPULidar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.bash
executable file
·81 lines (71 loc) · 2.64 KB
/
setup.bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/env bash
set -e
set -o pipefail
CUDA_MIN_VER_MAJOR="11"
CUDA_MIN_VER_MINOR="2"
VCPKG_INSTALL_DIR="external/vcpkg"
VCPKG_TAG="2022.08.15"
INSIDE_DOCKER=false
if [ -f /.dockerenv ]; then
VCPKG_INSTALL_DIR="/rgldep/vcpkg"
INSIDE_DOCKER=true
echo "Setup inside docker"
fi
CMAKE_ARGS=()
MAKE_ARGS=()
COLLECT_CMAKE_ARGS=false
COLLECT_MAKE_ARGS=false
DO_MAKE=false
DO_CMAKE=false
for arg in "$@"
do
if [ "$arg" = "--cmake" ]; then
COLLECT_CMAKE_ARGS=true && COLLECT_MAKE_ARGS=false && DO_CMAKE=true && continue;
fi
if [ "$arg" = "--make" ]; then
COLLECT_MAKE_ARGS=true && COLLECT_CMAKE_ARGS=false && DO_MAKE=true && continue;
fi
if [ "$COLLECT_CMAKE_ARGS" = true ]; then CMAKE_ARGS+=("$arg") && continue; fi
if [ "$COLLECT_MAKE_ARGS" = true ]; then MAKE_ARGS+=("$arg") && continue; fi
done
cd "$(dirname "$0")"
# Check CUDA
CUDA_VERSION=$(nvcc --version 2>/dev/null | grep -E -o "V[0-9]+.[0-9]+.[0-9]+" | cut -c2-)
if [ -z "$CUDA_VERSION" ]; then echo "CUDA not found!" && exit 1; fi
CUDA_MAJOR=$(echo "$CUDA_VERSION" | cut -d. -f1)
CUDA_MINOR=$(echo "$CUDA_VERSION" | cut -d. -f2)
if [ "$CUDA_MAJOR" -lt $CUDA_MIN_VER_MAJOR ] ||
{ [ "$CUDA_MAJOR" -eq $CUDA_MIN_VER_MAJOR ] && [ "$CUDA_MINOR" -lt $CUDA_MIN_VER_MINOR ]; }; then
echo "CUDA missing or CUDA version not supported! Get CUDA $CUDA_MIN_VER_MAJOR.$CUDA_MIN_VER_MINOR+";
exit 1;
fi
# Check OptiX_INSTALL_DIR if building RGL
if [ -z "$OptiX_INSTALL_DIR" ] && { [ "$DO_CMAKE" = true ] || [ "$DO_MAKE" = true ]; }; then
echo "OptiX not found! Make sure you have exported environment variable OptiX_INSTALL_DIR";
exit 1;
fi
# Install PCL using vcpkg
if [ ! -d "$VCPKG_INSTALL_DIR" ]; then
if [ "$INSIDE_DOCKER" = false ]; then # Inside docker already provided
echo "Installing dependencies for vcpkg..."
sudo apt update
sudo apt install git curl zip unzip tar freeglut3-dev libglew-dev libglfw3-dev
fi
git clone -b $VCPKG_TAG --single-branch --depth 1 https://github.com/microsoft/vcpkg $VCPKG_INSTALL_DIR
fi
if [ ! -f $VCPKG_INSTALL_DIR"/vcpkg" ]; then $VCPKG_INSTALL_DIR"/bootstrap-vcpkg.sh"; fi
$VCPKG_INSTALL_DIR"/vcpkg" "install" "--clean-after-build" "pcl[core,visualization]"
# Build
if [ ! -d "build" ]; then mkdir build; fi
cd build
if [ "$DO_CMAKE" = true ]; then
cmake .. -DCMAKE_TOOLCHAIN_FILE=$VCPKG_INSTALL_DIR"/scripts/buildsystems/vcpkg.cmake" "${CMAKE_ARGS[@]}";
else
echo "--- IMPORTANT ---
Remember to pass vcpkg's CMAKE_TOOLCHAIN_FILE to cmake. See:
cmake .. -DCMAKE_TOOLCHAIN_FILE=$VCPKG_INSTALL_DIR/scripts/buildsystems/vcpkg.cmake
"
fi
if [ "$DO_MAKE" = true ]; then
make "${MAKE_ARGS[@]}";
fi