configure : detect minimal JoGL version (2.2 API)
[scilab.git] / scilab / m4 / java-thirdparty.m4
1 dnl
2 dnl Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 dnl Copyright (C) DIGITEO - 2010 - Sylvestre Ledru
4 dnl Copyright (C) Scilab Enterprises - 2015 - Clement David
5 dnl 
6 dnl This file must be used under the terms of the CeCILL.
7 dnl This source file is licensed as described in the file COPYING, which
8 dnl you should have received as part of this distribution.  The terms
9 dnl are also available at    
10 dnl http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11 dnl
12
13 #------------------------------------------------------------------------
14 # AC_JAVA_CHECK_VERSION_PACKAGE(NAME, IMPORTS, JAR, MIN_VERSION, CURRENT_VERSION, [PRE_PROCESSING], [GREATER_OR_EQUALS])
15 #
16 # Check if the minimal version of a software/package is available or not.
17 # Note that since java does not provide an universal mechanism to detect
18 # the version of a package, some work is left to the user.
19 # I will update this work when OSGI is more supported.
20 #
21 # Arguments:
22 #    1. The name of the package (only used in the display of feedbacks)
23 #    2. Which imports are necessary in the check
24 #    3. The name of the jar files used to build against
25 #    4. What is the minimal version expected
26 #    5. The Java code to get the version ... This can be a serie of java
27 #       instructions
28 #   6. Pre processing to reformat the values
29 #   7. Specify if we want the exact version or greater. (equals or greater by
30 #      default).
31 #
32 #------------------------------------------------------------------------
33
34 AC_DEFUN([AC_JAVA_CHECK_VERSION_PACKAGE], [
35     AC_MSG_CHECKING([minimal version ($4) of $1])
36    saved_ac_java_classpath=$ac_java_classpath
37    export ac_java_classpath="$3:$ac_java_classpath"
38    if test "x$7" == "x"; then
39    AC_JAVA_TRY_COMPILE($2, [String minVersion="$4";
40                             $6
41                             System.out.println($5);
42                                   if (compare(minVersion, $5) > 0) {
43                                    System.exit(-1);
44                                 } ]
45                             , "yes", echo "yes" , AC_MSG_ERROR([Wrong version of $1. Expected at least $4. Found $STDOUT]))
46    else
47    AC_JAVA_TRY_COMPILE($2, [String minVersion="$4";
48                             $6
49                             System.out.println($5);
50                                   if (compare(minVersion, $5) != 0) {
51                                    System.exit(-1);
52                                 } ]
53                             , "yes", echo "yes" , AC_MSG_ERROR([Wrong version of $1. Expected exact version $4. Found $STDOUT]))
54     fi
55    ac_java_classpath=$saved_ac_java_classpath
56 ])
57
58 #------------------------------------------------------------------------
59 # AC_JAVA_CHECK_VERSION_MANIFEST(NAME, JAR, MIN_VERSION, [PRE_PROCESSING], [GREATER_OR_EQUALS])
60 #
61 # Check if the minimal version of a software/package is available or not.
62 # Note that since java does not provide an universal mechanism to detect
63 # the version of a package, we assume that the "Specification-Version" of
64 # the MANIFEST.MF is correct.
65 #
66 # Arguments:
67 #    1. The name of the package (only used in the display of feedbacks)
68 #    2. The name of the jar files used to build against
69 #    3. What is the minimal version expected
70 #    4. Manifest attribute name
71 #    5. Specify if we want the exact version or greater. (equals or greater by
72 #      default).
73 #
74 #------------------------------------------------------------------------
75
76 AC_DEFUN([AC_JAVA_CHECK_VERSION_MANIFEST], [
77     AC_MSG_CHECKING([minimal version ($4 $3) of $1])
78     export JARFILE=$2;
79     if test "x$5" == "x"; then
80     AC_JAVA_TRY_COMPILE([import java.io.IOException;
81 import java.util.jar.JarFile;], [String minVersion="$3";
82         try {
83             String version = new JarFile(System.getenv("JARFILE")).getManifest().getMainAttributes().getValue("$4");
84             System.out.println(version);
85             if (compare(minVersion, version) > 0) {
86                 System.exit(-1);
87             }
88         } catch (IOException e) {
89             System.err.println(e.getMessage());
90             System.exit(1);
91         } ], "yes", echo "yes" , AC_MSG_ERROR([Wrong version of $1. Expected at least $3. Found $STDOUT]))
92     else
93     AC_JAVA_TRY_COMPILE([import java.io.IOException;
94 import java.util.jar.JarFile;], [String minVersion="$3";
95         try {
96             String version = new JarFile(System.getenv("JARFILE")).getManifest().getMainAttributes().getValue("$4");
97             System.out.println("$4" + ": " + version);
98             if (compare(minVersion, version) != 0) {
99                 System.exit(-1);
100             }
101         } catch (IOException e) {
102             System.err.println(e.getMessage());
103             System.exit(1);
104         } ], "yes", echo "yes" , AC_MSG_ERROR([Wrong version of $1. Expected exact version $4. Found $STDOUT]))
105     fi
106     unset JARFILE
107 ])
108