]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blobdiff - kernel/scripts/configure
kernel: Remove ARM LPAE image
[people/arne_f/ipfire-3.x.git] / kernel / scripts / configure
index c691ce03436e4deb4818b55fe631e47a174f21ac..68a3c8a4694eb139447e07f55027acf10b988323 100755 (executable)
@@ -13,11 +13,65 @@ CONFIGS="x86_64:default"
 # 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}
@@ -66,15 +120,14 @@ function merge_config() {
                        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: $@"
@@ -82,17 +135,6 @@ function merge_config() {
                        ;;
        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)
@@ -107,6 +149,7 @@ function merge_config() {
 
        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
@@ -174,7 +217,12 @@ function make_oldconfig() {
 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)
 
@@ -186,35 +234,35 @@ function diff_configs() {
 
                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}"
@@ -222,38 +270,40 @@ function diff_configs() {
 
        ${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