root/maint/gnulib/lib/javacomp.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /* Compile a Java program.
   2    Copyright (C) 2001-2002, 2006, 2009-2021 Free Software Foundation, Inc.
   3    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
   4 
   5    This program is free software: you can redistribute it and/or modify
   6    it under the terms of the GNU General Public License as published by
   7    the Free Software Foundation; either version 3 of the License, or
   8    (at your option) any later version.
   9 
  10    This program is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU General Public License for more details.
  14 
  15    You should have received a copy of the GNU General Public License
  16    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
  17 
  18 #ifndef _JAVACOMP_H
  19 #define _JAVACOMP_H
  20 
  21 #include <stdbool.h>
  22 
  23 /* Compile a Java source file to bytecode.
  24    java_sources is an array of source file names.
  25    classpaths is a list of pathnames to be prepended to the CLASSPATH.
  26 
  27    source_version can be:    support for
  28              1.3             inner classes
  29              1.4             assert keyword
  30              1.5             generic classes and methods
  31              1.6             (not supported)
  32              1.7             switch(string)
  33              1.8             lambdas
  34              9               private interface methods
  35             10               type inference for local variables
  36             11               'var' in parameters of lambda expressions
  37    target_version can be:  classfile version:
  38              1.1                 45.3
  39              1.2                 46.0
  40              1.3                 47.0
  41              1.4                 48.0
  42              1.5                 49.0
  43              1.6                 50.0
  44              1.7                 51.0
  45              1.8                 52.0
  46              9                   53.0
  47             10                   54.0
  48             11                   55.0
  49    target_version can also be given as NULL. In this case, the required
  50    target_version is determined from the found JVM (see javaversion.h).
  51    Specifying target_version is useful when building a library (.jar) that is
  52    useful outside the given package. Passing target_version = NULL is useful
  53    when building an application.
  54    It is unreasonable to ask for:
  55      - target_version < 1.4 with source_version >= 1.4, or
  56      - target_version < 1.5 with source_version >= 1.5, or
  57      - target_version < 1.6 with source_version >= 1.6, or
  58      - target_version < 1.7 with source_version >= 1.7, or
  59      - target_version < 1.8 with source_version >= 1.8, or
  60      - target_version < 9 with source_version >= 9, or
  61      - target_version < 10 with source_version >= 10, or
  62      - target_version < 11 with source_version >= 11,
  63    because even Sun's/Oracle's javac doesn't support these combinations.
  64    It is redundant to ask for a target_version > source_version, since the
  65    smaller target_version = source_version will also always work and newer JVMs
  66    support the older target_versions too. Except for the cases
  67      - target_version = 1.4, source_version = 1.3, which allows gcj versions 3.0
  68        to 3.2 to be used,
  69      - target-version = 1.6, source-version = 1.5, which allows gcj versions
  70        >= 4.3 to be used.
  71 
  72    directory is the target directory. The .class file for class X.Y.Z is
  73    written at directory/X/Y/Z.class. If directory is NULL, the .class
  74    file is written in the source's directory.
  75    use_minimal_classpath = true means to ignore the user's CLASSPATH and
  76    use a minimal one. This is likely to reduce possible problems if the
  77    user's CLASSPATH contains garbage or a classes.zip file of the wrong
  78    Java version.
  79    If verbose, the command to be executed will be printed.
  80    Return false if OK, true on error.  */
  81 extern bool compile_java_class (const char * const *java_sources,
  82                                 unsigned int java_sources_count,
  83                                 const char * const *classpaths,
  84                                 unsigned int classpaths_count,
  85                                 const char *source_version,
  86                                 const char *target_version,
  87                                 const char *directory,
  88                                 bool optimize, bool debug,
  89                                 bool use_minimal_classpath,
  90                                 bool verbose);
  91 
  92 #endif /* _JAVACOMP_H */

/* [previous][next][first][last][top][bottom][index][help] */