Skip to content

Commit

Permalink
* Added features to the cmake.sh script so it can switch between g++ …
Browse files Browse the repository at this point in the history
…and clang as well as tests. Added help option for help printout (#162)
  • Loading branch information
jredmondson committed Jan 1, 2024
1 parent 3997c81 commit 8e59f80
Showing 1 changed file with 70 additions and 1 deletion.
71 changes: 70 additions & 1 deletion scripts/linux/cmake.sh
Expand Up @@ -4,16 +4,85 @@ SCRIPT_PATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"

MADARA_PATH=$SCRIPT_PATH/../..

C_COMPILER='gcc'
CPP_COMPILER='g++'
BUILD_TYPE='Release'
TESTS='OFF'
SSL='OFF'
CLEAN=0
PREREQS=0
MAC=0

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" = "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 " tests build test executables"
echo " ssl build with SSL support"
echo ""
exit
fi
done


echo SCRIPT_PATH=$SCRIPT_PATH
echo MADARA_PATH=$MADARA_PATH

echo "Creating build and install directories..."
cd $MADARA_PATH

if [ $CLEAN -eq 1 ]; then
echo "Cleaning build directory..."
rm -rf build
fi

mkdir build
mkdir install
cd build

cmake -D'CMAKE_INSTALL_PREFIX=/usr/local' -DCMAKE_PREFIX_PATH=$MADARA_PATH/install ..
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 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=$MADARA_PATH/install ..
cmake -D'CMAKE_INSTALL_PREFIX=/usr/local' -Dmadara_TESTS=$TESTS -Dmadara_SSL=$SSL -DCMAKE_PREFIX_PATH=$MADARA_PATH/install -DCMAKE_CXX_COMPILER=$CPP_COMPILER -DCMAKE_C_COMPILER=$C_COMPILER -DCMAKE_BUILD_TYPE=$BUILD_TYPE ..
cmake --build . --config debug -j$(nproc)
cmake --build . --config release
sudo cmake --build . --target install --config release
sudo cmake --build . --target install --config debug
sudo ldconfig

0 comments on commit 8e59f80

Please sign in to comment.