#!/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 ;; --basic-profiling) BASIC_PROFILING=true shift ;; --full-profiling) FULL_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 [[ $BASIC_PROFILING == true ]] || [[ $FULL_PROFILING == true ]]; then if [[ $FULL_PROFILING == true ]]; then JSONFLAGS+="-DFULL_PROFILING" PROCFLAGS="-DFULL_PROFILING" PROFFLAGS+="-DFULL_PROFILING" elif [[ $BASIC_PROFILING == true ]]; then JSONFLAGS+="-DBASIC_PROFILING" PROCFLAGS="-DBASIC_PROFILING" PROFFLAGS+="-DBASIC_PROFILING" fi PROCSRC+=./$PROF_BUILD_DIR/*.o 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