view doc/README.SunOS @ 533:71c884e610f0

- integration of patches from Raphael Luba, Thekla, Inc.: * integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv) * windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.) * see Changelog for details - new calling convention modes for thiscalls (platform agnostic, was specific before) * new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL) - dcCallF(), dcVCallF(), dcArgF() and dcVArgF(): * added support for aggregates-by-value (wasn't part of patch) * change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change) - added macros to feature test implementation for aggregate-by-value and syscall support - changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order - doc: * man page updates to describe aggregate interface * manual overview changes to highlight platforms with aggregate-by-value support - test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author Tassilo Philipp
date Thu, 21 Apr 2022 13:35:47 +0200
parents c81374ac9fba
children
line wrap: on
line source

Building DynCall on Solaris and other SunOS distributions
=========================================================


Current Status of Solaris Architectures:

i386      : ok.
AMD64     : ok.
SPARC     : ok.
SPARC64   : bugs in dyncall (see BUGS).

Supported Compilers: SunPro C/C++ compiler and GCC.
Supported Build-Systems: configure/make, Makefile.embedded and CMake.


Details
=======
It has been ported and tested for x86 and sparc32/64 on Solaris 10/X86 
using the SunPro compiler suite and sun's make. The same goes for
OpenSolaris distributions - the library builds and runs fine on Nexenta
x86 and x64.
On Solaris, it also cross-builds for amd64 just fine, but the we don't
have access to a x64 Solaris to run the tests.


Building DynCall:
-----------------

  $ ./configure
  $ make



It is also possible to use 'Makefile.embedded' for sun make, GNU make and
BSD make:


Build with SUN make and compilers from sun using Makefile.embedded:
-------------------------------------------------------------------

  $ make -f Makefile.embedded sun
  $ (cd test; make -f Makefile.embedded sun)


Build for sparc64 with SUN make and compilers from sun using Makefile.embedded:
-------------------------------------------------------------------------------

  $ make -f Makefile.embedded sun-64bit
  $ (cd test; make -f Makefile.embedded sun-64bit)


Build with SUN make and GNU C compiler using Makefile.embedded:
---------------------------------------------------------------

  $ make -f Makefile.embedded sun-gcc
  $ (cd test; make -f Makefile.embedded sun-gcc)
 

Build for sparc64 with SUN make and GNU C compiler using Makefile.embedded:
---------------------------------------------------------------------------

  $ make -f Makefile.embedded sun-gcc-64bit
  $ (cd test; make -f Makefile.embedded sun-gcc-64bit)


NOTE: There are still issues with the sparc64 port on Solaris.


Build with CMake, Sun make and SunPro for sparc64:
--------------------------------------------------

  $ cmake -DCMAKE_C_FLAGS=-m64 -DCMAKE_ASM_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64 .
  $ make

Installation
------------

  $ make -f Makefile.embedded PREFIX=<some/prefix> install


Tested Platforms
----------------

x86/amd64: 
  - using Solaris 10 using SunPro Tools
  - using Nexenta (SunOS 5.11 kernel) using GNU tools

sparc 32/64 bit:
  - SunOS 5.1 using SunPro and GCC on a Sun Fire V440 via developer account
    thanks to gwdg.de!