]> git.ipfire.org Git - ipfire-3.x.git/blobdiff - kernel/scripts/configure
kernel: configure: Pass arch as an extra argument
[ipfire-3.x.git] / kernel / scripts / configure
index 70479301449aadf3c99e4784884a5d0fae961b12..b2c1fa3718a8bdfc785ad53135d4039996290c3c 100755 (executable)
@@ -10,17 +10,11 @@ SCRIPTS_DIR=${BASEDIR}
 # x86_64
 CONFIGS="x86_64:default"
 
-# i686
-CONFIGS="${CONFIGS} i686:legacy i686:default"
-
 # aarch64
 CONFIGS="${CONFIGS} aarch64:default"
 
 # armv7hl
-CONFIGS="${CONFIGS} armv7hl:lpae armv7hl:default"
-
-# armv5tel
-CONFIGS="${CONFIGS} armv5tel:default"
+CONFIGS="${CONFIGS} armv7hl:default"
 
 PLATFORMS="x86 arm"
 declare -A SUBPLATFORMS
@@ -28,6 +22,16 @@ SUBPLATFORMS=(
        [arm]="arm64 arm32"
 )
 
+search_kernel_dir() {
+       local dir
+       for dir in /builddir/source/linux-*; do
+               if [ -d "${dir}" ]; then
+                       echo "${dir}"
+                       break
+               fi
+       done
+}
+
 function get_platform() {
        local arch="${1}"
 
@@ -70,7 +74,7 @@ function get_kernel_arch() {
                arm*)
                        echo "arm"
                        ;;
-               x86_64|i?86)
+               x86_64)
                        echo "x86"
                        ;;
        esac
@@ -90,7 +94,7 @@ function merge_config() {
                fi
        done
 
-       local config_mode="oldnoconfig"
+       local config_mode="olddefconfig"
        local extra_configs
        while [ $# -gt 0 ]; do
                case "${1}" in
@@ -113,14 +117,7 @@ function merge_config() {
        case "${arch}:${flavour}" in
                # x86
                x86_64:default)
-                       configs="${configs} config-x86-generic config-x86_64-default"
-                       ;;
-               i686:default)
-                       configs="${configs} config-x86-generic config-i686-default"
-                       ;;
-               i686:legacy)
-                       configs="${configs} config-x86-generic config-i686-default"
-                       configs="${configs} config-i686-legacy"
+                       configs="${configs} config-x86-generic"
                        ;;
 
                # ARM64
@@ -129,17 +126,8 @@ function merge_config() {
                        ;;
 
                # ARM
-               armv5tel:default)
-                       configs="${configs} config-arm-generic config-arm32-generic"
-                       configs="${configs} config-armv5tel-default"
-                       ;;
                armv7hl:default)
                        configs="${configs} config-arm-generic config-arm32-generic"
-                       configs="${configs} config-armv7hl-default"
-                       ;;
-               armv7hl:lpae)
-                       configs="${configs} config-arm-generic config-arm32-generic"
-                       configs="${configs} config-armv7hl-default config-armv7hl-lpae"
                        ;;
                *)
                        echo >&2 "ERROR: Invalid parameters given: $@"
@@ -156,11 +144,11 @@ function merge_config() {
        for config in ${configs}; do
                cat ${tmp_out} > ${tmp_in}
                perl ${SCRIPTS_DIR}/merge.pl \
-                       ${config} ${tmp_in} > ${tmp_out}
+                       ${tmp_in} ${config} > ${tmp_out}
        done
 
        if [ "${config_mode}" != "none" ]; then
-               echo "Running 'make oldnoconfig' for ${arch} (${flavour})..."
+               echo "Running 'make olddefconfig' for ${arch} (${flavour})..."
                local kernel_arch="$(get_kernel_arch "${arch}")"
                (
                        cd ${KERNEL_DIR}
@@ -175,9 +163,17 @@ function merge_config() {
 }
 
 # This function runs an interactive "make oldconfig".
-function make_oldconfig() {
-       local arch="x86_64"
-       local kernel_arch="x86"
+function make_config() {
+       local action="${1}"
+       local arch="${2}"
+
+       # Default to x86_64 when no arch is given
+       if [ -z "${arch}" ]; then
+               arch="x86_64"
+       fi
+
+       # Detect kernel arch
+       local kernel_arch="$(get_kernel_arch "${arch}")"
        local flavour="default"
 
        local config_in=$(mktemp)
@@ -187,27 +183,14 @@ function make_oldconfig() {
        merge_config ${arch} ${flavour} ${config_in} --mode=none
 
        (
-               cd ${KERNEL_DIR}
+               pushd ${KERNEL_DIR}
                cat ${config_in} > .config
 
                echo "You may now edit the configuration..."
-
-               local option
-               select option in oldconfig menuconfig oldnoconfig startover quit; do
-                       case "${option}" in
-                               oldconfig|menuconfig|oldnoconfig)
-                                       make ARCH=${kernel_arch} ${option}
-                                       ;;
-                               startover)
-                                       cat ${config_in} > .config
-                                       ;;
-                               quit)
-                                       break
-                                       ;;
-                       esac
-               done
+               make ARCH=${kernel_arch} "${action}"
 
                cat .config > ${config_out}
+               popd
        )
 
        ${SCRIPTS_DIR}/configdiff.py ${config_in} ${config_out} > ${diff_out}
@@ -220,9 +203,6 @@ function make_oldconfig() {
 
 # config-generic
 #  Intersection of all files.
-# config-x86-generic
-#  Diff of (intersection of (i686-{default,legacy} and x86_64-default)
-#  against config-generic).
 # config-x86-x86_64
 #  Diff against merge of (config-generic and config-x86-generic).
 
@@ -246,16 +226,6 @@ function diff_configs() {
 
                merge_config ${arch} ${flavour} ${filename} ${extra_configs}
 
-               # Do not include leaf configuration.
-               case "${config}" in
-                       armv7hl:lpae)
-                               continue
-                               ;;
-                       i686:legacy)
-                               continue
-                               ;;
-               esac
-
                platform="$(get_platform "${arch}")"
                subplatform="$(get_subplatform "${arch}")"
 
@@ -306,16 +276,11 @@ function diff_configs() {
                filename=${tmpdir}/config-${arch}-${flavour}
 
                case "${config}" in
-                       aarch64:default)
+                       aarch64:default|armv7hl:default|x86_64:default)
                                # Virtual configuration
                                rm -f ${filename}
                                continue
                                ;;
-                       armv7hl:lpae|i686:legacy)
-                               # Legacy depends directly on the default configuration.
-                               ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${arch}-default \
-                                       ${filename} > ${filename}.tmp
-                               ;;
                        *)
                                platform="$(get_subplatform "${arch}" || get_platform "${arch}")"
                                ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${platform}-common \
@@ -336,25 +301,21 @@ function diff_configs() {
        rm -rf ${tmpdir}
 }
 
-KERNEL_DIR=
+KERNEL_DIR="$(search_kernel_dir)"
 
 # Parse commandline.
 while [ $# -gt 0 ]; do
        arg=${1}; shift
        case "${arg}" in
-               --kernel-dir=*)
-                       KERNEL_DIR=${arg#--kernel-dir=}
-                       ;;
                help|"")
                        echo "${0} - available commands:"
                        echo "    * merge <arch> <flavour> <output filename>"
-                       echo "    * update ..."
+                       echo "    * menuconfig"
                        echo "    * oldconfig"
-                       echo ""
-                       echo "    You must always set --kernel-dir=..."
+                       echo "    * olddefconfig"
                        exit 0
                        ;;
-               merge|oldconfig|update)
+               listnewconfig|menuconfig|merge|oldconfig|olddefconfig)
                        action=${arg}
                        break
                        ;;
@@ -362,7 +323,7 @@ while [ $# -gt 0 ]; do
 done
 
 if [ -z "${KERNEL_DIR}" ]; then
-       echo >&2 "--kernel-dir=... was not set!"
+       echo >&2 "KERNEL_DIR was not set!"
        exit 2
 fi
 
@@ -376,12 +337,8 @@ case "${action}" in
                merge_config $@
                exit $?
                ;;
-       oldconfig)
-               make_oldconfig
-               exit $?
-               ;;
-       update)
-               diff_configs $@
+       listnewconfig|menuconfig|oldconfig|olddefconfig)
+               make_config "${action}" "$@"
                exit $?
                ;;
 esac