comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: how to tell gnatmake to send executables to a different directory when compiling multi source?
Date: Mon, 30 Jul 2012 17:05:26 -0400
Date: 2012-07-30T17:05:26-04:00	[thread overview]
Message-ID: <wccipd5c63t.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: jv53nb$1jr$1@speranza.aioe.org

"Nasser M. Abbasi" <nma@12000.org> writes:

> 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).

The make file you show below looks perfectly reasonable to me.
It's simple, and is not recursive.  If you don't want to waste
time learning gnatmake/gprbuild/project files, and you don't
need that functionality, this is a reasonable approach.

But I don't understand your reference to "recursive make" above.
You don't need recursive make in order to do "make" from the top
of the tree and build everything.  If your Ada files are scattered
all over a bunch of subdirectories, you can just mention those
directories with the -I switch.  If you have C files mixed in,
that doesn't change things -- you still don't need recursive
make.

This make file doesn't put the executables where you wanted them,
but it's not hard to write some rules that will copy or move them,
or create links.

But I advise you to not let your make files get complicated,
and try to avoid recursive make.  The paper somebody mentioned
explains why recursive make causes trouble, and why you don't
need it.

> 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
> ----------------------------

- Bob



  reply	other threads:[~2012-08-07  7:16 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
2012-07-30 21:05                         ` Robert A Duff [this message]
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