In the patches directory of ntl-5.4.2.p7 there are two files which I'd 
consider makefiles (i.e. make would understand them)

-rw-r-----   1 kirkby   1093         443 Mar 24  2008 ntl_makefile
-rw-r--r--   1 kirkby   1093       17194 May 11  2008 mfile

As you can see from the file sizes, there are significant differences 
between the ones that gets uses (mfile) and the one I think is not used 
at all (ntl_makefile)

One difference is the way the shared library is created.


The simplist (ntl_makefile) one says:

libntl.so: $(OBJ)
         $(CXX) -fPIC -shared -o libntl.so $(OBJ)


That looks a pretty logical syntax to me.


Now when one looks at the makefile that actually gets used, the bit for 
compiling the shared library is a lot more complex. Some of that 
complexity is obviously added so that the version number of the ntl is 
put in the library. But other bits I think are unnecessary and results 
in the name of the output file being specified twice (luckily the same 
name!)

What's more, it stops the shared library building if gcc 4.4.0 uses 
Sun's linker, as it complains the output filename has been specified twice.

This is what the new 'makefile' says:

libntl.so: DIRNAME
         - rm -f $(OBJ) # clean, preserving tuning parameters
         make shobj
         $(LINK_CXX) -fPIC -shared -Wl,-soname,lib`cat DIRNAME`.so -o 
lib`cat DIRNAME`.so $(OBJ) $(GMP_LIBDIR) $(GMP_LIB)
         ln -s lib`cat DIRNAME`.so libntl.so


I created a patch which simply removes the "-Wl,-soname,lib`cat 
DIRNAME`.so" This allows ntl to build on Solaris irrespective of whether 
gcc uses the GNU linker (part of binutils) or the Sun linker in 
/usr/ccs/bin/ld.

I suspect the GNU linker is more lax than the Sun one, so does not care 
the fact the name is specified twice.

Before creating a ticket, I thought I'd discuss this.

Note I've only tested my change on Solaris. I've used two versions of 
gcc - one built with the GNU assembler and linker on 't2', the other 
built with the Sun linker and assembler on my own Sun (Blade 2000). The 
revised .spkg works on either.

I have NOT made it Solaris-specific, as I don;t believe the syntax is 
correct. It's better to fix it on all platforms at once in that case.

I could just sumbit my patch for review. But since there is a later 
version of ntl available, I could update that at the same time, so 
instead of having ntl-5.4.2.p7, I create ntl-5.5.1.

I assume updating the version of ntl though would need a lot more 
testing, than what is needed if removing less than a dozen lines from a 
makefile.

Comments ??



Dave

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to