-
Notifications
You must be signed in to change notification settings - Fork 19
/
cmake.sh
executable file
·112 lines (97 loc) · 3.21 KB
/
cmake.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
SCRIPT_PATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
PROJECT_PATH=$SCRIPT_PATH/..
C_COMPILER='gcc'
CPP_COMPILER='g++'
BUILD_TYPE='Release'
TESTS='OFF'
SSL='OFF'
CLEAN=0
PREREQS=0
MAC=0
PROCESSES=1
echo "Parsing args..."
for var in "$@"
do
if [ "$var" = "clang" ] || [ "$var" = "CLANG" ]; then
echo " Using clang for compilation..."
C_COMPILER='clang'
CPP_COMPILER='clang++'
elif [ "$var" = "clean" ] || [ "$var" = "CLEAN" ]; then
echo " Cleaning build..."
CLEAN=1
elif [ "$var" = "gcc" ] || [ "$var" = "g++" ]; then
echo " Using g++ for compilation..."
C_COMPILER='gcc'
CPP_COMPILER='g++'
elif [ "$var" = "mac" ] || [ "$var" = "MAC" ]; then
echo " Configuring for MacOS..."
MAC=1
elif [ "$var" = "prereqs" ] || [ "$var" = "PREREQS" ]; then
echo " Installing prereqs..."
PREREQS=1
elif [ "$var" = "tests" ] || [ "$var" = "TESTS" ]; then
echo " Enabling tests..."
TESTS='ON'
elif [ "$var" = "ssl" ] || [ "$var" = "SSL" ]; then
echo " Enabling SSL support..."
SSL='ON'
else
# echo "Invalid argument: $var"
echo ""
echo "Args can be zero or more of the following, space delimited"
echo ""
echo " prereqs install prereqs"
echo " clang build using clang++ and clang"
echo " clean run 'make clean' before builds (default)"
echo " docs generate API documentation"
echo " mac build for MacOS (needs to be native/host OS)"
echo " gcc use gcc/g++"
echo " tests build test executables"
echo " ssl build with SSL support"
echo ""
exit
fi
done
if [ $MAC -eq 1 ]; then
PROCESSES=$(sysctl -n hw.ncpu)
else
PROCESSES=$(nproc)
fi
echo SCRIPT_PATH=$SCRIPT_PATH
echo PROJECT_PATH=$PROJECT_PATH
echo "Creating build and install directories..."
cd $PROJECT_PATH
if [ $CLEAN -eq 1 ]; then
echo "Cleaning build directory..."
rm -rf build
fi
if [ $MAC -eq 1 ]; then
echo "Mac detected: setting compiler to clang..."
C_COMPILER='clang'
CPP_COMPILER='clang++'
fi
mkdir build
mkdir install
cd build
if [ $PREREQS -eq 1 ]; then
echo "Installing prerequisites..."
if [ $MAC -eq 1 ]; then
echo " Installing MacOS prerequisites..."
brew install boost autoconf automake libtool git openssl
brew link --force openssl
else
echo " Installing Linux prerequisites..."
sudo apt-get install -y build-essential libboost-all-dev git libssl-dev clang
fi
fi
echo "Building with $PROCESSES threads..."
echo cmake -DCMAKE_CXX_COMPILER=${CPP_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -Dmadara_TESTS=${TESTS} -Dmadara_SSL=${SSL} -D'CMAKE_INSTALL_PREFIX=/usr/local' -DCMAKE_PREFIX_PATH=$PROJECT_PATH/install ..
cmake -D'CMAKE_INSTALL_PREFIX=/usr/local' -Dmadara_TESTS=$TESTS -Dmadara_SSL=$SSL -DCMAKE_PREFIX_PATH=$PROJECT_PATH/install -DCMAKE_CXX_COMPILER=$CPP_COMPILER -DCMAKE_C_COMPILER=$C_COMPILER -DCMAKE_BUILD_TYPE=$BUILD_TYPE ..
cmake --build . --config debug -j $PROCESSES
cmake --build . --config release -j $PROCESSES
sudo cmake --build . --target install --config release
sudo cmake --build . --target install --config debug
if [ $MAC -eq 0 ]; then
sudo ldconfig
fi