src/Tools/Setup/src/Setup.java
author wenzelm
Sat, 24 Jul 2021 19:55:10 +0200
changeset 74061 203dfa8bc0fc
parent 74031 09821ca262d3
child 74068 62e4ec8cff38
permissions -rw-r--r--
clarified compiler output: allow multithreaded execution;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
74031
09821ca262d3 clarified directories;
wenzelm
parents: 74029
diff changeset
     1
/*  Title:      Tools/Setup/src/Setup.java
73677
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     3
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     4
Isabelle setup tool: bootstrap from generic Java environment.
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     5
*/
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     6
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     7
package isabelle.setup;
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
     8
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
     9
73677
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
    10
class Setup
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
    11
{
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    12
    private static void echo(String msg)
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    13
    {
73985
eb7112f467a8 more portable: avoid Windows CRLF in classpath output;
wenzelm
parents: 73963
diff changeset
    14
        System.out.print(msg + "\n");
73963
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    15
    }
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    16
    private static void echo_err(String msg)
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    17
    {
73985
eb7112f467a8 more portable: avoid Windows CRLF in classpath output;
wenzelm
parents: 73963
diff changeset
    18
        System.err.print(msg + "\n");
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    19
    }
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    20
    private static void fail(String msg)
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    21
    {
73963
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    22
        echo_err(msg);
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    23
        System.exit(2);
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    24
    }
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    25
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    26
    private static void check_args(boolean b)
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    27
    {
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    28
        if (!b) { fail("Bad command-line arguments"); }
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    29
    }
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    30
73677
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
    31
    public static void main(String[] args)
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
    32
    {
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    33
        int n = args.length;
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    34
        check_args(n > 0);
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    35
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    36
        String op = args[0];
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    37
        try {
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    38
            switch (op) {
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    39
                case "build":
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    40
                    check_args(n == 1);
74061
203dfa8bc0fc clarified compiler output: allow multithreaded execution;
wenzelm
parents: 74031
diff changeset
    41
                    Build.build_components(System.err, false);
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    42
                    break;
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    43
                case "build_fresh":
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    44
                    check_args(n == 1);
74061
203dfa8bc0fc clarified compiler output: allow multithreaded execution;
wenzelm
parents: 74031
diff changeset
    45
                    Build.build_components(System.err, true);
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    46
                    break;
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    47
                case "classpath":
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    48
                    check_args(n == 1);
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    49
                    echo(Environment.join_standard_paths(Build.classpath()));
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    50
                    break;
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    51
                case "services":
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    52
                    check_args(n == 1);
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    53
                    for (String s : Build.services()) { echo(s); }
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    54
                    break;
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    55
                default:
74029
0701ff55780d clarified build_props: empty module means no build;
wenzelm
parents: 73985
diff changeset
    56
                    fail("Bad setup operation " + Library.quote(op));
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    57
                    break;
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    58
            }
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    59
        }
73963
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    60
        catch (Throwable exn) {
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    61
            echo_err(Exn.print_error(exn));
59b6f0462086 clarified modules;
wenzelm
parents: 73962
diff changeset
    62
            System.exit(Exn.return_code(exn, 2));
73962
5351719ab2a0 support for command-line operations;
wenzelm
parents: 73912
diff changeset
    63
        }
73677
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
    64
    }
73c50ce808ed basic setup of Isabelle setup tool --- pure Java, no dependencies;
wenzelm
parents:
diff changeset
    65
}