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:
/opt/csw/lib/sparcv8/libsomething.so
/opt/csw/lib/sparcv9/libsomething.so
/opt/csw/lib/XXXX/libsomething.so
The "best" library, will be automatically picked up by programs that follow our
build standards, linking with '-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.