-
Notifications
You must be signed in to change notification settings - Fork 1
/
make.sh
executable file
·79 lines (69 loc) · 2.36 KB
/
make.sh
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
#!/bin/bash
#
# Wrapper for compiling code using cmake.
###########################################################################################
# Global parameters
###########################################################################################
readonly script_dir=$(dirname ${0})
readonly project_root=$(cd ${script_dir} && pwd)
readonly mode="$1"
readonly args="${@:2}"
###########################################################################################
# Load modules for compiling on Argo
###########################################################################################
argo_load_modules () {
if command -v module >/dev/null; then
module load cmake/3.10.2 gcc/5.2.0 cuda/10.0 openmpi/4.0.0
fi
}
###########################################################################################
# Compile source code
#
# Globals:
# project_root # Absolute path of project root
# Arguments:
# 1: CMake build directory # default: build"
# Returns:
# None
###########################################################################################
compile () {
local cmake_build_dir="${1:-build}"
if [[ ! -d ${project_root}/${cmake_build_dir} ]]; then
mkdir -p ${project_root}/${cmake_build_dir}
cd ${project_root}/${cmake_build_dir}
CC=gcc CXX=g++ cmake -DCMAKE_BUILD_TYPE=Release ../
cmake ../
make -j4
make install
else
cd ${project_root}/${cmake_build_dir}
make -j4
make install
fi
cd ${project_root}
}
display_help () {
echo "make.sh - Wrapper for compiling cmake-based source code"
echo ""
echo "Usage: make.sh [mode] [position_arguments ..]"
echo ""
echo "Mode:"
echo " argo (default) # Compile on Argo"
echo " local # Compile on local machine without modules"
echo ""
echo "Position Arguments:"
echo " 1: CMake build directory # default: build"
}
###########################################################################################
# Main script
###########################################################################################
if [[ ${mode} == "argo" ]]; then
argo_load_modules
compile ${args}
elif [[ ${mode} == "local" ]]; then
compile ${args}
elif [[ ${mode} == "help" || ${mode} == "--help" || ${mode} == "-h" ]]; then
display_help
else
display_help
fi