blob: 4f9345e8677ff2e3a1d9df095e465425bd63d46a [file] [log] [blame]
Kelvin Zhangc18bac62022-03-14 10:31:57 +08001#!/bin/bash
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8###############################################################
9# Function: generate build combination.
10###############################################################
11
12# $1: "arch soc board product"
13check_project()
14{
15 LINE_NR=`sed -n '$=' $BUILD_COMBINATION`
16 i=0
17 while IFS= read -r LINE; do
18 [[ "$1" == "$LINE" ]] && break
19 i=$((i+1))
20 done < $BUILD_COMBINATION
21 [ $i -ge $LINE_NR ] && $i && return 1
22
23 return 0
24}
25
26# $1: arch
27# $2: soc
28# $3: board
29# $4: product
30check_build_combination()
31{
32 i=0
33 for arch in ${ARCHS[*]}; do
34 [[ "$1" == "$arch" ]] && break
35 i=$((i+1))
36 done
37 [ $i -ge ${#ARCHS[*]} ] && return 1
38
39 i=0
40 for soc in ${SOCS[*]};do
41 [[ "$2" == "$soc" ]] && break
42 i=$((i+1))
43 done
44 [ "$i" -ge ${#SOCS[*]} ] && return 2
45
46 i=0
47 for board in ${BOARDS[*]};do
48 [[ "$3" == "$board" ]] && break
49 i=$((i+1))
50 done
51 [ "$i" -ge ${#BOARDS[*]} ] && return 3
52
53 i=0
54 for product in ${PRODUCTS[*]};do
55 [[ "$4" == "$product" ]] && break
56 i=$((i+1))
57 done
58 [ "$i" -ge ${#PRODUCTS[*]} ] && return 4
59
60 return 0
61}
62
63unset ARCHS SOCS BOARDS PRODUCTS
64
65ARCHS=($(find $PWD/arch -mindepth 1 -maxdepth 1 -type d ! -name ".*" | xargs basename -a | sort -n))
66SOCS=($(find $PWD/soc -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
67BOARDS=($(find $PWD/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
68PRODUCTS=($(find $PWD/products -mindepth 1 -maxdepth 1 -type d ! -name ".*" | xargs basename -a | sort -n))
69
70BUILD_COMBINATION_INPUT="$PWD/build_system/build_combination.in"
71export BUILD_COMBINATION="$PWD/output/build_combination.txt"
72
73if [ ! -d "$PWD/output" ]; then
74 mkdir -p $PWD/output
75fi
kelvin.zhang5f4d02e2022-03-15 17:06:40 +080076if [ ! -s "$BUILD_COMBINATION" ] || [ $BUILD_COMBINATION -ot $BUILD_COMBINATION_INPUT ]; then
77 :> $BUILD_COMBINATION
Kelvin Zhangc18bac62022-03-14 10:31:57 +080078 while IFS= read -r LINE; do
79 arch=`echo "$LINE"|awk '{print $1}'`
80 soc=`echo "$LINE"|awk '{print $2}'`
81 board=`echo "$LINE"|awk '{print $3}'`
82 product=`echo "$LINE"|awk '{print $4}'`
83 check_build_combination $arch $soc $board $product
84 [ "$?" -eq 0 ] && echo $LINE >> $BUILD_COMBINATION
85 done < $BUILD_COMBINATION_INPUT
86fi