From: Tom Tromey Date: Wed, 10 Nov 1999 01:38:24 +0000 (+0000) Subject: re GNATS gcj/84 (path to classes.zip is compiled in to gcj at build time) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=71651d6c006d42f9e838bdde548ef858cc2ca290;p=gcc.git re GNATS gcj/84 (path to classes.zip is compiled in to gcj at build time) * jcf-path.c: Include . (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. (DIR_UP): New macro. From-SVN: r30465 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index d15c7bd9e08..14f65aaf757 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +1999-11-09 Tom Tromey + + * jcf-path.c: Include . + (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. + (DIR_UP): New macro. + Tue Nov 9 12:12:38 1999 Alexandre Petit-Bianco * parse.y (source_end_java_method): Resume permanent allocation, diff --git a/gcc/java/jcf-path.c b/gcc/java/jcf-path.c index 056be31d12c..c0cd3a744cc 100644 --- a/gcc/java/jcf-path.c +++ b/gcc/java/jcf-path.c @@ -43,6 +43,10 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #define DIR_SEPARATOR '/' #endif +#ifndef DIR_UP +#define DIR_UP ".." +#endif + /* Possible flag values. */ @@ -223,9 +227,58 @@ void jcf_path_init () { char *cp; + char *try, sep[2]; + struct stat stat_b; + int found = 0, len; add_entry (&sys_dirs, ".", 0); - add_entry (&sys_dirs, LIBGCJ_ZIP_FILE, 1); + + sep[0] = DIR_SEPARATOR; + sep[1] = '\0'; + + GET_ENV_PATH_LIST (cp, "GCC_EXEC_PREFIX"); + if (cp) + { + try = alloca (strlen (cp) + 50); + /* The exec prefix can be something like + /usr/local/bin/../lib/gcc-lib/. We want to change this + into a pointer to the share directory. We support two + configurations: one where prefix and exec-prefix are the + same, and one where exec-prefix is `prefix/SOMETHING'. */ + strcpy (try, cp); + strcat (try, DIR_UP); + strcat (try, sep); + strcat (try, DIR_UP); + strcat (try, sep); + len = strlen (try); + + strcpy (try + len, "share"); + strcat (try, sep); + strcat (try, "libgcj.zip"); + if (! stat (try, &stat_b)) + { + add_entry (&sys_dirs, try, 1); + found = 1; + } + else + { + strcpy (try + len, DIR_UP); + strcat (try, sep); + strcat (try, "share"); + strcat (try, sep); + strcat (try, "libgcj.zip"); + if (! stat (try, &stat_b)) + { + add_entry (&sys_dirs, try, 1); + found = 1; + } + } + } + if (! found) + { + /* Desperation: use the installed one. */ + add_entry (&sys_dirs, LIBGCJ_ZIP_FILE, 1); + } GET_ENV_PATH_LIST (cp, "CLASSPATH"); add_path (&classpath_env, cp, 0);