| #!/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 |
| |
| TEMP="${FILE}.temp" |
| TEMP_HEADER="${FILE}.header.temp" |
| TEMP_JIT="${FILE}.jit.temp" |
| TEMP_AOT="${FILE}.aot.temp" |
| |
| # Remove old temp files if the previous run was stopped prematurely. |
| rm -rf "${TEMP}" "${TEMP_HEADER}" "${TEMP_JIT}" "${TEMP_AOT}" |
| |
| # 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 ". |
| LINE=$(grep "#if " "$FILE" -n | head -n 1 | sed "s/^\([0-9]*\):.*/\1/") |
| 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 |
| run release x64c ReleaseX64C |
| run release simarm64c ReleaseSIMARM64C |
| run release simriscv32 ReleaseSIMRISCV32 |
| run release simriscv64 ReleaseSIMRISCV64 |
| 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 |
| run product x64c ProductX64C |
| run product simarm64c ProductSIMARM64C |
| run product simriscv32 ProductSIMRISCV32 |
| run product simriscv64 ProductSIMRISCV64 |
| 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 :)" |