Files
Server_Monitor/build.sh
2023-09-26 19:40:16 +02:00

94 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
start_time=$(date +%s%N) # Performance timer
ProgramName="server_monitor"
# User defines
UserDefines="-DDEBUG"
# Compiler
CXX="g++"
CompilerFlags="-std=c++11"
CompilerFlags+=" -g"
#CompilerFlags+=" -fsanitize=address"
CompilerFlags+=" -fno-rtti -fno-exceptions"
CompilerFlags+=" -Wall -Wno-unused-variable -Wno-unused-but-set-variable -Wno-sign-compare -Wno-unused-value -Wno-unused-function -Werror=return-type -Wno-narrowing"
# Definitions and configuration
CompilerFlags+=" -DPLATFORM_LINUX=1"
#CompilerFlags+=" -DGUI_PERFORMANCE_REPORT"
CompilerFlags+=" -DSWAP_INTERVAL=1"
# Source files
SourceFiles="code/*.cpp"
SourceFiles+=" code/**/*.cpp"
# X11
CompilerFlags+=" -lX11 -lXi"
# OpenGL
CompilerFlags+=" -lGL -ldl"
CompilerFlags+=" -DGL_GLEXT_PROTOTYPES"
CompilerFlags+=" -DGLX_GLXEXT_PROTOTYPES"
# Pulseaudio
CompilerFlags+=" -lpulse"
# NetworkManager
CompilerFlags+=" "$(pkg-config --libs --cflags libnm)
# External libs
CompilerFlags+=" -Iexternal"
ExternalFiles="external/*.cpp"
ExternalObjects=""
for f in $ExternalFiles;
do
ObjName="cache_build/${f#"external/"}"
ObjName=${ObjName%.cpp}.o
ExternalObjects+=" ${ObjName}"
done
SourceFiles+="${ExternalObjects}"
# Cache external libs building. They are big and take a lot of time to compile
build_external=false
for obj in $ExternalObjects;
do
if [ ! -e $obj ]
then
build_external=true
fi
done
if [ $build_external == true ]
then
echo "Building external libraries cache..."
mkdir -p cache_build
for f in $ExternalFiles;
do
ObjName="cache_build/${f#"external/"}"
ObjName=${ObjName%.cpp}.o
echo $ObjName
$CXX $CompilerFlags $UserDefines -O2 $f -c -o $ObjName
done
fi
echo "Compiling..."
$CXX $CompilerFlags $UserDefines $SourceFiles -o $ProgramName
compiled=$?
if [ $compiled != 0 ]
then
exit $compiled
fi
echo "Done!"
end_time=$(date +%s%N) # Performance timer
duration_nanoseconds=$((end_time - start_time)) # Performance timer
duration_string="$((duration_nanoseconds/1000000/1000)).$((duration_nanoseconds/1000000%1000))"
echo #newline
echo "Duration: "$duration_string"s"