Merge branch 'features/smp' into tizen_next
[sdk/emulator/qemu.git] / configure
index af44b6a..20925ef 100755 (executable)
--- a/configure
+++ b/configure
@@ -31,19 +31,6 @@ printf " '%s'" "$0" "$@" >> config.log
 echo >> config.log
 echo "#" >> config.log
 
-# Save the configure command line for later reuse.
-cat <<EOD >config.status
-#!/bin/sh
-# Generated by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-EOD
-printf "exec" >>config.status
-printf " '%s'" "$0" "$@" >>config.status
-echo >>config.status
-chmod +x config.status
-
 error_exit() {
     echo
     echo "ERROR: $1"
@@ -211,6 +198,7 @@ audio_win_int=""
 cc_i386=i386-pc-linux-gnu-gcc
 libs_qga=""
 debug_info="yes"
+stack_protector=""
 
 # Don't accept a target_list environment variable.
 unset target_list
@@ -259,6 +247,7 @@ xfs=""
 vhost_net="no"
 vhost_scsi="no"
 kvm="no"
+hax="no"
 rdma=""
 gprof="no"
 debug_tcg="no"
@@ -311,7 +300,12 @@ rbd=""
 smartcard_nss=""
 libusb=""
 usb_redir=""
+opengl=""
+efence="no"
+yagl="no"
+yagl_stats="no"
 glx=""
+vigs="no"
 zlib="yes"
 lzo="no"
 snappy="no"
@@ -325,12 +319,20 @@ libnfs=""
 coroutine=""
 coroutine_pool=""
 seccomp=""
+
+# for TIZEN-maru
+maru="no"
+shm="no"
+libav="no"
+libpng="no"
+#
 glusterfs=""
 glusterfs_discard="no"
 glusterfs_zerofill="no"
 virtio_blk_data_plane=""
 gtk=""
 gtkabi="2.0"
+vte=""
 tpm="no"
 libssh2=""
 vhdx=""
@@ -657,6 +659,10 @@ Haiku)
   if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
     audio_possible_drivers="$audio_possible_drivers fmod"
   fi
+
+# fix linking error on Ubuntu 13.04
+#  libs_qga="-lrt $libs_qga"
+#  QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers $QEMU_INCLUDES"
   QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
 ;;
 esac
@@ -902,6 +908,10 @@ for opt do
   ;;
   --enable-kvm) kvm="yes"
   ;;
+  --disable-hax) hax="no"
+  ;;
+  --enable-hax) hax="yes"
+  ;;
   --disable-tcg-interpreter) tcg_interpreter="no"
   ;;
   --enable-tcg-interpreter) tcg_interpreter="yes"
@@ -958,10 +968,16 @@ for opt do
   ;;
   --enable-uname-release=*) uname_release="$optarg"
   ;;
-  --enable-werror) werror="yes"
+  --enable-werror)
+      werror="yes" ;
+      force_werror="yes" ;
   ;;
   --disable-werror) werror="no"
   ;;
+  --enable-stack-protector) stack_protector="yes"
+  ;;
+  --disable-stack-protector) stack_protector="no"
+  ;;
   --disable-curses) curses="no"
   ;;
   --enable-curses) curses="yes"
@@ -1000,6 +1016,26 @@ for opt do
   ;;
   --enable-vhost-net) vhost_net="yes"
   ;;
+  --enable-efence) efence="yes"
+  ;;
+  --disable-efence) efence="no"
+  ;;
+  --enable-yagl) yagl="yes"
+  ;;
+  --disable-yagl) yagl="no"
+  ;;
+  --enable-yagl-stats) yagl_stats="yes"
+  ;;
+  --disable-yagl-stats) yagl_stats="no"
+  ;;
+  --enable-opengl) opengl="yes"
+  ;;
+  --enable-vigs) vigs="yes"
+  ;;
+  --disable-vigs) vigs="no"
+  ;;
+  --disable-opengl) opengl="no"
+  ;;
   --disable-vhost-scsi) vhost_scsi="no"
   ;;
   --enable-vhost-scsi) vhost_scsi="yes"
@@ -1058,6 +1094,18 @@ for opt do
   ;;
   --disable-seccomp) seccomp="no"
   ;;
+# for TIZEN-maru
+  --enable-maru) maru="yes"
+  ;;
+  --enable-shm) shm="yes"
+  ;;
+  --enable-libav) libav="yes"
+  ;;
+  --disable-libav) libav="no"
+  ;;
+  --enable-libpng) libpng="yes"
+  ;;
+#
   --disable-glusterfs) glusterfs="no"
   ;;
   --enable-glusterfs) glusterfs="yes"
@@ -1076,6 +1124,10 @@ for opt do
   ;;
   --with-gtkabi=*) gtkabi="$optarg"
   ;;
+  --disable-vte) vte="no"
+  ;;
+  --enable-vte) vte="yes"
+  ;;
   --enable-tpm) tpm="yes"
   ;;
   --disable-libssh2) libssh2="no"
@@ -1227,6 +1279,7 @@ Advanced options (experts only):
   --disable-sparse         disable sparse checker (default)
   --disable-strip          disable stripping binaries
   --disable-werror         disable compilation abort on warning
+  --disable-stack-protector disable compiler-provided stack protection
   --disable-sdl            disable SDL
   --enable-sdl             enable SDL
   --with-sdlabi            select preferred SDL ABI 1.2 or 2.0
@@ -1353,6 +1406,22 @@ Advanced options (experts only):
   --disable-quorum         disable quorum block filter support
   --enable-quorum          enable quorum block filter support
 
+  --disable-hax            disable HAX acceleration support
+  --enable-hax             enable HAX acceleration support
+  --enable-yagl            enable YaGL device
+  --disable-yagl           disable YaGL device
+  --enable-yagl-stats      enable YaGL stats
+  --disable-yagl-stats     disable YaGL stats
+  --enable-vigs            enable VIGS device
+  --disable-vigs           disable VIGS device
+
+TIZEN-maru options:
+  --enable-maru            enable maru board
+  --enable-shm             enable shared memory for framebuffer
+  --enable-libav           enable libav library
+  --disable-libav          disable libav library
+  --enable-libpng          enable png library
+
 NOTE: The object files are built at the place where configure is launched
 EOF
 exit 1
@@ -1447,9 +1516,18 @@ for flag in $gcc_flags; do
     fi
 done
 
-if compile_prog "-Werror -fstack-protector-all" "" ; then
-    QEMU_CFLAGS="$QEMU_CFLAGS -fstack-protector-all"
-    LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,-fstack-protector-all"
+if test "$stack_protector" != "no" ; then
+  gcc_flags="-fstack-protector-strong -fstack-protector-all"
+  for flag in $gcc_flags; do
+    # We need to check both a compile and a link, since some compiler
+    # setups fail only on a .c->.o compile and some only at link time
+    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
+       compile_prog "-Werror $flag" ""; then
+      QEMU_CFLAGS="$QEMU_CFLAGS $flag"
+      LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
+      break
+    fi
+  done
 fi
 
 # Workaround for http://gcc.gnu.org/PR55489.  Happens with -fPIE/-fPIC and
@@ -1959,30 +2037,41 @@ if test "$gtk" != "no"; then
     gtkpackage="gtk+-$gtkabi"
     if test "$gtkabi" = "3.0" ; then
       gtkversion="3.0.0"
+    else
+      gtkversion="2.18.0"
+    fi
+    if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
+        gtk_cflags=`$pkg_config --cflags $gtkpackage`
+        gtk_libs=`$pkg_config --libs $gtkpackage`
+        libs_softmmu="$gtk_libs $libs_softmmu"
+        gtk="yes"
+    elif test "$gtk" = "yes"; then
+        feature_not_found "gtk" "Install gtk2 or gtk3 (requires --with-gtkabi=3.0 option to configure) devel"
+    else
+        gtk="no"
+    fi
+fi
+
+##########################################
+# VTE probe
+
+if test "$vte" != "no"; then
+    if test "$gtkabi" = "3.0"; then
       vtepackage="vte-2.90"
       vteversion="0.32.0"
     else
-      gtkversion="2.18.0"
       vtepackage="vte"
       vteversion="0.24.0"
     fi
-    if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
-        if test "$gtk" = "yes" ; then
-            feature_not_found "gtk" "Install gtk2 or gtk3 (requires --with-gtkabi=3.0 option to configure) devel"
-        fi
-        gtk="no"
-    elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then
-        if test "$gtk" = "yes" ; then
-            error_exit "libvte not found (required for gtk support)"
-        fi
-        gtk="no"
+    if $pkg_config --exists "$vtepackage >= $vteversion"; then
+        vte_cflags=`$pkg_config --cflags $vtepackage`
+        vte_libs=`$pkg_config --libs $vtepackage`
+        libs_softmmu="$vte_libs $libs_softmmu"
+        vte="yes"
+    elif test "$vte" = "yes"; then
+        feature_not_found "vte" "Install libvte or libvte-2.90 (requires --with-gtkabi=3.0 option to configure) devel"
     else
-       gtk_cflags=`$pkg_config --cflags $gtkpackage`
-       gtk_libs=`$pkg_config --libs $gtkpackage`
-       vte_cflags=`$pkg_config --cflags $vtepackage`
-       vte_libs=`$pkg_config --libs $vtepackage`
-       libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
-       gtk="yes"
+        vte="no"
     fi
 fi
 
@@ -2709,6 +2798,24 @@ if test "$mingw32" != yes -a "$pthread" = no; then
       "Make sure to have the pthread libs and headers installed."
 fi
 
+# check for pthread_setname_np
+pthread_setname_np=no
+cat > $TMPC << EOF
+#include <pthread.h>
+
+static void *f(void *p) { return NULL; }
+int main(void)
+{
+    pthread_t thread;
+    pthread_create(&thread, 0, f, 0);
+    pthread_setname_np(thread, "QEMU");
+    return 0;
+}
+EOF
+if compile_prog "" "$pthread_lib" ; then
+  pthread_setname_np=yes
+fi
+
 ##########################################
 # rbd probe
 if test "$rbd" != "no" ; then
@@ -3769,10 +3876,12 @@ int main(void) {
     return 0;
 }
 EOF
-if compile_prog "-Werror" "" ; then
+if test "$force_werror" != "yes"; then
+  if compile_prog "-Werror" "" ; then
     pragma_diagnostic_available=yes
-else
+  else
     werror=no
+  fi
 fi
 
 ########################################
@@ -3835,6 +3944,11 @@ fi
 
 int128=no
 cat > $TMPC << EOF
+#if defined(__clang_major__) && defined(__clang_minor__)
+# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
+#  error __int128_t does not work in CLANG before 3.2
+# endif
+#endif
 __int128_t a;
 __uint128_t b;
 int main (void) {
@@ -3863,6 +3977,85 @@ if compile_prog "" "" ; then
 fi
 
 ##########################################
+# libav probe
+
+if test "$libav" != "no"; then
+    libavcodec_package="libavcodec"
+    libavcodec_version="54.35.0"
+    libavutil_package="libavutil"
+    libavutil_version="52.3.0"
+    libavformat_package="libavformat"
+    libavformat_version="54.20.3"
+    libavresample_package="libavresample"
+    libavresample_version="1.0.1"
+
+    if $pkg_config --exists "$libavcodec_package >= $libavcodec_version" ; then
+        libav_cflags=`$pkg_config --cflags $libavcodec_package`
+        libav_libs=`$pkg_config --libs $libavcodec_package`
+        libs_softmmu="$libav_libs $libs_softmmu"
+        libav="yes"
+    else
+        #if test "$libav" = "yes" ; then
+        #    feature_not_found "libav"
+        #fi
+        libav="no"
+    fi
+
+    if $pkg_config --exists "$libavutil_package >= $libavutil_version" ; then
+        libav_libs=`$pkg_config --libs-only-l $libavutil_package`
+        libs_softmmu="$libav_libs $libs_softmmu"
+        libav="yes"
+    else
+        #if test "$libav" = "yes" ; then
+        #    feature_not_found "libav"
+        #fi
+        libav="no"
+    fi
+
+    if $pkg_config --exists "$libavformat_package >= $libavformat_version" ; then
+        libav_libs=`$pkg_config --libs-only-l $libavformat_package`
+        libs_softmmu="$libav_libs $libs_softmmu"
+        libav="yes"
+    else
+        #if test "$libav" = "yes" ; then
+        #    feature_not_found "libav"
+        #fi
+        libav="no"
+    fi
+
+    if $pkg_config --exists "$libavresample_package >= $libavresample_version" ; then
+        libav_libs=`$pkg_config --libs-only-l $libavresample_package`
+        libs_softmmu="$libav_libs $libs_softmmu"
+        libav="yes"
+    else
+        #if test "$libav" = "yes" ; then
+        #    feature_not_found "libav"
+        #fi
+        libav="no"
+    fi
+
+fi
+
+##########################################
+# libpng probe
+
+if test "$libpng" != "no"; then
+    libpng_package="libpng"
+
+    if $pkg_config --exists "$libpng_package" ; then
+        libpng_cflags=`$pkg_config --cflags $libpng_package`
+        libpng_libs=`$pkg_config --libs $libpng_package`
+        libs_softmmu="$libpng_libs $libs_softmmu"
+        libpng="yes"
+    else
+        if test "$libpng" = "yes" ; then
+            feature_not_found "libpng"
+        fi
+        libpng="no"
+    fi
+fi
+
+##########################################
 # End of CC checks
 # After here, no more $cc or $ld runs
 
@@ -3876,7 +4069,7 @@ fi
 ##########################################
 # Do we have libnfs
 if test "$libnfs" != "no" ; then
-  if $pkg_config --atleast-version=1.9.2 libnfs; then
+  if $pkg_config --atleast-version=1.9.3 libnfs; then
     libnfs="yes"
     libnfs_libs=$($pkg_config --libs libnfs)
     LIBS="$LIBS $libnfs_libs"
@@ -3942,6 +4135,12 @@ if test "$softmmu" = yes ; then
     if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
       virtfs=yes
       tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
+    elif test "$darwin" = yes ; then
+      echo "Enable VirtFS on Darwin"
+      virtfs=yes
+    elif test "$mingw32" = yes ; then
+      echo "Enable VirtFS on Windows"
+      virtfs=yes
     else
       if test "$virtfs" = yes; then
         error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
@@ -4061,6 +4260,7 @@ fi
 echo "pixman            $pixman"
 echo "SDL support       $sdl"
 echo "GTK support       $gtk"
+echo "VTE support       $vte"
 echo "curses support    $curses"
 echo "curl support      $curl"
 echo "mingw32 support   $mingw32"
@@ -4107,12 +4307,17 @@ echo "vhost-net support $vhost_net"
 echo "vhost-scsi support $vhost_scsi"
 echo "Trace backend     $trace_backend"
 echo "Trace output file $trace_file-<pid>"
+if test "$spice" = "yes"; then
 echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
+else
+echo "spice support     $spice"
+fi
 echo "rbd support       $rbd"
 echo "xfsctl support    $xfs"
 echo "nss used          $smartcard_nss"
 echo "libusb            $libusb"
 echo "usb net redir     $usb_redir"
+echo "EFence support    $efence"
 echo "GLX support       $glx"
 if test "$libiscsi_version" = "1.4.0"; then
 echo "libiscsi support  $libiscsi (1.4.0)"
@@ -4138,6 +4343,19 @@ echo "Quorum            $quorum"
 echo "lzo support       $lzo"
 echo "snappy support    $snappy"
 
+echo "HAX support       $hax"
+echo "YaGL support      $yagl"
+echo "YaGL stats        $yagl_stats"
+echo "OpenGL support    $opengl"
+echo "VIGS support      $vigs"
+
+# for TIZEN-maru
+echo "TIZEN-maru support $maru"
+echo "TIZEN-maru shared framebuffer support $shm"
+echo "TIZEN-maru libav support $libav"
+echo "TIZEN-maru libpng support $libpng"
+#
+
 if test "$sdl_too_old" = "yes"; then
 echo "-> Your SDL version is too old - please upgrade to have SDL support"
 fi
@@ -4385,6 +4603,9 @@ echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
 if test "$gtk" = "yes" ; then
   echo "CONFIG_GTK=y" >> $config_host_mak
   echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
+fi
+if test "$vte" = "yes" ; then
+  echo "CONFIG_VTE=y" >> $config_host_mak
   echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
 fi
 if test "$xen" = "yes" ; then
@@ -4441,6 +4662,36 @@ if test "$spice" = "yes" ; then
   echo "CONFIG_SPICE=y" >> $config_host_mak
 fi
 
+if test "$efence" = "yes" ; then
+  echo "CONFIG_EFENCE=y" >> $config_host_mak
+fi
+
+if test "$yagl" = "yes" ; then
+  echo "CONFIG_YAGL=y" >> $config_host_mak
+  if test "$linux" = "yes" ; then
+    LIBS="-lGLU -ldl $LIBS"
+  elif test "$mingw32" = "yes" ; then
+    LIBS="-lopengl32 -lglu32 $LIBS"
+  elif test "$darwin" = "yes" ; then
+    LIBS="-framework OpenGL -framework AGL -framework GLUT $LIBS"
+  else
+    echo "ERROR: YaGL is not available on $targetos"
+    exit 1
+  fi
+fi
+
+if test "$yagl_stats" = "yes" ; then
+  echo "CONFIG_YAGL_STATS=y" >> $config_host_mak
+fi
+
+if test "$vigs" = "yes" ; then
+  echo "CONFIG_VIGS=y" >> $config_host_mak
+fi
+
+if test "$smartcard" = "yes" ; then
+  echo "CONFIG_SMARTCARD=y" >> $config_host_mak
+fi
+
 if test "$smartcard_nss" = "yes" ; then
   echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
   echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
@@ -4582,6 +4833,22 @@ else
   echo "HOST_USB=stub" >> $config_host_mak
 fi
 
+# for TIZEN-maru
+if test "$maru" = "yes" ; then
+  echo "CONFIG_MARU=y" >> $config_host_mak
+fi
+if test "$shm" = "yes" ; then
+  echo "CONFIG_USE_SHM=y" >> $config_host_mak
+fi
+if test "$libav" = "yes" ; then
+  echo "CONFIG_LIBAV=y" >> $config_host_mak
+  echo "LIBAV_CFLAGS=$libav_cflags" >> $config_host_mak
+fi
+if test "$libpng" = "yes" ; then
+  echo "CONFIG_PNG=y" >> $config_host_mak
+  echo "LIBPNG_CFLAGS=$libpng_cflags" >> $config_host_mak
+fi
+
 # TPM passthrough support?
 if test "$tpm" = "yes"; then
   echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
@@ -4632,6 +4899,16 @@ if test "$rdma" = "yes" ; then
   echo "CONFIG_RDMA=y" >> $config_host_mak
 fi
 
+# Hold two types of flag:
+#   CONFIG_THREAD_SETNAME_BYTHREAD  - we've got a way of setting the name on
+#                                     a thread we have a handle to
+#   CONFIG_PTHREAD_SETNAME_NP       - A way of doing it on a particular
+#                                     platform
+if test "$pthread_setname_np" = "yes" ; then
+  echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
+  echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
+fi
+
 if test "$tcg_interpreter" = "yes"; then
   QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
 elif test "$ARCH" = "sparc64" ; then
@@ -4926,6 +5203,24 @@ case "$target_name" in
       fi
     fi
 esac
+case "$target_name" in
+  i386|x86_64)
+    echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
+esac
+if test "$hax" = "yes" ; then
+  if test "$target_softmmu" = "yes" ; then
+    case "$target_name" in
+    i386|x86_64)
+      echo "CONFIG_HAX=y" >> $config_target_mak
+    ;;
+    *)
+      echo "CONFIG_NO_HAX=y" >> $config_target_mak
+    ;;
+    esac
+  else
+    echo "CONFIG_NO_HAX=y" >> $config_target_mak
+  fi
+fi
 if test "$target_bigendian" = "yes" ; then
   echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
 fi
@@ -4962,6 +5257,42 @@ fi
 cflags=""
 ldflags=""
 
+if test "$tcg_interpreter" = "yes"; then
+  includes="-I\$(SRC_PATH)/tcg/tci $includes"
+elif test "$ARCH" = "sparc64" ; then
+  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
+elif test "$ARCH" = "s390x" ; then
+  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
+elif test "$ARCH" = "x86_64" ; then
+  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
+else
+  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
+fi
+includes="-I\$(SRC_PATH)/tcg $includes"
+
+if test "$linux" = "yes" ; then
+  includes="-I\$(SRC_PATH)/linux-headers $includes"
+fi
+
+if test "$target_user_only" = "yes" ; then
+    libdis_config_mak=libdis-user/config.mak
+else
+    libdis_config_mak=libdis/config.mak
+fi
+
+if test "$efence" = "yes" ; then
+  echo "CONFIG_BUILD_WITH_EFENCE=y" >> $config_target_mak
+  echo "LIBS+=-lefence" >> $config_target_mak
+fi
+
+if test "$yagl" = "yes" ; then
+  echo "CONFIG_BUILD_YAGL=y" >> $config_target_mak
+fi
+
+if test "$vigs" = "yes" ; then
+  echo "CONFIG_BUILD_VIGS=y" >> $config_target_mak
+fi
+
 for i in $ARCH $TARGET_BASE_ARCH ; do
   case "$i" in
   alpha)
@@ -5056,6 +5387,20 @@ alpha)
 ;;
 esac
 
+if test "$target_softmmu" = "yes" ; then
+  case "$TARGET_BASE_ARCH" in
+  arm)
+    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
+  ;;
+  lm32)
+    cflags="-DHAS_AUDIO $cflags"
+  ;;
+  i386|mips|ppc)
+    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
+  ;;
+  esac
+fi
+
 if test "$gprof" = "yes" ; then
   echo "TARGET_GPROF=yes" >> $config_target_mak
   if test "$target_linux_user" = "yes" ; then
@@ -5142,3 +5487,17 @@ done
 if test "$docs" = "yes" ; then
   mkdir -p QMP
 fi
+
+# Save the configure command line for later reuse.
+cat <<EOD >config.status
+#!/bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+EOD
+printf "exec" >>config.status
+printf " '%s'" "$0" "$@" >>config.status
+echo >>config.status
+chmod +x config.status
+