111 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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"
 | 
						|
		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/*.cpp ./$PROF_BUILD_DIR/*.o"
 | 
						|
	REPTESTOUT=reptest
 | 
						|
 | 
						|
	(set -x ; $CC $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
 |