link options in mkpkg.sf?
hodge@stsci.edu wrote on Oct 23, 2000
>From the help for mkpkg, and from the existing mkpkg.sf.* files, it looks as if the "$special" feature in mkpkg only allows setting special options for compiling, not for linking. Is this the case? One could certainly change LFLAGS, but this would apply to all packages, rather than to an individual one. Is it possible to specify a link option for individual packages using $special or some other feature of mkpkg? The situation is that on Tru64 Unix, IRAF uses the -taso option to force addresses to fit into 31 bits. As a result of this, according to the DEC documentation, malloc can only allocate up to 256 Mb. A workaround is to link with -non_shared, which allows allocating up to one Gb. See: http://tru64unix.compaq.com/faqs/publications/base_doc/DOCUMENTATION/V51_HTML/ARH9VCTE/TITLE.HTM section A.2, "Using the -taso Option". A new option has been added to calstis that requires that more than 256 Mb be allocated at one time. Using this option, calstis runs out of memory on Tru64 when built with the same mkpkg as is used on Solaris, but it works if -/non_shared is added to LFLAGS. I can add "$ifeq (MACH, alpha) ..." to the calstis mkpkg file, but it seems to me that it would be better if tests on machine type were restricted to such files as stsdas$lib/mkpkg.inc, rather than being scattered around in various packages where they are needed. Phil
Mike Fitzpatrick wrote on Oct 24, 2000
> From the help for mkpkg, and from the existing mkpkg.sf.* files, > it looks as if the "$special" feature in mkpkg only allows setting > special options for compiling, not for linking. Is this the case? > One could certainly change LFLAGS, but this would apply to all > packages, rather than to an individual one. Is it possible to > specify a link option for individual packages using $special or > some other feature of mkpkg? The special files list is only scanned during an update of library modules and not in the final linking of an executable (which is normally done with a '$link' directive), so in short it can't be done using the mkpkg.sf files for a package. Probably what you would need to do for this is an "$ifeq (MACH, alpha) ..." for calstis as you say, and either reset the LFLAGS locally or use it to add the flags to the link line directly. You could also use this in the package lib$mkpkg.inc file to reset LFLAGS for the entire package but this is overkill since it's only needed for one task. Note that the Alpha iraf shared library also imposes a max size for the process of something like 553Mb so you might also want to link using "-z" for processes using the -/non_shared trick to work around the pointer size (calstis already does this, but in general ....). -Mike
Last post on Oct 24, 2000