123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/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 [[ "$CPP" == "clang++" && "$MACHINE" == "Windows" ]]; then
- msvc_version="2022"
- wk_version="10.0.19041.0"
- EXTRA_ARGS=" -I\"$TESTS_DIR/lib/msvc-$msvc_version-include\""
- for s in cppwinrt shared ucrt um winrt; do
- EXTRA_ARGS="$EXTRA_ARGS -I\"$TESTS_DIR/lib/windows-kit-$wk_version-include/$s\""
- done
- fi
- if [[ "$CPP" == "cl.exe" ]]; then
- echo "Compiling $src_file, running:" "$CPP" "$CPP_STANDARD" "-F268435456" "-EHsc" "-O2" -I"${CPP_INCLUDE_DIR}" -Fe"$exe_file" "$src_file"
- "$CPP" "$CPP_STANDARD" "-F268435456" "-EHsc" "-O2" -I"${CPP_INCLUDE_DIR}" -Fe"$exe_file" "$src_file" &>/dev/null
- else
- "$CPP" -v
- echo "Compiling $src_file, running:" "$CPP" "$CPP_OPTS" "$CPP_STANDARD" -Wpedantic -Werror -I"${CPP_INCLUDE_DIR}""$EXTRA_ARGS" -o"$exe_file" -O2 "$src_file"
- dir=$(dirname "$CPP")
- OLD_PATH="$PATH"
- if [[ "$dir" == *"/bin" ]]; then
- export PATH="$dir":$PATH
- EXTRA_ARGS="${EXTRA_ARGS} -static"
- fi
- eval "$CPP" "$CPP_OPTS" "$CPP_STANDARD" -Wpedantic -Werror -I"${CPP_INCLUDE_DIR}""$EXTRA_ARGS" -o"$exe_file" -O2 "$src_file"
- export PATH="$OLD_PATH"
- 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
|