#!/usr/bin/env bash
# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

set -e

FILE="runtime/vm/compiler/runtime_offsets_extracted.h"

# Make sure we're running in the SDK directory.
if ! test -f "$FILE"; then
  echo "Couldn't find $FILE"
  echo "Make sure to run this script from the Dart SDK directory."
  exit 1
fi

# We're regenerating the file, but we want to keep all the comments etc at the
# top of the file. So just delete everything after the first "#if defined".
LINE=$(grep "#if " "$FILE" -n | head -n 1 | sed "s/^\([0-9]*\):.*/\1/")
TEMP="${FILE}.temp"
TEMP_HEADER="${FILE}.header.temp"
TEMP_JIT="${FILE}.jit.temp"
TEMP_AOT="${FILE}.aot.temp"
head -n $(expr $LINE - 1) "$FILE" >"$TEMP_HEADER"

# Run offsets_extractor for every architecture and append the results.
run() {
  tools/build.py --mode=$1 --arch=$2 offsets_extractor offsets_extractor_precompiled_runtime
  echo "" >>"$TEMP_JIT"
  out/$3/offsets_extractor >>"$TEMP_JIT"
  echo "" >>"$TEMP_AOT"
  out/$3/offsets_extractor_precompiled_runtime >>"$TEMP_AOT"
}
echo "" >>"$TEMP_JIT"
echo "" >>"$TEMP_AOT"
echo "#if !defined(PRODUCT)" >>"$TEMP_JIT"
echo "#if !defined(PRODUCT)" >>"$TEMP_AOT"
run release simarm ReleaseSIMARM
run release x64 ReleaseX64
run release ia32 ReleaseIA32
run release simarm64 ReleaseSIMARM64
echo "" >>"$TEMP_JIT"
echo "" >>"$TEMP_AOT"
echo "#else  // !defined(PRODUCT)" >>"$TEMP_JIT"
echo "#else  // !defined(PRODUCT)" >>"$TEMP_AOT"
run product simarm ProductSIMARM
run product x64 ProductX64
run product ia32 ProductIA32
run product simarm64 ProductSIMARM64
echo "" >>"$TEMP_JIT"
echo "" >>"$TEMP_AOT"
echo "#endif  // !defined(PRODUCT)" >>"$TEMP_JIT"
echo "#endif  // !defined(PRODUCT)" >>"$TEMP_AOT"

cat $TEMP_HEADER >>"$TEMP"
cat $TEMP_JIT >>"$TEMP"
cat $TEMP_AOT >>"$TEMP"

echo "" >>"$TEMP"
echo "#endif  // RUNTIME_VM_COMPILER_RUNTIME_OFFSETS_EXTRACTED_H_" >>"$TEMP"
mv "$TEMP" "$FILE"

# Cleanup.
git cl format "$FILE"
rm "$TEMP_HEADER"
rm "$TEMP_JIT"
rm "$TEMP_AOT"
echo -e "\n\nSuccessfully generated $FILE :)"
