فهرست منبع

* Also allow '-' in include file names
+ Add os_cpu and cpu_source variables
* Cope with aarch64 GNU C compiler that does not support -m64 option
+ Add support for arm test on aarch64 machine
* Better accept expressions instead of constants in C #define

git-svn-id: trunk@42014 -

pierre 6 سال پیش
والد
کامیت
cb4b085a99
1فایلهای تغییر یافته به همراه27 افزوده شده و 7 حذف شده
  1. 27 7
      rtl/unix/scripts/check_sys.sh

+ 27 - 7
rtl/unix/scripts/check_sys.sh

@@ -30,6 +30,7 @@ if [ -d "rtl" ] ; then
 fi
 
 os=`uname -s | tr [:upper:] [:lower:] `
+os_cpu=`uname -m | tr [:upper:] [:lower:] `
 now_pwd=`pwd`
 now_dir=`basename $now_pwd`
 if [ -d "$os" ] ; then
@@ -70,7 +71,7 @@ fi
 if [ -f "$fpc_sysnr" ] ; then
   echo "Checking $fpc_sysnr content for Free Pascal syscall numbers"
   fpc_sysnr_dir=`dirname $fpc_sysnr `
-  sysnr_includes=`grep -o '{\$i  *[a-z_A-Z0-9/.]*' $fpc_sysnr | sed 's:.*{\$i *:'$fpc_sysnr_dir/: `
+  sysnr_includes=`grep -o '{\$i  *[a-z_A-Z0-9/.-]*' $fpc_sysnr | sed 's:.*{\$i *:'$fpc_sysnr_dir/: `
   if [ -n "$sysnr_includes" ] ; then
     echo "Found $sysnr_includes include files"
     fpc_sysnr="$fpc_sysnr $sysnr_includes"
@@ -103,6 +104,7 @@ if [ -z "$CC" ] ; then
 fi
 
 cpu=`$FPC -iTP`
+cpu_source=`$FPC -iSP`
 is_16=0
 is_32=0
 is_64=0
@@ -129,10 +131,23 @@ case $cpu in
 esac
 
 if [ $is_64 -eq 1 ] ; then
-  CC_OPT="$CC_OPT -m64"
+  if [ "$os_cpu" == "aarch64" ] ; then
+    CC_OPT="$CC_OPT -Wall"
+  else
+    CC_OPT="$CC_OPT -m64 -Wall"
+  fi
   CPUBITS=64
 elif [ $is_32 -eq 1 ] ;then
-  CC_OPT="$CC_OPT -m32"
+  if [ "$os_cpu" == "aarch64" ] ; then
+    CC=arm-linux-gnueabihf-gcc-4.8
+    export BINUTILSPREFIX=arm-linux-
+  fi
+  if [ "${FPC/ppcarm/}" != "$FPC" ] ; then
+    CC_OPT="$CC_OPT -march=armv7-a -Wall"
+  else
+    CC_OPT="$CC_OPT -m32 -Wall"
+  fi
+
   CPUBITS=32
 elif [ $is_16 -eq 1 ] ; then
   CPUBITS=16
@@ -253,10 +268,10 @@ if [ -n "$AWK" ] ; then
   $AWK -v proc=$cpu -v cpubits=$CPUBITS -f $awkfile ${fpc_sysnr} > $tmp_fpc_sysnr
   fpc_sysnr=$tmp_fpc_sysnr
 fi
-sed -n "s:^\(.*\)*[ \t]*${fpc_syscall_prefix}\\([_a-zA-Z0-9]*\\)[ \t]*=[ \t]*\\([0-9]*\\)\\(.*\\)$:check_c_syscall_number_from_fpc_rtl \2 \3 \"\1 \4\":p" $fpc_sysnr > check_sys_list.sh
+sed -n "s:^\(.*\)*[ \t]*${fpc_syscall_prefix}\\([_a-zA-Z0-9]*\\)[ \t]*=[ \t]*\\(.*\\);\\(.*\\)$:check_c_syscall_number_from_fpc_rtl \2 \"\3\" \"\1 \4\":p" $fpc_sysnr > check_sys_list.sh
 
 
-sed -n "s:^.*#[[:space:]]*define[[:space:]]*${syscall_prefix}\\([_a-zA-Z0-9]*\\)[[:space:]]*\\([0-9]*\\)\\(.*\\)$:check_c_syscall_number_in_fpc_rtl \1 \2 \"\3\":p" ${syscall_header} > check_sys_list_reverse.sh
+sed -n "s:^.*#[[:space:]]*define[[:space:]]*${syscall_prefix}\\([_a-zA-Z0-9]*\\)[[:space:]]*\\([0-9]*\\)\\(.*\\)$:check_c_syscall_number_in_fpc_rtl \1 \"\2\" \"\3\":p" ${syscall_header} > check_sys_list_reverse.sh
  
 forward_count=0
 forward_ok_count=0
@@ -266,7 +281,7 @@ function check_c_syscall_number_from_fpc_rtl ()
 {
   bare_sys=$1
   sys=${syscall_prefix}$bare_sys
-  value=$2
+  let "value=$2"
   comment="$3"
   if [[ ! ( ( -n "$value" ) && ( $value -ge 0 ) ) ]] ; then
     echo "Computing $2 value"
@@ -352,7 +367,12 @@ function check_c_syscall_number_in_fpc_rtl ()
   sys=${fpc_syscall_prefix}${bare_sys}
   c_sys=${syscall_prefix}${bare_sys}
   value=$2
-  comment="$3"
+  if [ -z "$value" ] ; then
+    let "value=$3"
+    comment="expression $3"
+  else
+    comment="$3"
+  fi
   echo -en "Testing $sys value $value                        \r"
   $CC $CC_OPT -DSYS_MACRO=${c_sys} -o ./test_c_${bare_sys} $c_syscall_source > ./test_${bare_sys}.comp-log 2>&1
   C_COMP_RES=$?