comp.lang.ada
 help / color / mirror / Atom feed
From: "Nasser M. Abbasi" <nma@12000.org>
Subject: Re: how to tell gnatmake to send executables to a different directory when compiling multi source?
Date: Sun, 29 Jul 2012 23:48:43 -0500
Date: 2012-07-29T23:48:43-05:00	[thread overview]
Message-ID: <jv53nb$1jr$1@speranza.aioe.org> (raw)
In-Reply-To: jv4tdn$mgc$1@speranza.aioe.org

On 7/29/2012 10:01 PM, Nasser M. Abbasi wrote:

> I can just write
>
>              gnatmake -I ...  *.adb
>
> from inside Makefile and that is all. It knows what files to compile
> as needed.
>

For completion's sake, and for future generations :), I thought
to show how I ended up doing a simple Makefile that uses gnatmake
to build a project.

Make is only used here as a 'wrapper' around gnatmake. gnatmake is
the one doing the real work. Only reason to use Make is really just
so that to avoid using bash scripts and to also allow recusrive make
to work (so that I can write make from the top of the tree and
have things build).

Here is a simple example. Assume you have a folder with 2 main files
(main1.adb and main2.adb) and want to build them, and they depend on
other ada packages in another folder(s).

Then put this Makefile in the folder with the main ada files

--------------------------------------
EXECUTABLE=main1 main2

.PHONY: all
all: ${EXECUTABLE}

.PHONY: FORCE

${EXECUTABLE}: FORCE
	gnatmake  -I../binding $@.adb -largs -L/usr/lib -lblas -llapack

FORCE:

clean:
	-rm ${EXECUTABLE}
	-rm *.ali
	-rm *.o
----------------------------

The FORCE trick above forces Make to invoke gnatmake each time. That is
OK, since gnatmake then decided if it needs to actually compile things
or not.

In the above example, `-I` just points to other folders that have Ada sources
that have packages with'ed by these files. (this is all normal gnatmake
stuff here).

So, all what one needs to do is

make

In the above, all output (exeutables and ali files and .o files are
generated in the same folder).

make clean

will clean everything. Now one can add more target to the Makefile
to do other things, like run a specific test, etc... i.e.
Normal Makefile things.

--Nasser



  reply	other threads:[~2012-08-02 12:24 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-29  9:31 how to tell gnatmake to send executables to a different directory when compiling multi source? Nasser M. Abbasi
2012-07-29 10:00 ` Dmitry A. Kazakov
2012-07-29 11:35   ` Nasser M. Abbasi
2012-07-29 12:29     ` Patrick
2012-07-29 13:02       ` Nasser M. Abbasi
2012-07-29 13:49         ` Ludovic Brenta
2012-07-29 14:09           ` Nasser M. Abbasi
2012-07-29 15:35             ` Ludovic Brenta
2012-07-29 15:42               ` Patrick
2012-07-29 16:41                 ` Ludovic Brenta
2012-07-29 16:46                   ` Patrick
2012-07-29 17:35               ` Vasiliy Molostov
2012-07-29 19:40                 ` Dmitry A. Kazakov
2012-07-29 22:22                   ` Vasiliy Molostov
2012-07-29 19:46                 ` Robert A Duff
2012-07-30  0:20                   ` Vasiliy Molostov
2012-07-30  3:01                     ` Nasser M. Abbasi
2012-07-30  4:48                       ` Nasser M. Abbasi [this message]
2012-07-30 21:05                         ` Robert A Duff
2012-07-30  5:50                       ` Dmitry A. Kazakov
2012-07-30 11:16                       ` Vasiliy Molostov
2012-07-30 12:25                         ` Georg Bauhaus
2012-07-30 12:59                           ` Vasiliy Molostov
2012-07-30 14:07                             ` Georg Bauhaus
2012-07-30 13:03                           ` Nasser M. Abbasi
2012-07-30 14:02                             ` Georg Bauhaus
2012-07-30 19:40                             ` J-P. Rosen
2012-08-01  7:32                               ` Miles Bader
2012-08-01  9:37                                 ` Ludovic Brenta
2012-08-02  5:01                                   ` Miles Bader
2012-08-01 15:15                                 ` J-P. Rosen
2012-08-02 15:08                                   ` Robert A Duff
2012-08-02 16:37                                     ` J-P. Rosen
2012-07-30 19:50                             ` Ludovic Brenta
2012-07-30  3:21                     ` Nasser M. Abbasi
2012-07-30  8:19                       ` Simon Wright
2012-07-30  6:12                     ` Dirk Heinrichs
2012-07-30  6:40                     ` Ludovic Brenta
2012-07-30 10:31                       ` Vasiliy Molostov
2012-07-30 11:05                         ` Ludovic Brenta
2012-07-30 11:33                           ` Simon Wright
2012-07-30 12:16                           ` Vasiliy Molostov
2012-07-30 12:48                             ` Ludovic Brenta
2012-07-30 13:09                               ` Vasiliy Molostov
2012-07-30  6:06                 ` Dirk Heinrichs
2012-07-29 12:31     ` Nasser M. Abbasi
2012-07-29 13:46       ` Ludovic Brenta
2012-07-29 14:15         ` Simon Wright
2012-07-29 13:54     ` Dmitry A. Kazakov
2012-07-29 14:16       ` Nasser M. Abbasi
2012-07-29 14:32         ` Dmitry A. Kazakov
2012-07-30  5:57     ` General purpose build tools (was: Re: how to tell gnatmake to send executables to a different directory when compiling multi source?) Dirk Heinrichs
2012-07-30 10:50       ` Vasiliy Molostov
2012-07-30 11:10         ` Ludovic Brenta
2012-07-30 12:39           ` Vasiliy Molostov
2012-08-30 10:49           ` General purpose build tools Stephen Leake
2012-07-29 18:33 ` how to tell gnatmake to send executables to a different directory when compiling multi source? björn lundin
2012-07-29 19:06 ` onox
2012-07-31 11:12 ` Patrick
2012-07-31 11:30   ` Dmitry A. Kazakov
2012-07-31 11:31     ` Dmitry A. Kazakov
2012-07-31 11:34       ` Patrick
2012-07-31 12:33   ` Ludovic Brenta
2012-07-31 15:14     ` Patrick
2012-07-31 16:04       ` Ludovic Brenta
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox