136 lines
2.5 KiB
Bash
Executable File
136 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
CC=clang
|
|
CXX=clang++
|
|
CFLAGS="-Wall -Wextra -I$(realpath ./include) "
|
|
|
|
ASM=nasm
|
|
ASM_FLAGS="-f elf64 "
|
|
|
|
AR=ar
|
|
AR_FLAGS="rcs"
|
|
|
|
# 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+="-g -O1"
|
|
else
|
|
CFLAGS+="-g"
|
|
fi
|
|
|
|
|
|
# GENERATOR
|
|
GENSRC="./src/generator/gen_argparser.cc \
|
|
./src/generator/generator.cc \
|
|
./src/haversine.cc \
|
|
./src/point_types.cc \
|
|
./src/generator/main.cc"
|
|
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.cc \
|
|
./src/point_types.cc \
|
|
./src/processor/proc_argparser.cc \
|
|
./src/processor/main.cc "
|
|
PROCOUT=prochavr
|
|
|
|
# MEMTESTER
|
|
MEMTESTSRC="./src/memtester/*.c"
|
|
MEMTESTOUT=memtest
|
|
|
|
(set -x ; $CC $CFLAGS $MEMTESTSRC -o $MEMTESTOUT)
|
|
echo
|
|
|
|
# REPTEST ASSEMBLY
|
|
ASM_BUILD_DIR=reptest_build
|
|
ASM_SRC="./src/repetition_testing/reptest_functions.asm"
|
|
ASM_OBJ="./$ASM_BUILD_DIR/funcs.o"
|
|
ASM_LIB="./$ASM_BUILD_DIR/libfuncs.a"
|
|
|
|
mkdir $ASM_BUILD_DIR
|
|
|
|
(set -x ; $ASM $ASM_FLAGS $ASM_SRC -o $ASM_OBJ)
|
|
(set -x ; $AR $AR_FLAGS $ASM_LIB $ASM_OBJ)
|
|
echo
|
|
|
|
if [[ $BASIC_PROFILING == true ]] || [[ $FULL_PROFILING == true ]]; then
|
|
if [[ $FULL_PROFILING == true ]]; then
|
|
JSONFLAGS+="-DFULL_PROFILING"
|
|
PROCFLAGS="-DFULL_PROFILING"
|
|
REPTESTFLAGS="-DFULL_PROFILING"
|
|
PROFFLAGS+="-DFULL_PROFILING"
|
|
elif [[ $BASIC_PROFILING == true ]]; then
|
|
JSONFLAGS+="-DBASIC_PROFILING"
|
|
PROCFLAGS="-DBASIC_PROFILING"
|
|
REPTESTFLAGS="-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 ../
|
|
|
|
# REPETITION TESTING
|
|
REPTESTSRC="./src/repetition_testing/*.cc ./$PROF_BUILD_DIR/*.o $ASM_LIB"
|
|
REPTESTOUT=reptest
|
|
|
|
(set -x ; $CXX $CFLAGS $REPTESTFLAGS $REPTESTSRC -o $REPTESTOUT)
|
|
echo
|
|
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 $ASM_BUILD_DIR
|