[BuildTools-tickets] [BuildTools] #69: HSL ThirdParty build system in IpOpt out of date
BuildTools
coin-trac at coin-or.org
Tue Jan 4 06:16:57 EST 2011
#69: HSL ThirdParty build system in IpOpt out of date
-------------------+--------------------------------------------------------
Reporter: jhogg | Owner: andreasw
Type: defect | Status: new
Priority: major | Component: configuration tests
Version: 0.5 | Resolution:
Keywords: |
-------------------+--------------------------------------------------------
Comment (by stefan):
Hi,
Replying to [ticket:69 jhogg]:
> STFC now distribute codes and their dependencies in separate files. For
example let us consider MA57, observing that no naming scheme is given
when downloading the file (it just appears as text in the browser).
>
> We have wlog two files:
> ma57d.f
> ma57d.deps.f
>
> The current build system expects a single file ma57ad.f. This models how
things used to be done - since these scripts were written it seems that
renaming and management practice changes have occurred.
>
> Obviously in this case [and for all F77 codes] we can trivially work
around this by concatenating and renaming the result ma57ad.f.
Yes. You think one still needs to change the buildsystem then?
I just downloaded MA57 and got a tar archive, which contained among others
the files ma57d.f and ddeps.f. I then concatenate these files into
ma57ad.f and tried a build.
The build failed on multiple symbols because ddeps.f containes MC21AD and
MC21BD, which are already in my ma21ad.f, which seem to be used for MA28.
So I remove the duplicate routines from my ma57ad.f and try again.
Now !ThirdParty/HSL builds fine but Ipopt does not link because I did not
provide FD15.
So I download also FD15, add the fd15d.f to the end of ma57ad.f, try
again, and things seem to work fine.
I believe the buildsystem could be adapted to the current way how HSL
provides the routines, but it then may not work anymore for users who did
not download the HSL anew.
Maybe it would be better to update only the Ipopt documentation for the
current system?
> I am currently in the process of adding an interface to HSL_MA77 which
is a Fortran 90 code. As a result we have three files:
> hsl_ma77d.f90
> hsl_ma77d.deps.f90
> hsl_ma77d.deps.f
>
> We have dependencies in both fixed and free source formats, so
concatenating these files will produce compile errors. Further we need to
add a dependency to ensure that the f90 deps are compiled before the f90
code so the module files are readable.
From a look on the buildsystem, it seems that this has all be done.
> We should also endeavor to ensure the f77 and f90 compilers used are
compatible - I've seen some nasty messes with automake choosing g77 (GNU)
and f95 (NAG) compilers which don't produce stuff one can easily link
together due to underscoring practices. I neat solution might be to
default to using the F95 ($FC) compiler to compile F77 code in place of
the ($F77) compiler.
>
> I don't have the necessary knowledge of automake and the Ipopt build
system to easily make these changes myself however.
There is, as far as I know, no option in the buildsystem to specify a F95
compiler ($FC). F90 code just gets compiled by $F77, hoping that it's a
compiler that also supports F95. It gives an error message if this is not
the case, so the user can specify explicitely which fortran compiler to
use.[[BR]]
We also recently changed the order in which compilers are searched for on
!Linux/Gnu systems. I.e., it now looks first for gfortran, then to fort77.
Stefan
--
Ticket URL: <https://projects.coin-or.org/BuildTools/ticket/69#comment:1>
BuildTools <http://projects.coin-or.org/BuildTools>
Tools for configuring and compiling COIN-OR codes
More information about the BuildTools-tickets
mailing list