# i686
CONFIGS="${CONFIGS} i686:legacy i686:default"
+# aarch64
+CONFIGS="${CONFIGS} aarch64:default"
+
# armv7hl
CONFIGS="${CONFIGS} armv7hl:default"
-# armv5tel
-CONFIGS="${CONFIGS} armv5tel:versatile armv5tel:kirkwood"
+PLATFORMS="x86 arm"
+declare -A SUBPLATFORMS
+SUBPLATFORMS=(
+ [arm]="arm64 arm32"
+)
+
+function get_platform() {
+ local arch="${1}"
+
+ case "${arch}" in
+ aarch64|arm*)
+ echo "arm"
+ ;;
+ x86_64|i?86)
+ echo "x86"
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+}
+
+function get_subplatform() {
+ local arch="${1}"
+
+ case "${arch}" in
+ aarch64)
+ echo "arm64"
+ ;;
+ arm*)
+ echo "arm32"
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+}
+
+function get_kernel_arch() {
+ local arch="${1}"
+
+ case "${arch}" in
+ aarch64)
+ echo "arm64"
+ ;;
+ arm*)
+ echo "arm"
+ ;;
+ x86_64|i?86)
+ echo "x86"
+ ;;
+ esac
+}
function merge_config() {
local arch=${1}
configs="${configs} config-i686-legacy"
;;
- # ARM
- armv5tel:versatile)
- configs="${configs} config-arm-generic"
- ;;
- armv5tel:kirkwood)
- configs="${configs} config-arm-generic config-armv5tel-kirkwood"
+ # ARM64
+ aarch64:default)
+ configs="${configs} config-arm-generic config-arm64-generic"
;;
+
+ # ARM
armv7hl:default)
- configs="${configs} config-arm-generic config-armv7hl-default"
+ configs="${configs} config-arm-generic config-arm32-generic"
;;
*)
echo >&2 "ERROR: Invalid parameters given: $@"
;;
esac
- # Determine the kernel arch.
- local kernel_arch=
- case "${arch}" in
- arm*)
- kernel_arch="arm"
- ;;
- i?86|x86*)
- kernel_arch="x86"
- ;;
- esac
-
# Merge the configuration files from its elementary configuration
# files.
local tmp_out=$(mktemp)
if [ "${config_mode}" != "none" ]; then
echo "Running 'make oldnoconfig' for ${arch} (${flavour})..."
+ local kernel_arch="$(get_kernel_arch "${arch}")"
(
cd ${KERNEL_DIR}
cat ${tmp_out} > .config
function diff_configs() {
local extra_configs="$@"
- declare -A arch_configs
+ local filename
+ local platform
+ local subplatform
+
+ declare -A platform_configs
+ declare -A subplatform_configs
tmpdir=$(mktemp -d)
merge_config ${arch} ${flavour} ${filename} ${extra_configs}
- # Do not include i686 legacy.
+ # Do not include leaf configuration.
case "${config}" in
i686:legacy)
continue
;;
- armv5tel:versatile)
- ;;
- arm*)
- continue
- ;;
esac
- case "${arch}" in
- x86*|i?86)
- arch_configs[x86]="${arch_configs[x86]} ${filename}"
- ;;
- arm*)
- arch_configs[arm]="${arch_configs[arm]} ${filename}"
- ;;
- *)
- echo >&2 "ERROR: Invalid architecture: ${arch}"
- ;;
- esac
+ platform="$(get_platform "${arch}")"
+ subplatform="$(get_subplatform "${arch}")"
+
+ if [ -n "${subplatform}" ]; then
+ subplatform_configs[${subplatform}]="${subplatform_configs[${subplatform}]} ${filename}"
+ else
+ platform_configs[${platform}]="${platform_configs[${platform}]} ${filename}"
+ fi
done
- common_configs=""
- for arch in x86 arm; do
- filename="${tmpdir}/config-${arch}-common"
- ${SCRIPTS_DIR}/configcommon.py ${arch_configs[${arch}]} \
+ local common_configs
+ for platform in ${PLATFORMS}; do
+ for subplatform in ${SUBPLATFORMS[${platform}]}; do
+ filename="${tmpdir}/config-${subplatform}-common"
+ ${SCRIPTS_DIR}/configcommon.py ${subplatform_configs[${subplatform}]} \
+ > ${filename}
+
+ platform_configs[${platform}]="${platform_configs[${platform}]} ${filename}"
+ done
+
+ filename="${tmpdir}/config-${platform}-common"
+ ${SCRIPTS_DIR}/configcommon.py ${platform_configs[${platform}]} \
> ${filename}
common_configs="${common_configs} ${filename}"
${SCRIPTS_DIR}/configcommon.py ${common_configs} > ${tmpdir}/config-generic
- ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-generic ${tmpdir}/config-arm-common \
- > ${tmpdir}/config-arm-generic
+ for platform in ${PLATFORMS}; do
+ for subplatform in ${SUBPLATFORMS[${platform}]}; do
+ ${SCRIPTS_DIR}/configdiff.py \
+ ${tmpdir}/config-${platform}-common \
+ ${tmpdir}/config-${subplatform}-common \
+ > ${tmpdir}/config-${subplatform}-generic
+ done
- ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-generic ${tmpdir}/config-x86-common \
- > ${tmpdir}/config-x86-generic
+ ${SCRIPTS_DIR}/configdiff.py \
+ ${tmpdir}/config-generic \
+ ${tmpdir}/config-${platform}-common \
+ > ${tmpdir}/config-${platform}-generic
+ done
for config in ${CONFIGS}; do
arch=${config%:*}
flavour=${config#*:}
- case "${config}" in
- arm*:*)
- suparch="arm"
- ;;
- i?86:*|x86*:*)
- suparch="x86"
- ;;
- esac
filename=${tmpdir}/config-${arch}-${flavour}
case "${config}" in
+ aarch64:default|armv7hl:default)
+ # Virtual configuration
+ rm -f ${filename}
+ continue
+ ;;
i686:legacy)
# Legacy depends directly on the default configuration.
- ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-i686-default \
+ ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${arch}-default \
${filename} > ${filename}.tmp
;;
- armv5tel:versatile)
- rm -f ${filename}
- continue
- ;;
*)
- ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${suparch}-common \
+ platform="$(get_subplatform "${arch}" || get_platform "${arch}")"
+ ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${platform}-common \
${filename} > ${filename}.tmp
;;
esac