From: Jerry on
On Apr 14, 9:08 pm, "John B. Matthews" <nos...(a)nospam.invalid> wrote:
> In article
> <cde1ed80-fcd9-430d-bb96-07556e586...(a)30g2000yqi.googlegroups.com>,
>
>  Jerry <lancebo...(a)qwest.net> wrote:
> > Awesome. In the past I discovered that if I delete the inappropriate
> > linker pragma in i-forbla.adb and link with -largs to the BLAS and
> > LAPACK libraries in the OS X frameworks that I could work around this
> > problem. But this is better. Following your lead, I moved the newly-
> > made i-forbla.o and i-forbla.ali into
>
> > /opt/gnat-gpl-2009/lib/gcc/i386-apple-darwin9.7.0/4.3.4/adalib
>
> For convenience, I wrote a little makefile to build and install a
> modified i-forbla.adb, et al.
>
> <http://home.roadrunner.com/~jbmatthews/misc/groots.html>
>
> --
> John B. Matthews
> trashgod at gmail dot com
> <http://sites.google.com/site/drjohnbmatthews>

Hmmm. I couldn't find it on that page.
Jerry
From: Simon Wright on
Jerry <lanceboyle(a)qwest.net> writes:

> Unfortunately, with the new set-up, building PLplot (to which I wrote
> Ada bindings) now results in the linker complaining of some dylibs,
> "file is not of required architecture."

The SourceForge Leopard GNAT GPL 2009 compiler is 32-bit, while
AdaCore's is 64-bit.

I had a Leopard issue, where libtk was a thin library supporting only
32-bit, so I got the sort of problem you report when using AdaCore's
compiler.

Are you getting the problem with both compilers? if so, I'd expect each
compiler to report the problem with different libraries. And your only
recourse will be to rebuild the offending libraries with the appropriate
compiler. What I've done is to use the matching GNAT compiler; eg for
64-bit,

$ PATH=/opt/gnat-gpl-2009-x86_64/bin:$PATH
$ ./configure ....
$ make

Given that most people don't build GNAT with c++, this is only going to
work if the library concerned is C-based.

You can find what architectures a library supports using lipo (-info or
-detailed_info): in my /opt/gnu/lib I have some of the libraries used
for compiler builds, so I get

$ lipo -info *.a
Architectures in the fat file: libgmp.a are: i386 x86_64
input file libhistory.a is not a fat file
input file libltdl.a is not a fat file
Architectures in the fat file: libmpc.a are: i386 x86_64
Architectures in the fat file: libmpfr.a are: i386 x86_64
input file libreadline.a is not a fat file
Non-fat file: libhistory.a is architecture: i386
Non-fat file: libltdl.a is architecture: i386
Non-fat file: libreadline.a is architecture: i386
From: BrianG on
Jerry wrote:
> On Apr 12, 1:57 pm, Alex Mentis <asmen...(a)gmail.com> wrote:
> snip
>> Are you using GPS as your IDE by any chance? When I run programs
>> using Get_Immediate from inside GPS, Get_Immediate does not work as it
>> should (it requires a CR after the character input). When I run those
>> same programs in an external terminal window it works fine. Perhaps
>> something between your keyboard and your program is buffering your
>> input without your knowledge?
>>
>> Alex
>
> I'm not using GPS, but I thought of the possibility of a problem with
> the development environment which in my case is Apple's Xcode. That's
> why I executed in three other terminal programs (including Apple's
> Terminal.app, the terminal in Path Finder, and something called
> iTerm), but all gave the same result. Which doesn't completely answer
> the question of stealth buffering. But given the discussion above
> about a patch I'm guessing the problem is not weird buffering.
>
> Jerry

When GNAT for DOS/Windows (yeah, a while ago - remember Ada9X?) did
this, I used a 'wimp out' solution:

function KB_Hit return Boolean;
pragma Import(KB_Hit, "kbhit"); --not sure of the syntax
...
exit when KB_Hit;
...
(of course you have to remember to Flush or equiv)

Not pretty, but it worked.

--BrianG

--I'm in a groove now -
-- Or is it a rut?
From: John B. Matthews on
In article
<780f0643-3c51-4cc6-827e-3fd68d477423(a)x12g2000yqx.googlegroups.com>,
Jerry <lanceboyle(a)qwest.net> wrote:

> On Apr 14, 9:08 pm, "John B. Matthews" <nos...(a)nospam.invalid> wrote:
> > In article
> > <cde1ed80-fcd9-430d-bb96-07556e586...(a)30g2000yqi.googlegroups.com>,
> >
> >  Jerry <lancebo...(a)qwest.net> wrote:
> > > Awesome. In the past I discovered that if I delete the inappropriate
> > > linker pragma in i-forbla.adb and link with -largs to the BLAS and
> > > LAPACK libraries in the OS X frameworks that I could work around this
> > > problem. But this is better. Following your lead, I moved the newly-
> > > made i-forbla.o and i-forbla.ali into
> >
> > > /opt/gnat-gpl-2009/lib/gcc/i386-apple-darwin9.7.0/4.3.4/adalib
> >
> > For convenience, I wrote a little makefile to build and install a
> > modified i-forbla.adb, et al.
> >
> > <http://home.roadrunner.com/~jbmatthews/misc/groots.html>
>
> Hmmm. I couldn't find it on that page.

Sorry, it's in the .tgz in numeric/numerics/makefile:

# Ada.Numerics Makefile
#
# Author: John B. Matthews, Gem City Software
# Distribution: GMGPL
# Last Modified: October 2007
#

PREFIX = /usr/local/ada-4.3/lib/gcc/i686-apple-darwin9/4.3.4
OPTS = -a -k -O2
ADAINC = $(PREFIX)/adainclude
ADALIB = $(PREFIX)/adalib
SOURCE = $(wildcard *.ad[sb])
UNITS = $(basename $(wildcard *.ads))
ALIS = $(wildcard *.ali)
OBJS = $(wildcard *.o)

..PHONY: all install uninstall clean test

all:
gnatmake $(OPTS) $(UNITS)

install:
cp $(SOURCE) $(ADAINC)/
cp *.ali $(ADALIB)/
cp *.o $(ADALIB)/

uninstall:
@for file in $(SOURCE); do ${RM} $(ADAINC)/$$file; done
@for file in $(ALIS); do ${RM} $(ADALIB)/$$file; done
@for file in $(OBJS); do ${RM} $(ADALIB)/$$file; done

clean:
${RM} *.ali *.o

test:
@echo "Source files: $(SOURCE)"
@echo "Compilation units: $(UNITS)"
@for file in $(SOURCE); do ls $(ADAINC)/$$file; done
@for file in $(ALIS); do ls $(ADALIB)/$$file; done
@for file in $(OBJS); do ls $(ADALIB)/$$file; done

--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
From: Simon Wright on
The installed .ali files should be made read-only (which may mean adding
-f to the cp, rm calls).

Not sure about the uninstall target -- shouldn't the original be
replaced, if there was one?