#!/bin/bash set -eo pipefail SUCCESS_TXT="${GREEN}[SUCCESS]${NC}" src_file=$1 exe_file=$(basename "${src_file%.*}") if [[ -z "$MACHINE" ]]; then echo "Must provide MACHINE for compile" exit 1 fi if [[ "$MACHINE" == "Windows" ]]; then exe_file=$(basename "${src_file%.*}".exe) fi if [[ -z "$src_file" ]]; then echo "Must provide \$1 for compile" exit 1 fi if [[ -z "$CPP_INCLUDE_DIR" ]]; then echo "Must provide CPP_INCLUDE_DIR in environment" exit 1 fi if [[ -z "$CPP" ]]; then echo "Must provide CPP in environment" exit 1 fi rm -f "$exe_file" EXTRA_ARGS="" if [[ -z "${TESTLIB_COMPILER_OPTIMIZATION_OPT}" ]]; then if [[ "$2" == "--check-only" ]]; then if [[ "$CPP" == "cl.exe" ]]; then OPTIMIZATION="d" else OPTIMIZATION="0" fi else OPTIMIZATION="2" fi else OPTIMIZATION="${TESTLIB_COMPILER_OPTIMIZATION_OPT}" fi if [[ "$CPP" == "cl.exe" ]]; then echo "Compiling $src_file, running:" "$CPP" "$CPP_STANDARD" "-F268435456" "-EHsc" "-O${OPTIMIZATION}" -I"${CPP_INCLUDE_DIR}" -Fe"$exe_file" "$src_file" "$CPP" "$CPP_STANDARD" "-F268435456" "-EHsc" "-O${OPTIMIZATION}" -I"${CPP_INCLUDE_DIR}" -Fe"$exe_file" "$src_file" else "$CPP" --version dir=$(dirname "$CPP") if [[ "$dir" == *"/bin" ]] || [[ "$MACHINE" == "Windows" ]]; then EXTRA_ARGS="${EXTRA_ARGS} -static" fi echo "Compiling $src_file, running:" "$CPP" "$CPP_OPTS" "$CPP_STANDARD" -Wpedantic -Werror -I"${CPP_INCLUDE_DIR}""$EXTRA_ARGS" -o"$exe_file" "-O${OPTIMIZATION}" "$src_file" eval "$CPP" "$CPP_OPTS" "$CPP_STANDARD" -Wpedantic -Werror -I"${CPP_INCLUDE_DIR}""$EXTRA_ARGS" -o"$exe_file" "-O${OPTIMIZATION}" "$src_file" fi rm -f ./*.o ./*.obj if [ ! -f "$exe_file" ]; then echo "Compilation failed: file $exe_file not found" exit 1 fi echo -e "${SUCCESS_TXT} $src_file compiled\n" if [[ "$2" == "--check-only" ]]; then rm -rf "$exe_file" fi