소스 검색

bootstrap: Port back to old shells (#13199)

Since commit f39e82c9 (bootstrap: Re-implement command line option
processing, 2011-12-16) bootstrap uses POSIX shell expressions of the
form "${x#y}" to remove prefix pattern 'y' from the vaule of 'x'.
Although this is allowed by POSIX old shells on some platforms do not
support it.  Revert to using 'sed' to work with old shells.
Brad King 13 년 전
부모
커밋
e5dc76894a
1개의 변경된 파일18개의 추가작업 그리고 9개의 파일을 삭제
  1. 18 9
      bootstrap

+ 18 - 9
bootstrap

@@ -460,6 +460,12 @@ cmake_escape ()
   echo $1 | sed "s/ /\\\\ /g"
   echo $1 | sed "s/ /\\\\ /g"
 }
 }
 
 
+# Strip prefix from argument
+cmake_arg ()
+{
+  echo "$1" | sed "s/^${2-[^=]*=}//"
+}
+
 # Write message to the log
 # Write message to the log
 cmake_log ()
 cmake_log ()
 {
 {
@@ -544,21 +550,24 @@ cmake_ccache_enabled=
 cmake_prefix_dir="${cmake_default_prefix}"
 cmake_prefix_dir="${cmake_default_prefix}"
 while test $# != 0; do
 while test $# != 0; do
   case "$1" in
   case "$1" in
-  --prefix=*) cmake_prefix_dir=`cmake_fix_slashes "${1#*=}"` ;;
-  --parallel=*) cmake_parallel_make="${1#*=}" ;;
-  --datadir=*) cmake_data_dir="${1#*=}" ;;
-  --docdir=*) cmake_doc_dir="${1#*=}" ;;
-  --mandir=*) cmake_man_dir="${1#*=}" ;;
-  --init=*) cmake_init_file="${1#*=}" ;;
+  --prefix=*) dir=`cmake_arg "$1"`
+              cmake_prefix_dir=`cmake_fix_slashes "$dir"` ;;
+  --parallel=*) cmake_parallel_make=`cmake_arg "$1"` ;;
+  --datadir=*) cmake_data_dir=`cmake_arg "$1"` ;;
+  --docdir=*) cmake_doc_dir=`cmake_arg "$1"` ;;
+  --mandir=*) cmake_man_dir=`cmake_arg "$1"` ;;
+  --init=*) cmake_init_file=`cmake_arg "$1"` ;;
   --system-libs) cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARIES=1" ;;
   --system-libs) cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARIES=1" ;;
   --no-system-libs) cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARIES=0" ;;
   --no-system-libs) cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARIES=0" ;;
   --system-bzip2|--system-curl|--system-expat|--system-libarchive|--system-zlib)
   --system-bzip2|--system-curl|--system-expat|--system-libarchive|--system-zlib)
-    cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper ${1#--system-}`=1" ;;
+    lib=`cmake_arg "$1" "--system-"`
+    cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper $lib`=1" ;;
   --no-system-bzip2|--no-system-curl|--no-system-expat|--no-system-libarchive|--no-system-zlib)
   --no-system-bzip2|--no-system-curl|--no-system-expat|--no-system-libarchive|--no-system-zlib)
-    cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper ${1#--no-system-}`=0" ;;
+    lib=`cmake_arg "$1" "--no-system-"`
+    cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper $lib`=0" ;;
   --qt-gui) cmake_bootstrap_qt_gui="1" ;;
   --qt-gui) cmake_bootstrap_qt_gui="1" ;;
   --no-qt-gui) cmake_bootstrap_qt_gui="0" ;;
   --no-qt-gui) cmake_bootstrap_qt_gui="0" ;;
-  --qt-qmake=*) cmake_bootstrap_qt_qmake="${1#*=}" ;;
+  --qt-qmake=*) cmake_bootstrap_qt_qmake=`cmake_arg "$1"` ;;
   --help) cmake_usage ;;
   --help) cmake_usage ;;
   --version) cmake_version_display ; exit 2 ;;
   --version) cmake_version_display ; exit 2 ;;
   --verbose) cmake_verbose=TRUE ;;
   --verbose) cmake_verbose=TRUE ;;