1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors 3*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file. 5*bb4ee6a4SAndroid Build Coastguard Worker 6*bb4ee6a4SAndroid Build Coastguard Worker# Run this script to re-generate the seccomp/*/constants.json files for 7*bb4ee6a4SAndroid Build Coastguard Worker# each architecture. 8*bb4ee6a4SAndroid Build Coastguard Worker 9*bb4ee6a4SAndroid Build Coastguard Workerset -ex 10*bb4ee6a4SAndroid Build Coastguard Workercd "$(dirname "${BASH_SOURCE[0]}")/.." 11*bb4ee6a4SAndroid Build Coastguard Worker 12*bb4ee6a4SAndroid Build Coastguard WorkerMINIJAIL_DIR=$(realpath "third_party/minijail") 13*bb4ee6a4SAndroid Build Coastguard WorkerSECCOMP_DIR=$(realpath seccomp) 14*bb4ee6a4SAndroid Build Coastguard Worker 15*bb4ee6a4SAndroid Build Coastguard Workerexport SRC="$MINIJAIL_DIR" 16*bb4ee6a4SAndroid Build Coastguard Worker 17*bb4ee6a4SAndroid Build Coastguard Worker# Create temporary directory for build artifacts and make sure it's cleaned up. 18*bb4ee6a4SAndroid Build Coastguard WorkerTMP_DIR="$(mktemp -d)" 19*bb4ee6a4SAndroid Build Coastguard Workercleanup() { 20*bb4ee6a4SAndroid Build Coastguard Worker rm -rf "$TMP_DIR" 21*bb4ee6a4SAndroid Build Coastguard Worker} 22*bb4ee6a4SAndroid Build Coastguard Workertrap cleanup EXIT 23*bb4ee6a4SAndroid Build Coastguard Worker 24*bb4ee6a4SAndroid Build Coastguard Worker# Create bindings for each platform 25*bb4ee6a4SAndroid Build Coastguard Workerfor arch in "x86_64" "arm" "aarch64" "riscv64"; do 26*bb4ee6a4SAndroid Build Coastguard Worker BUILD_DIR="$TMP_DIR/$arch" 27*bb4ee6a4SAndroid Build Coastguard Worker mkdir -p "$BUILD_DIR" 28*bb4ee6a4SAndroid Build Coastguard Worker cd "$BUILD_DIR" 29*bb4ee6a4SAndroid Build Coastguard Worker 30*bb4ee6a4SAndroid Build Coastguard Worker # Pick the right cross-compiler 31*bb4ee6a4SAndroid Build Coastguard Worker if [ "$arch" = "x86_64" ]; then 32*bb4ee6a4SAndroid Build Coastguard Worker export CC="gcc" 33*bb4ee6a4SAndroid Build Coastguard Worker TARGET="x86_64-unknown-linux-gnu" 34*bb4ee6a4SAndroid Build Coastguard Worker elif [ "$arch" = "arm" ]; then 35*bb4ee6a4SAndroid Build Coastguard Worker export CC="arm-linux-gnueabihf-gcc" 36*bb4ee6a4SAndroid Build Coastguard Worker TARGET="armv7-unknown-linux-gnueabihf" 37*bb4ee6a4SAndroid Build Coastguard Worker elif [ "$arch" = "aarch64" ]; then 38*bb4ee6a4SAndroid Build Coastguard Worker export CC="aarch64-linux-gnu-gcc" 39*bb4ee6a4SAndroid Build Coastguard Worker TARGET="aarch64-unknown-linux-gnu" 40*bb4ee6a4SAndroid Build Coastguard Worker elif [ "$arch" = "riscv64" ]; then 41*bb4ee6a4SAndroid Build Coastguard Worker export CC="riscv64-unknown-linux-gnu-gcc" 42*bb4ee6a4SAndroid Build Coastguard Worker TARGET="riscv64-unknown-linux-gnu" 43*bb4ee6a4SAndroid Build Coastguard Worker fi 44*bb4ee6a4SAndroid Build Coastguard Worker 45*bb4ee6a4SAndroid Build Coastguard Worker "$MINIJAIL_DIR/gen_constants.sh" "libconstants.gen.c" 46*bb4ee6a4SAndroid Build Coastguard Worker "$MINIJAIL_DIR/gen_syscalls.sh" "libsyscalls.gen.c" 47*bb4ee6a4SAndroid Build Coastguard Worker 48*bb4ee6a4SAndroid Build Coastguard Worker clang \ 49*bb4ee6a4SAndroid Build Coastguard Worker -target "$TARGET" \ 50*bb4ee6a4SAndroid Build Coastguard Worker -S \ 51*bb4ee6a4SAndroid Build Coastguard Worker -emit-llvm \ 52*bb4ee6a4SAndroid Build Coastguard Worker -I "$MINIJAIL_DIR" \ 53*bb4ee6a4SAndroid Build Coastguard Worker "libconstants.gen.c" \ 54*bb4ee6a4SAndroid Build Coastguard Worker "libsyscalls.gen.c" 55*bb4ee6a4SAndroid Build Coastguard Worker 56*bb4ee6a4SAndroid Build Coastguard Worker "$MINIJAIL_DIR/tools/generate_constants_json.py" \ 57*bb4ee6a4SAndroid Build Coastguard Worker --output "$SECCOMP_DIR/$arch/constants.json" \ 58*bb4ee6a4SAndroid Build Coastguard Worker "libconstants.gen.ll" \ 59*bb4ee6a4SAndroid Build Coastguard Worker "libsyscalls.gen.ll" 60*bb4ee6a4SAndroid Build Coastguard Workerdone 61