[GRASS-dev] iostream issues (formerly r.viewshed ready for testing)

Will willster3021 at gmail.com
Tue Aug 5 11:26:57 EDT 2008


Hi Paul,

So, I think I know what is causing the problems with r.terraflow and
r.viewshed, and I solved it with r.terraflow.  r.terraflow needed the change
in line you outlined earlier (changing IOSTREAMDEP =
$(ARCH_LIBDIR)/$(LIB_PREFIX)$(IOSTREAM_LIBNAME)$(LIB_SUFFIX) to IOSTREAMDEP
= (ARCH_LIBDIR)/$(LIB_PREFIX)$(IOSTREAM_LIBNAME)$(STLIB_SUFFIX) in
Grass.make.in) in both Grass.make.in and Grass.make.  So, r.terraflow is all
set (at least for me).

r.viewshed is a completely different issue.  It seems like it isn't able to
see iostream at all - if I remove the include line for iostream, I get the
exact same errors.  I think this is probably because of the unusual makefile
r.viewshed has.  We weren't able to get a makefile like r.terraflow to work
with r.viewshed, so we more or less rewrote everything.  I'll try to mess
around with it, and make it use more standard grass makefiles rather than
rewriting them, but I'm not very familiar with how GRASS makes things, so I
may not have much luck.  If you or anyone else could take a look at the
makefile, and try to make it more standard, I would appreciate it.

I'll keep you posted on any updates,
-Will

On Mon, Aug 4, 2008 at 8:26 PM, Glynn Clements <glynn at gclements.plus.com>wrote:

>
> Paul Kelly wrote:
>
> > > So I got the trunk version of GRASS, and compiled it, but iostream and
> > > r.terraflow gave me errors.  As the instructions say, I tackled the
> iostream
> > > error first, and I can't figure out what's wrong with it.   Here is
> what I
> > > get if I call make in grass_trunk/lib/iostream
> > >
> > > cc -dynamiclib -compatibility_version 7.0 -current_version 7.0
> -install_name
> >    ^^
> > GRASS is trying to use the C compiler to create the shared library - this
> > worked on Linux so I didn't notice it but obviously that must have been
> > just luck and it seems not to work on OS X. This clearly is something I
> > need to look at and try to fix - none of the other libraries contain C++
> > code so this hasn't come up before.
>
> Another issue with making IOStream a dynamic library is that
> Shlib.make only adds $(SHLIB_CFLAGS) to CFLAGS, not to CXXFLAGS.
>
> On Linux, this causes the code to be compiled without -fPIC, resulting
> in:
>
>        warning: creating a DT_TEXTREL in object.
>
> Normally, this is just an efficiency issue (the library won't actually
> be shared; each process will have a separate copy), but it won't work
> on systems running SELinux (to perform relocation, the code segment
> has to be modified, and SELinux won't let it regain execute permission
> after it has been modified).
>
> Also, the effect will vary between platforms. The Darwin case in
> SC_CONFIG_FLAGS has:
>
>            SHLIB_CFLAGS="-fno-common"
>
> ISTR that this may be a necessity for building dynamic libraries on
> that platform.
>
> I'll commit a fix for this as soon as I have tested it.
>
> --
> Glynn Clements <glynn at gclements.plus.com>
>



-- 
-Will
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-dev/attachments/20080805/50c468f0/attachment.html


More information about the grass-dev mailing list