From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:a24:ed8c:: with SMTP id r134mr1388369ith.30.1547244011008; Fri, 11 Jan 2019 14:00:11 -0800 (PST) X-Received: by 2002:a9d:148:: with SMTP id 66mr31689otu.5.1547244010685; Fri, 11 Jan 2019 14:00:10 -0800 (PST) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.166.216.MISMATCH!q69no113597itb.0!news-out.google.com!v71ni151ita.0!nntp.google.com!q69no113592itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Fri, 11 Jan 2019 14:00:10 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=174.1.36.131; posting-account=iM1VZQoAAACb8ntkBErEJ9kignmJKjw2 NNTP-Posting-Host: 174.1.36.131 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <3fd9efd3-2ac5-4711-a1bc-fb75c57d7ffa@googlegroups.com> Subject: New tool "gprexec", basically "make with project file" From: VM Celier Injection-Date: Fri, 11 Jan 2019 22:00:11 +0000 Content-Type: text/plain; charset="UTF-8" Xref: reader01.eternal-september.org comp.lang.ada:55266 Date: 2019-01-11T14:00:10-08:00 List-Id: I am starting a new project that I have been thinking for several years: gprexec. gprexec is a "Make build automation tool using GPR project files to describe goals, dependencies, and processes". It uses a new package: Execution. Here is an example of a project that can be used by gprexec: project Toto is for Main use ("toto.adb"); package Execution is for Process ("display_main") use ("cat", "toto.adb"); for Dependency ("display") use ("display_main"); for Process ("display") use ("cat", "toto.gpr"); for Process ("date") use ("date"); for Process ("toto") use ("gprbuild", "-f", "-q", "toto.gpr"); for Dependency ("default") use ("display", "toto", "date"); for Process ("default") use ("toto"); end Execution; end Toto; Package Execution has these attributes: - Dependency, to indicate the goals that need to be processed before the indexed goal. - Process, to indicate the process to be invoked, with its arguments, for the indexed goal. gprexec needs to be invoked with a single project file and an optional goal. When no goal is specified on the command line, the goal "default" is implied. For example with the project file toto.gpr above, invoking gprexec toto.gpr the goal default will be used, and according to the dependencies processes will be invoked in the following order: (goal "display_main): cat toto.adb (goal "display"): cat toto.gpr (goal "toto"): gprbuild -f -q toto.gpr (goal "date"): date (goal "default"): toto After displaying the main toto.adb and the project file toto.gpr, toto.adb is compiled, bound and linked, the date is displayed and the executable "toto" is invoked. gprexec uses the project file "gpr.gpr", part of the gprbuild repository. I just created a public repository for gprexec on Github: https://github.com/vmcelier/gprexec Anybody interested? -- Vincent Celier (no longer associated with AdaCore)