It is possible to provide a single package, that provides architecture-specific optimized versions of executables and libraries.Where there is significant performance gain achievable, this behaviour is strongly encouraged for our package maintainers.
It is sometimes possible/beneficial to provide cpu-optimized libraries, even if there are no cpu-optimized binaries using it.
(eg: generic binary, but cpu-specific-optimized crypto libs)
It is sometimes possible/beneficial to provide cpu-optimized binaries, even if there are no matching cpu-optimized libraries for it to use. (except for the case of "i want to build a (64,32)bit executable but a similar "bittedness" library is not available" !)
If you are building libraries, and are providing multiple versions of a library (each compiled for specific CPU types), then place your libraries in the appropriate subdir of /opt/csw/lib. eg:
The "best" library, will be automatically picked up by programs that follow our build standards, linking with/opt/csw/lib/sparcv8/libsomething.so /opt/csw/lib/sparcv9/libsomething.so /opt/csw/lib/XXXX/libsomething.so'-R/opt/csw/lib/$ISALIST'
If you are building an executable, and wish to provide multiple versions of it, each compiled for a specific CPU type, then place your program in the appropriate subdir of /opt/csw/bin. You must also 'depend' on CSWisaexec, and adjust your prototype file to make your program be a hard link to isaexec.
# In "prototype" file: l none /opt/csw/bin/yourprog=isaexec # In "depend" file: P CSWisaexec # File layout /opt/csw/bin/sparcv8/yourprog /opt/csw/bin/sparcv9/yourprog /opt/csw/bin/XXXX/yourprog /opt/csw/bin/yourprog [hardlinked to isaexec]
Possible values of "XXXX" for a specific platform, are given by the output of the "isalist" program.