1*7594170eSAndroid Build Coastguard Worker#!/bin/bash 2*7594170eSAndroid Build Coastguard Worker# 3*7594170eSAndroid Build Coastguard Worker# Copyright 2018 The Bazel Authors. All rights reserved. 4*7594170eSAndroid Build Coastguard Worker# 5*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*7594170eSAndroid Build Coastguard Worker# 9*7594170eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*7594170eSAndroid Build Coastguard Worker# 11*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*7594170eSAndroid Build Coastguard Worker# limitations under the License. 16*7594170eSAndroid Build Coastguard Worker 17*7594170eSAndroid Build Coastguard Worker# --- 18*7594170eSAndroid Build Coastguard Worker# Milestone 2 demo script to convert Android.bp modules in //bionic/libc to 19*7594170eSAndroid Build Coastguard Worker# buildable Bazel BUILD targets. Run "./demo help" for more info. 20*7594170eSAndroid Build Coastguard Worker# --- 21*7594170eSAndroid Build Coastguard Worker 22*7594170eSAndroid Build Coastguard Workerset -euo pipefail 23*7594170eSAndroid Build Coastguard Worker 24*7594170eSAndroid Build Coastguard Workerfunction help() { 25*7594170eSAndroid Build Coastguard Worker cat <<EOF 26*7594170eSAndroid Build Coastguard WorkerA demo script for the Android.bp to BUILD file converter. 27*7594170eSAndroid Build Coastguard Worker 28*7594170eSAndroid Build Coastguard WorkerUsage: 29*7594170eSAndroid Build Coastguard Worker 30*7594170eSAndroid Build Coastguard Worker ./demo.sh generate -- runs the bp2build converter to generate BUILD files from Android.bp files. 31*7594170eSAndroid Build Coastguard Worker ./demo.sh query -- runs the bazel query command for all targets in //bionic/libc, recursively. 32*7594170eSAndroid Build Coastguard Worker ./demo.sh build -- runs the bazel build command for all targets in //bionic/libc, recursively. 33*7594170eSAndroid Build Coastguard Worker ./demo.sh full -- runs the generate, query and build steps in sequence. 34*7594170eSAndroid Build Coastguard Worker ./demo.sh help -- prints this message. 35*7594170eSAndroid Build Coastguard Worker 36*7594170eSAndroid Build Coastguard WorkerEOF 37*7594170eSAndroid Build Coastguard Worker} 38*7594170eSAndroid Build Coastguard Worker 39*7594170eSAndroid Build Coastguard Worker# We're in <root>/build/bazel/scripts/milestone-2 40*7594170eSAndroid Build Coastguard WorkerAOSP_ROOT="$(dirname $0)/../../../.." 41*7594170eSAndroid Build Coastguard Worker 42*7594170eSAndroid Build Coastguard WorkerRED="\031[0;32m" 43*7594170eSAndroid Build Coastguard WorkerGREEN="\033[0;32m" 44*7594170eSAndroid Build Coastguard WorkerRESET="\033[0m" 45*7594170eSAndroid Build Coastguard Worker 46*7594170eSAndroid Build Coastguard Workerfunction error() { 47*7594170eSAndroid Build Coastguard Worker local message=$1; shift; 48*7594170eSAndroid Build Coastguard Worker echo -e "${RED}ERROR[Milestone 2 Demo]: $message${RESET}" 49*7594170eSAndroid Build Coastguard Worker} 50*7594170eSAndroid Build Coastguard Worker 51*7594170eSAndroid Build Coastguard Workerfunction log() { 52*7594170eSAndroid Build Coastguard Worker local message=$1; shift; 53*7594170eSAndroid Build Coastguard Worker echo -e "${GREEN}INFO[Milestone 2 Demo]: $message${RESET}" 54*7594170eSAndroid Build Coastguard Worker} 55*7594170eSAndroid Build Coastguard Worker 56*7594170eSAndroid Build Coastguard Worker# Ensure that this script uses the checked-in Bazel binary. 57*7594170eSAndroid Build Coastguard Workerfunction bazel() { 58*7594170eSAndroid Build Coastguard Worker "${AOSP_ROOT}/build/bazel/bin/bazel" "$@" 59*7594170eSAndroid Build Coastguard Worker} 60*7594170eSAndroid Build Coastguard Worker 61*7594170eSAndroid Build Coastguard Worker# Run the bp2build converter to generate BUILD files into out/soong/bp2build. 62*7594170eSAndroid Build Coastguard Workerfunction generate() { 63*7594170eSAndroid Build Coastguard Worker log "Running the bp2build converter.." 64*7594170eSAndroid Build Coastguard Worker "${AOSP_ROOT}/build/soong/soong_ui.bash" --make-mode --skip-soong-tests bp2build 65*7594170eSAndroid Build Coastguard Worker log "Successfully generated BUILD files in out/soong/bp2build." 66*7594170eSAndroid Build Coastguard Worker} 67*7594170eSAndroid Build Coastguard Worker 68*7594170eSAndroid Build Coastguard Worker# Run bazel query for the generated targets in the //bionic/libc package. 69*7594170eSAndroid Build Coastguard Workerfunction query-bionic-package() { 70*7594170eSAndroid Build Coastguard Worker log "Running bazel query //bionic/..." 71*7594170eSAndroid Build Coastguard Worker bazel query //bionic/... 72*7594170eSAndroid Build Coastguard Worker} 73*7594170eSAndroid Build Coastguard Worker 74*7594170eSAndroid Build Coastguard Worker# Use bazel to build the generated targets in the //bionic/libc package. 75*7594170eSAndroid Build Coastguard Workerfunction build-bionic-package() { 76*7594170eSAndroid Build Coastguard Worker log "Running bazel build //bionic/..." 77*7594170eSAndroid Build Coastguard Worker bazel build --platforms //build/bazel/platforms:android_x86 //bionic/... 78*7594170eSAndroid Build Coastguard Worker bazel build --platforms //build/bazel/platforms:android_x86_64 //bionic/... 79*7594170eSAndroid Build Coastguard Worker bazel build --platforms //build/bazel/platforms:android_arm //bionic/... 80*7594170eSAndroid Build Coastguard Worker bazel build --platforms //build/bazel/platforms:android_arm64 //bionic/... 81*7594170eSAndroid Build Coastguard Worker} 82*7594170eSAndroid Build Coastguard Worker 83*7594170eSAndroid Build Coastguard Workerfunction run() { 84*7594170eSAndroid Build Coastguard Worker action=${1:-full} 85*7594170eSAndroid Build Coastguard Worker 86*7594170eSAndroid Build Coastguard Worker case $action in 87*7594170eSAndroid Build Coastguard Worker "help") 88*7594170eSAndroid Build Coastguard Worker help 89*7594170eSAndroid Build Coastguard Worker ;; 90*7594170eSAndroid Build Coastguard Worker "generate") 91*7594170eSAndroid Build Coastguard Worker generate 92*7594170eSAndroid Build Coastguard Worker ;; 93*7594170eSAndroid Build Coastguard Worker "query") 94*7594170eSAndroid Build Coastguard Worker query-bionic-package 95*7594170eSAndroid Build Coastguard Worker ;; 96*7594170eSAndroid Build Coastguard Worker "build") 97*7594170eSAndroid Build Coastguard Worker build-bionic-package 98*7594170eSAndroid Build Coastguard Worker ;; 99*7594170eSAndroid Build Coastguard Worker "full") 100*7594170eSAndroid Build Coastguard Worker generate 101*7594170eSAndroid Build Coastguard Worker query-bionic-package 102*7594170eSAndroid Build Coastguard Worker build-bionic-package 103*7594170eSAndroid Build Coastguard Worker ;; 104*7594170eSAndroid Build Coastguard Worker *) 105*7594170eSAndroid Build Coastguard Worker error "Unknown action: $action" 106*7594170eSAndroid Build Coastguard Worker help 107*7594170eSAndroid Build Coastguard Worker exit 1 108*7594170eSAndroid Build Coastguard Worker esac 109*7594170eSAndroid Build Coastguard Worker 110*7594170eSAndroid Build Coastguard Worker log "($action) done." 111*7594170eSAndroid Build Coastguard Worker} 112*7594170eSAndroid Build Coastguard Worker 113*7594170eSAndroid Build Coastguard Workerrun $@ 114