kernel.config: updated to support iptables
[wilink8-wlan/build-utilites.git] / build_wl18xx.sh
index ff3a2f567accb244d30ae186e4c92360fcb6a42f..8718ff8e4812674545acf1adaba991b1b85923d9 100755 (executable)
@@ -18,13 +18,13 @@ function print_highlight()
 
 function usage ()
 {
-       echo ""
+    echo ""
     echo "This script compiles one/all of the following utilities: kernel, libnl, openssl, hostapd, wpa_supplicant,wl18xx_modules,firmware,crda,calibrator"
-       echo "by calling specific utility name and action."
+    echo "by calling specific utility name and action."
     echo ""
-       echo " Usage: ./wl18xx_build.sh init         <head|TAG>  [ Update w/o build        ] "
-       echo "                          update       <head|TAG>  [ Update & build          ] "
-       echo "                          rebuild                  [ Build w/o update        ] "
+    echo " Usage: ./wl18xx_build.sh init         <head|TAG>  [ Update w/o build        ] "
+    echo "                          update       <head|TAG>  [ Update & build          ] "
+    echo "                          rebuild                  [ Build w/o update        ] "
     echo "                          clean                    [ Clean, Update & build   ] "
     echo "                              "
     echo " Building a specific module usage "
@@ -40,7 +40,7 @@ function usage ()
     echo "                     libnl "
     echo "                     crda "
 
-       exit 1
+    exit 1
 }
 
 function assert_no_error()
@@ -49,7 +49,7 @@ function assert_no_error()
                echo "****** ERROR $? $@*******"
                exit 1
        fi
-    echo "****** $1 *******"
+        echo "****** $1 *******"
 }
 
 function repo_id()
@@ -109,6 +109,30 @@ function cd_back()
        cd - > /dev/null
 }
 
+function read_kernel_version()
+{
+        filename=`repo_path kernel`/Makefile
+
+        if [ ! -f $filename ]
+        then
+            KERNEL_VERSION=0
+            KERNEL_PATCHLEVEL=0
+            KERNEL_SUBLEVEL=0
+            echo "No Makefile was found. Kernel version was set to default." 
+        else 
+            exec 6< $filename
+            read version <&6
+            read patchlevel <&6
+            read sublevel <&6
+            exec 6<&-
+
+            KERNEL_VERSION=$(echo $version|sed 's/[^0-9]//g')
+            KERNEL_PATCHLEVEL=$(echo $patchlevel|sed 's/[^0-9]//g')
+            KERNEL_SUBLEVEL=$(echo $sublevel|sed 's/[^0-9]//g')
+            echo "Makefile was found. Kernel version was set to $KERNEL_VERSION.$KERNEL_PATCHLEVEL.$KERNEL_SUBLEVEL." 
+        fi
+}
+
 #----------------------------------------------------------j
 function setup_environment()
 {
@@ -125,7 +149,6 @@ function setup_environment()
         set_path filesystem $ROOTFS
         [ ! -d $ROOTFS ] && echo "Error ROOTFS: $ROOTFS dir does not exist" && exit 1
     fi   
-    echo "!!!!!!!!!!!!!   `path filesystem`  "
     #if no toolchain path is set - download it.
     if [[ "$TOOLCHAIN_PATH" == "DEFAULT" ]]
     then            
@@ -151,7 +174,8 @@ function setup_environment()
        export LIBNL_PATH=`repo_path libnl`     
        export KLIB=${KERNEL_PATH}
        export KLIB_BUILD=${KERNEL_PATH}
-    export PATH=$TOOLCHAIN_PATH:$PATH
+        export GIT_TREE=`repo_path driver`
+        export PATH=$TOOLCHAIN_PATH:$PATH
     
 }
 
@@ -199,9 +223,9 @@ function setup_branches()
                url=${repositories[$i + 1]}
         branch=${repositories[$i + 2]}   
         checkout_type="branch"       
-        #for all the openlink repo. we use a tag if provided.        
+        #for all the openlink repo. we use a tag if provided.               
         [ "$name" == "kernel" ] && [ -z "$DEFAULT_KERNEL" ] && i=$[$i + 3] && continue
-        cd_repo $name    
+        cd_repo $name  
         echo -e "\n${NORMAL}Checking out branch ${GREEN}$branch  ${NORMAL}in repo ${GREEN}$name ${NORMAL} "
                git checkout $branch        
         git fetch origin
@@ -228,15 +252,26 @@ function setup_toolchain()
 
 function build_uimage()
 {
-       cd_repo kernel
-       [ -z $NO_CONFIG ] && cp `path configuration`/kernel.config `repo_path kernel`/.config
+    cd_repo kernel
+       [ -z $NO_CONFIG ] && cp `path configuration`/kernel_$KERNEL_VERSION.$KERNEL_PATCHLEVEL.config `repo_path kernel`/.config
        [ -z $NO_CLEAN ] && make clean
        [ -z $NO_CLEAN ] && assert_no_error
-       make -j${PROCESSORS_NUMBER} uImage
-       assert_no_error
-       #LOADADDR=0x80008000 make -j${PROCESSORS_NUMBER} uImage-dtb.am335x-evm
+       
+    make -j${PROCESSORS_NUMBER} uImage
+       
+    #TODO: Add support for kernel compilation with dtb file integrated to uImage:
+    #LOADADDR=0x80008000 make -j${PROCESSORS_NUMBER} uImage.am335x-evm
+               
+    if [ "$KERNEL_VERSION" -eq 3 ] && [ "$KERNEL_PATCHLEVEL" -eq 2 ]
+    then
+        cp `repo_path kernel`/arch/arm/boot/uImage `path tftp`/uImage
+    else               
+        make -j${PROCESSORS_NUMBER} am335x-evm.dtb
+        cp `repo_path kernel`/arch/arm/boot/zImage `path tftp`/zImage
+        cp `repo_path kernel`/arch/arm/boot/dts/am335x-evm.dtb `path tftp`/am335x-evm.dtb
+    fi
+        
        assert_no_error
-       cp `repo_path kernel`/arch/arm/boot/uImage `path tftp`/uImage
        cd_back
 }
 
@@ -392,9 +427,16 @@ function build_scripts_download()
        cd_back
 }
 
+function clean_kernel()
+{
+       echo "Cleaning kernel folder"
+       cd_repo kernel
+       git clean -fdx > /dev/null      
+}
+
 function clean_outputs()
 {
-       echo "Cleaning outputs"    
+       echo "Cleaning outputs"   
     rm -rf `path filesystem`/*
     rm -f `path outputs`/${tar_filesystem[0]}
        rm -f `path outputs`/uImage
@@ -409,7 +451,14 @@ function build_outputs()
         cd_path filesystem
         tar cpjf `path outputs`/${tar_filesystem[0]} .
         cd_back
-        cp `path tftp`/uImage `path outputs`/uImage
+               
+        if [ "$KERNEL_VERSION" -eq 3 ] && [ "$KERNEL_PATCHLEVEL" -eq 2 ]
+        then
+            cp `path tftp`/uImage `path outputs`/uImage
+        else                  
+            cp `path tftp`/zImage `path outputs`/zImage
+            cp `path tftp`/am335x-evm.dtb `path outputs`/am335x-evm.dtb
+        fi             
     fi
 }
 
@@ -433,47 +482,50 @@ function install_outputs()
        cd_back
 }
 
-files_to_verify=(
-# skeleton path
-# source path
-# pattern in output of file
+function set_files_to_verify()
+{
+        files_to_verify=(
+        # skeleton path
+        # source path
+        # pattern in output of file
 
-`path filesystem`/usr/local/sbin/wpa_supplicant
-`repo_path hostap`/wpa_supplicant/wpa_supplicant
-"ELF 32-bit LSB executable, ARM"
+        `path filesystem`/usr/local/sbin/wpa_supplicant
+        `repo_path hostap`/wpa_supplicant/wpa_supplicant
+        "ELF 32-bit LSB executable, ARM"
 
-`path filesystem`/usr/local/bin/hostapd
-`repo_path hostap`/hostapd/hostapd
-"ELF 32-bit LSB executable, ARM"
+        `path filesystem`/usr/local/bin/hostapd
+        `repo_path hostap`/hostapd/hostapd
+        "ELF 32-bit LSB executable, ARM"
 
-`path filesystem`/sbin/crda
-`repo_path crda`/crda
-"ELF 32-bit LSB executable, ARM"
+        `path filesystem`/sbin/crda
+        `repo_path crda`/crda
+        "ELF 32-bit LSB executable, ARM"
 
-`path filesystem`/usr/lib/crda/regulatory.bin
-`repo_path wireless_regdb`/regulatory.bin
-"CRDA wireless regulatory database file"
+        `path filesystem`/usr/lib/crda/regulatory.bin
+        `repo_path wireless_regdb`/regulatory.bin
+        "CRDA wireless regulatory database file"
 
-`path filesystem`/lib/firmware/ti-connectivity/wl18xx-fw-4.bin
-`repo_path fw_download`/wl18xx-fw-4.bin
-"data"
+        `path filesystem`/lib/firmware/ti-connectivity/wl18xx-fw-4.bin
+        `repo_path fw_download`/wl18xx-fw-4.bin
+        "data"
 
-`path filesystem`/lib/modules/3.2.*/extra/drivers/net/wireless/ti/wl18xx/wl18xx.ko
-`path compat_wireless`/drivers/net/wireless/ti/wl18xx/wl18xx.ko
-"ELF 32-bit LSB relocatable, ARM"
+        `path filesystem`/lib/modules/$KERNEL_VERSION.$KERNEL_PATCHLEVEL.*/extra/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+        `path compat_wireless`/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+        "ELF 32-bit LSB relocatable, ARM"
 
-`path filesystem`/lib/modules/3.2.*/extra/drivers/net/wireless/ti/wlcore/wlcore.ko
-`path compat_wireless`/drivers/net/wireless/ti/wlcore/wlcore.ko
-"ELF 32-bit LSB relocatable, ARM"
+        `path filesystem`/lib/modules/$KERNEL_VERSION.$KERNEL_PATCHLEVEL.*/extra/drivers/net/wireless/ti/wlcore/wlcore.ko
+        `path compat_wireless`/drivers/net/wireless/ti/wlcore/wlcore.ko
+        "ELF 32-bit LSB relocatable, ARM"
 
-#`path filesystem`/usr/bin/calibrator
-#`repo_path ti_utils`/calibrator
-#"ELF 32-bit LSB executable, ARM"
+        #`path filesystem`/usr/bin/calibrator
+        #`repo_path ti_utils`/calibrator
+        #"ELF 32-bit LSB executable, ARM"
 
-`path filesystem`/usr/sbin/wlconf/wlconf
-`repo_path ti_utils`/wlconf/wlconf
-"ELF 32-bit LSB executable, ARM"
-)
+        `path filesystem`/usr/sbin/wlconf/wlconf
+        `repo_path ti_utils`/wlconf/wlconf
+        "ELF 32-bit LSB executable, ARM"
+        )
+}
 
 function get_tag()
 {
@@ -529,6 +581,8 @@ function verify_skeleton()
 {
        echo "Verifying filesystem skeleton..."
 
+        set_files_to_verify
+
        i="0"
        while [ $i -lt ${#files_to_verify[@]} ]; do
                skeleton_path=${files_to_verify[i]}
@@ -564,13 +618,13 @@ function setup_workspace()
        setup_branches
     #Download toolchain only if it was not set
     [ DEFAULT_TOOLCHAIN ] && setup_toolchain   
-
-    
 }
 
 
 function build_all()
 {
+    read_kernel_version
+
     if [ -z $NO_EXTERNAL ] 
     then        
         [ $DEFAULT_KERNEL ] && build_uimage
@@ -607,8 +661,6 @@ function main()
     setup_environment
     setup_directories
     
-     
-    
        case "$1" in
                'update')                
         print_highlight " setting up workspace and building all "       
@@ -619,7 +671,9 @@ function main()
         else
             print_highlight "Updating all to head (this will revert local changes)" 
             RESET=1    
-        fi        
+        fi
+               clean_kernel
+        clean_outputs        
         setup_workspace
         build_all
                ;;
@@ -629,12 +683,12 @@ function main()
                [[  -n "$2" ]] && echo "Using tag $2 " && USE_TAG=$2                
         NO_BUILD=1 
         setup_workspace
+        read_kernel_version
                ;;
-        
-        
+              
         'clean')        
         print_highlight " cleaning & building all "       
-               #clean_outputs
+        clean_outputs
         setup_directories
         build_all        
                ;;
@@ -651,6 +705,7 @@ function main()
         #################### Building single components #############################
                'kernel')
                print_highlight " building only Kernel "
+               read_kernel_version
                build_uimage
                ;;
 
@@ -661,8 +716,7 @@ function main()
 
                'wpa_supplicant')
         print_highlight " building only wpa_supplicant "
-               build_wpa_supplicant
-        
+               build_wpa_supplicant      
                ;;
 
                'hostapd')
@@ -679,6 +733,7 @@ function main()
         print_highlight " Copying scripts "
                build_scripts_download
                ;;
+               
         'utils')
         print_highlight " building only ti-utils "
         build_calibrator