comp.lang.ada
 help / color / mirror / Atom feed
From: "Alex R. Mosteo" <alejandro@mosteo.invalid>
Subject: Re: GprBuild and linker options
Date: Tue, 19 Jul 2011 11:14:52 +0200
Date: 2011-07-19T11:14:52+02:00	[thread overview]
Message-ID: <j03huh$p52$1@dont-email.me> (raw)
In-Reply-To: 30764c54-0e96-4394-9a5c-d742adbc5344@glegroupsg2000goo.googlegroups.com

Felix Krause wrote:

> I need GprBuild to use a custom linker option (in this case, for linking
> against an OSX framework). So I include this in my project file:
> 
> package Linker is
>    for Linker_Options use ("-framework OpenCL", "-v");
> end Linker;
> 
> When I try to build this project, this is the output I get at linking
> phase, which fails:
> 
> /usr/local/gnat/bin/gcc [...] -framework OpenCL -v [...]
> [...]
> COLLECT_GCC_OPTIONS=[...] '-framework OpenCL' '-v' [...]
>  /usr/local/gnat/libexec/gcc/x86_64-apple-darwin10.2.0/4.5.3/collect2
>  [...]
> 
> After that, I get a list of undefined symbols. This is due to "-framework
> OpenCL" not being given to the collect2 call. I have no idea what
> COMPILE_GCC_OPTIONS does, but I noticed my switch being listed there. Now
> when I copypaste the above call to /usr/local/gnat/bin/gcc into my shell
> and execute it there, my switch isn't listed in COLLECT_GCC_OPTIONS
> anymore, but instead is given to the collect2 call, and everything links
> correctly.
> 
> Now of course, I want the build to work directly without having to copy
> commands to the shell. One thing I tried is splitting the switch into two
> strings:
> 
> for Linker_Options use ("-framework", "OpenCL", "-v");
> 
> The linking phase now executes the following:
> 
> /usr/local/gnat/bin/gcc [...] -framework
> /users/felix/projects/libs/openclada//OpenCL -v [...]
> 
> This obviously results in an error because this framework can't be found.
> I searched in the GprBuild user's guide for some hint on what causes this
> behavior, but I didn't find anything. Can anyone tell me how to either
> make the GprBuild execution with "-framework OpenCL" work like when I
> execute it in the shell, or prevent GprBuild from prepending the working
> path to "OpenCL" when passing two strings to Linker_Options?

Since I don't see that you have solved this, here's an example from a 
project of mine, in case it gives any idea:

package Linker is

for Default_Switches ("Ada") use 
Linker'Default_Switches ("Ada") &
("-Lsrc/rtwmp/lib",
"-Wl,-Bstatic",  -- force static linking
"-lrt-wmp",
"-lrt",          --  rt is for system clock_gettime, used by rt-wmp
"-Wl,-Bdynamic", -- restore default dynamic linking needed by other libs
"");
 
--  This form works when the current open project is a descendant.
for Linker_Options use Linker'Linker_Options &
 ("-Lsrc/rtwmp/lib");

end Linker;

I'm using both Linker'Default_Switches and Linker_Options. There are subtle 
differences between them, but I couldn't say exactly what right now, nor I 
think I ever could pinpoint them in the manual. They're related to relative 
path interaction with projects that use other projects IIRC. Besides, they 
have changed over the GPL releases.

> Thanks.
> Felix




      parent reply	other threads:[~2011-07-19  9:14 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-18 12:39 GprBuild and linker options Felix Krause
2011-07-18 20:32 ` Simon Wright
2011-07-18 22:51   ` Felix Krause
2011-07-19  5:59 ` anon
2011-07-19  8:20 ` Stephen Leake
2011-07-19 21:05   ` Felix Krause
2011-07-20 12:19     ` Stephen Leake
2011-07-19  9:14 ` Alex R. Mosteo [this message]
replies disabled

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