performance-aware-programming/haversine_02/compile

91 lines
1.4 KiB
Bash

#!/bin/bash
CC=clang
CXX=clang++
CFLAGS="-Wall -Wextra -I$(realpath ./include) "
# PARSE ARGUMENTS
# From this StackOverflow answer https://stackoverflow.com/a/14203146
while [[ $# > 0 ]];do
case $1 in
--release)
RELEASE=true
shift
;;
--enable-profiling)
ENABLE_PROFILING=true
shift
;;
*|-*|--*)
echo "Unknown option $1"
exit 1
;;
esac
done
# BUILD TYPE
if [[ $RELEASE == true ]]; then
CFLAGS+="-O3"
else
CFLAGS+="-g"
fi
# GENERATOR
GENSRC="./src/generator/gen_argparser.cpp \
./src/generator/generator.cpp \
./src/haversine.cpp \
./src/point_types.cpp \
./src/generator/main.cpp"
GENOUT=genhavr
(set -x ; $CXX $CFLAGS $GENSRC -o $GENOUT)
echo
# PROFILER
PROFSRC="../src/profiler/timer.c"
PROFFLAGS="-c"
PROF_BUILD_DIR=prof_build
# PROCESSOR
JSONSRC="../src/json/*.c"
JSONFLAGS="-c"
JSON_BUILD_DIR=json_build
PROCSRC="./$JSON_BUILD_DIR/*.o \
./src/haversine.cpp \
./src/point_types.cpp \
./src/processor/proc_argparser.cpp \
./src/processor/main.cpp "
PROCOUT=prochavr
if [[ $ENABLE_PROFILING == true ]]; then
PROCSRC+="./$PROF_BUILD_DIR/*.o"
PROCFLAGS="-DENABLE_PROFILING"
mkdir $PROF_BUILD_DIR
cd $PROF_BUILD_DIR
(set -x ; $CC $CFLAGS $PROFFLAGS $PROFSRC)
echo
cd ../
fi
mkdir $JSON_BUILD_DIR
cd $JSON_BUILD_DIR
(set -x ; $CC $CFLAGS $JSONFLAGS $JSONSRC)
echo
cd ../
(set -x ; $CXX $CFLAGS $PROCFLAGS $PROCSRC -o $PROCOUT)
echo
# CLEAR BUILD FILES
rm -rvf $JSON_BUILD_DIR $PROF_BUILD_DIR