bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

update csharpexec module


From: Bruno Haible
Subject: update csharpexec module
Date: Sat, 22 Jul 2006 16:30:12 +0200
User-agent: KMail/1.9.1

Merge from gettext.

2005-12-04  Bruno Haible  <address@hidden>

        * csharpexec.m4 (gt_CSHARPEXEC): Add support for 'clix' launcher
        (untested).

2005-12-04  Bruno Haible  <address@hidden>

        * csharpexec.sh.in: Add support for 'clix' launcher (untested).
        * csharpexec.c: Likewise.
        (execute_csharp_using_sscli): New function.
        (execute_csharp_program): Call it.

*** m4/csharpexec.m4    1 Jun 2005 10:25:07 -0000       1.1
--- m4/csharpexec.m4    22 Jul 2006 14:25:55 -0000
***************
*** 1,13 ****
! # csharpexec.m4 serial 2 (gettext-0.15)
  dnl Copyright (C) 2003-2005 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
  dnl with or without modifications, as long as this notice is preserved.
  
  # Prerequisites of csharpexec.sh.
  # gt_CSHARPEXEC or gt_CSHARPEXEC(testexecutable, its-directory)
  # Sets HAVE_CSHARPEXEC to nonempty if csharpexec.sh will work.
- 
  AC_DEFUN([gt_CSHARPEXEC],
  [
    AC_REQUIRE([gt_CSHARP_CHOICE])
--- 1,14 ----
! # csharpexec.m4 serial 3 (gettext-0.15)
  dnl Copyright (C) 2003-2005 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
  dnl with or without modifications, as long as this notice is preserved.
  
  # Prerequisites of csharpexec.sh.
+ # Checks for a C# execution engine.
  # gt_CSHARPEXEC or gt_CSHARPEXEC(testexecutable, its-directory)
+ # Sets at most one of HAVE_ILRUN, HAVE_MONO, HAVE_CLIX.
  # Sets HAVE_CSHARPEXEC to nonempty if csharpexec.sh will work.
  AC_DEFUN([gt_CSHARPEXEC],
  [
    AC_REQUIRE([gt_CSHARP_CHOICE])
***************
*** 23,28 ****
--- 24,30 ----
    pushdef([AC_MSG_RESULT],[:])dnl
    AC_CHECK_PROG(HAVE_ILRUN_IN_PATH, ilrun, yes)
    AC_CHECK_PROG(HAVE_MONO_IN_PATH, mono, yes)
+   AC_CHECK_PROG(HAVE_CLIX_IN_PATH, clix, yes)
    popdef([AC_MSG_RESULT])dnl
    popdef([AC_CHECKING])dnl
    popdef([AC_MSG_CHECKING])dnl
***************
*** 46,51 ****
--- 48,73 ----
            break
          fi
          ;;
+       sscli)
+         if test -n "$HAVE_CLIX_IN_PATH" \
+            ifelse([$1], , , [&& clix $2/$1 >/dev/null 2>/dev/null]); then
+           HAVE_CLIX=1
+           case $host_os in
+             cygwin* | mingw* | pw32*)
+               CLIX_PATH_VAR=PATH
+               ;;
+             darwin* | rhapsody*)
+               CLIX_PATH_VAR=DYLD_LIBRARY_PATH
+               ;;
+             *)
+               CLIX_PATH_VAR=LD_LIBRARY_PATH
+               ;;
+           esac
+           eval CLIX_PATH=\"\$CLIX_PATH_VAR\"
+           ac_result="clix"
+           break
+         fi
+         ;;
        no)
          HAVE_CSHARPEXEC=
          ac_result="no"
***************
*** 56,61 ****
--- 78,86 ----
    AC_MSG_RESULT([$ac_result])
    AC_SUBST(MONO_PATH)
    AC_SUBST(MONO_PATH_SEPARATOR)
+   AC_SUBST(CLIX_PATH_VAR)
+   AC_SUBST(CLIX_PATH)
    AC_SUBST(HAVE_ILRUN)
    AC_SUBST(HAVE_MONO)
+   AC_SUBST(HAVE_CLIX)
  ])
*** lib/csharpexec.c    1 Jun 2005 10:25:07 -0000       1.1
--- lib/csharpexec.c    22 Jul 2006 14:25:55 -0000
***************
*** 1,5 ****
  /* Execute a C# program.
!    Copyright (C) 2003-2004 Free Software Foundation, Inc.
     Written by Bruno Haible <address@hidden>, 2003.
  
     This program is free software; you can redistribute it and/or modify
--- 1,5 ----
  /* Execute a C# program.
!    Copyright (C) 2003-2005 Free Software Foundation, Inc.
     Written by Bruno Haible <address@hidden>, 2003.
  
     This program is free software; you can redistribute it and/or modify
***************
*** 40,45 ****
--- 40,70 ----
  #define reset_classpath reset_monopath
  #include "classpath.h"
  #include "classpath.c"
+ #undef reset_classpath
+ #undef set_classpath
+ #undef new_classpath
+ #undef CLASSPATHVAR
+ 
+ /* Handling of clix' PATH variable is just like Java CLASSPATH.  */
+ #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
+   /* Win32, Cygwin */
+   #define CLASSPATHVAR "PATH"
+ #elif defined __APPLE__ && defined __MACH__
+   /* MacOS X */
+   #define CLASSPATHVAR "DYLD_LIBRARY_PATH"
+ #else
+   /* Normal Unix */
+   #define CLASSPATHVAR "LD_LIBRARY_PATH"
+ #endif
+ #define new_classpath new_clixpath
+ #define set_classpath set_clixpath
+ #define reset_classpath reset_clixpath
+ #include "classpath.h"
+ #include "classpath.c"
+ #undef reset_classpath
+ #undef set_classpath
+ #undef new_classpath
+ #undef CLASSPATHVAR
  
  #define _(str) gettext (str)
  
***************
*** 50,55 ****
--- 75,81 ----
  
     ilrun      pnet
     mono       mono
+    clix       sscli
  
     With Mono, the MONO_PATH is a colon separated list of pathnames. (On
     Windows: semicolon separated list of pathnames.)
***************
*** 58,63 ****
--- 84,91 ----
       1. "ilrun", because it is a completely free system.
       2. "mono", because it is a partially free system but doesn't integrate
          well with Unix.
+      3. "clix", although it is not free, because it is a kind of "reference
+         implementation" of C#.
     But the order can be changed through the --enable-csharp configuration
     option.
   */
***************
*** 194,199 ****
--- 222,288 ----
      return -1;
  }
  
+ static int
+ execute_csharp_using_sscli (const char *assembly_path,
+                           const char * const *libdirs,
+                           unsigned int libdirs_count,
+                           const char * const *args, unsigned int nargs,
+                           bool verbose, bool quiet,
+                           execute_fn *executer, void *private_data)
+ {
+   static bool clix_tested;
+   static bool clix_present;
+ 
+   if (!clix_tested)
+     {
+       /* Test for presence of clix:
+        "clix >/dev/null 2>/dev/null ; test $? = 1"  */
+       char *argv[2];
+       int exitstatus;
+ 
+       argv[0] = "clix";
+       argv[1] = NULL;
+       exitstatus = execute ("clix", "clix", argv, false, false, true, true,
+                           true, false);
+       clix_present = (exitstatus == 0 || exitstatus == 1);
+       clix_tested = true;
+     }
+ 
+   if (clix_present)
+     {
+       char *old_clixpath;
+       char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *));
+       unsigned int i;
+       bool err;
+ 
+       /* Set clix' PATH variable.  */
+       old_clixpath = set_clixpath (libdirs, libdirs_count, false, verbose);
+ 
+       argv[0] = "clix";
+       argv[1] = (char *) assembly_path;
+       for (i = 0; i <= nargs; i++)
+       argv[2 + i] = (char *) args[i];
+ 
+       if (verbose)
+       {
+         char *command = shell_quote_argv (argv);
+         printf ("%s\n", command);
+         free (command);
+       }
+ 
+       err = executer ("clix", "clix", argv, private_data);
+ 
+       /* Reset clix' PATH variable.  */
+       reset_clixpath (old_clixpath);
+ 
+       freesa (argv);
+ 
+       return err;
+     }
+   else
+     return -1;
+ }
+ 
  bool
  execute_csharp_program (const char *assembly_path,
                        const char * const *libdirs,
***************
*** 247,252 ****
--- 336,347 ----
      return (bool) result;
  #endif
  
+   result = execute_csharp_using_sscli (assembly_path, libdirs, libdirs_count,
+                                      args, nargs, verbose, quiet,
+                                      executer, private_data);
+   if (result >= 0)
+     return (bool) result;
+ 
    if (!quiet)
      error (0, 0, _("C# virtual machine not found, try installing pnet"));
    return true;
*** build-aux/csharpexec.sh.in  9 Jan 2006 13:45:38 -0000       1.1
--- build-aux/csharpexec.sh.in  22 Jul 2006 14:25:55 -0000
***************
*** 1,7 ****
  #!/bin/sh
  # Execute a C# program.
  
! # Copyright (C) 2003 Free Software Foundation, Inc.
  # Written by Bruno Haible <address@hidden>, 2003.
  #
  # This program is free software; you can redistribute it and/or modify
--- 1,7 ----
  #!/bin/sh
  # Execute a C# program.
  
! # Copyright (C) 2003, 2005 Free Software Foundation, Inc.
  # Written by Bruno Haible <address@hidden>, 2003.
  #
  # This program is free software; you can redistribute it and/or modify
***************
*** 78,84 ****
      test -z "$CSHARP_VERBOSE" || echo mono "$@"
      exec mono "$@"
    else
!     echo 'C# virtual machine not found, try installing pnet, then 
reconfigure' 1>&2
!     exit 1
    fi
  fi
--- 78,96 ----
      test -z "$CSHARP_VERBOSE" || echo mono "$@"
      exec mono "$@"
    else
!     if test -n "@HAVE_CLIX@"; then
!       CONF_CLIX_PATH='@CLIX_PATH@'
!       if test -n "$libdirs_mono"; then
!         
@address@hidden"$libdirs_mono${CONF_CLIX_PATH:address@hidden@$CONF_CLIX_PATH}"
!       else
!         @address@hidden"$CONF_CLIX_PATH"
!       fi
!       export @CLIX_PATH_VAR@
!       test -z "$CSHARP_VERBOSE" || echo clix "$@"
!       exec clix "$@"
!     else
!       echo 'C# virtual machine not found, try installing pnet, then 
reconfigure' 1>&2
!       exit 1
!     fi
    fi
  fi




reply via email to

[Prev in Thread] Current Thread [Next in Thread]