Mercurial > pub > dyncall > dyncall
changeset 333:4e9d3cb9870f
- minor doc cleanups/cosmetics
author | Tassilo Philipp |
---|---|
date | Wed, 27 Nov 2019 19:55:18 +0100 |
parents | 73c528d2cd4d |
children | 1cf6a4a94aca |
files | doc/manual/manual.tex doc/manual/manual_literature.tex doc/manual/manual_overview.tex |
diffstat | 3 files changed, 243 insertions(+), 236 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/manual/manual.tex Sat Nov 23 13:53:28 2019 +0100 +++ b/doc/manual/manual.tex Wed Nov 27 19:55:18 2019 +0100 @@ -1,209 +1,202 @@ -%////////////////////////////////////////////////////////////////////////////// -% -% Copyright (c) 2007-2014 Daniel Adler <dadler@uni-goettingen.de>, -% Tassilo Philipp <tphilipp@potion-studios.com> -% -% Permission to use, copy, modify, and distribute this software for any -% purpose with or without fee is hereby granted, provided that the above -% copyright notice and this permission notice appear in all copies. -% -% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -% -%////////////////////////////////////////////////////////////////////////////// - -% Set the normal line height for the entire document (some command depend on it). -\newcommand{\normallineheight}{10pt} -\documentclass[\normallineheight,a4paper]{article} - - -% Value multiplier. -\newlength\mrbraceheight -\newcommand{\tassimultiply}[2]{% -\setlength{\mrbraceheight}{0pt}% -\newcount\qq% -\qq=1 % Subtract 1 by starting at 1 . -\loop% - \addtolength\mrbraceheight{#2}% - \advance\qq by 1% -\ifnum\qq < #1 \repeat% -} - - -% Conditional if tex4ht is on or not -\newcommand{\ifhtml}[1]{% - \ifx\HCode\Undef \else% - #1% - \fi% -} -\newcommand{\ifnhtml}[1]{% - \ifx\HCode\Undef% - #1% - \fi% -} -\newcommand{\casehtml}[2]{% - \ifx\HCode\Undef% - #2% - \else% - #1% - \fi% -} - - -% Packages. -\usepackage{a4wide} -\usepackage{multirow} -\usepackage{hhline} -\usepackage{color} -\usepackage{colortbl} -\usepackage{bigdelim} -\usepackage{rotating} -\usepackage{graphicx} -\usepackage{moreverb} -\usepackage{listings} -\usepackage{hyperref} -\ifnhtml{\usepackage{watermark}} - - -% Define own commands and style. -\newcommand{\dc}{\emph{dyncall}} -\newcommand{\capi}[1]{% - \noindent% - {\tt #1}% -} -\newcommand{\tab}{\indent} - -\newcommand{\shell}[1]{\noindent{\tt #1}} - -% Multiline table row with left or right curly brace. -%\newcommand{\mrrbrace}[2]{\tassimultiply{#1}{5pt} \multirow{#1}{*}{$\smash{\left. {\vrule height 0pt depth \mrbraceheight width 0pt}\right\}}$#2}} -\newcommand{\mrrbrace}[2]{\rdelim\}{#1}{\normallineheight} \multirow{#1}{*}{#2} } -\newcommand{\mrlbrace}[2]{ \multirow{#1}{*}{#2} \ldelim\{{#1}{\normallineheight}} - - -\newcommand{\tablewidth}{130mm} -%\setlength{\oddsidemargin}{10mm} -%\setlength{\textwidth}{140mm} -%\setlength{\parindent}{0mm} -%\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} - -\newcommand{\ninety}[1]{\begin{sideways}#1\end{sideways}} - -\renewcommand{\paragraph}[1]{% - \par\vspace{12pt}% - \noindent% - \textbf{#1}% - \par% - \vspace{6pt}% -}% - -% Set a watermark, but not when running htlatex -\ifnhtml{% -\watermark{% -\begingroup% -\setlength{\unitlength}{1mm}% -\begin{picture}(0,0)(32,300)% - \includegraphics[scale=1.0]{dyncall_watermark}% -\end{picture}% -\endgroup% -}% -} - - -% Use a sans-serif font. -\renewcommand{\familydefault}{\sfdefault} - - -\definecolor{defbkgd}{gray}{1.0} -\definecolor{gray1}{gray}{0.9} -\definecolor{gray2}{gray}{0.8} -\definecolor{gray3}{gray}{0.7} -\definecolor{gray4}{gray}{0.6} -\definecolor{lightgreen}{rgb}{0.0,1.0,0.0} -\definecolor{darkgreen}{rgb}{0.0,0.6,0.0} - -% Define some column types for our colortables -\usepackage{array} - -\newcommand{\cellcA}{} -\newcommand{\cellcB}{} -\newcommand{\cellcC}{} -\newcommand{\cellcD}{} -\newcolumntype{1}{l} -\newcolumntype{2}{l} -\newcolumntype{3}{l} -\newcolumntype{4}{l} -\newcolumntype{5}{r} -\newcolumntype{6}{r} -\newcolumntype{7}{r} -\newcolumntype{8}{r} -\newcolumntype{A}{p{\tablewidth}} -\newcolumntype{B}{p{\tablewidth}} -\newcolumntype{C}{p{\tablewidth}} -\newcolumntype{D}{p{\tablewidth}} - -% listings package related settings - -\lstset{captionpos=b} -\lstset{frame=tblr} -\lstset{frameround=tttt} -\lstset{basicstyle=\ttfamily} - -% text building blocks -\newcommand{\group}[1]{\textit{$<$#1$>$}} -\newcommand{\sigchar}[1]{'{\tt #1}'} -\newcommand{\sigstr}[1]{"{\tt #1}"} -\newcommand{\cenum}[1]{#1} -\newcommand{\product}[1]{\emph{#1}} - -% colors used to signalize undefined, not used, supported, etc. states. -\newcommand{\marknull}{\cellcolor{white}} -\newcommand{\markcmpl}{\cellcolor{lightgreen}} -\newcommand{\markimpl}{\cellcolor{darkgreen}} -\newcommand{\marknimp}{\cellcolor{red}} -\newcommand{\markunkn}{\cellcolor{yellow}} -\newcommand{\marknotx}{\cellcolor{gray1}} - - -% table of contents config -\setcounter{tocdepth}{3} - - -\begin{document} - -% html output options (that need to come after \begin{document}).. -\ifhtml{ - \Configure{tableofcontents*}{chapter} -} - -% main document content --> -\input{manual_title} -\newpage -\tableofcontents -\newpage -\ifnhtml{ - \listoftables - \listoffigures - \lstlistoflistings -} -\newpage -\input{manual_motivation} -\input{manual_overview} -\input{manual_build} -\input{manual_bindings} -\input{manual_design} -\input{manual_devel} -\input{manual_epilog} -\appendix -\addtocontents{toc}{\protect\pagebreak} -\input{manual_dyncall_api} -\input{manual_dyncallback_api} -\input{manual_dynload_api} -\input{manual_cc} -\input{manual_literature} -\end{document} +%////////////////////////////////////////////////////////////////////////////// +% +% Copyright (c) 2007-2019 Daniel Adler <dadler@uni-goettingen.de>, +% Tassilo Philipp <tphilipp@potion-studios.com> +% +% Permission to use, copy, modify, and distribute this software for any +% purpose with or without fee is hereby granted, provided that the above +% copyright notice and this permission notice appear in all copies. +% +% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +% +%////////////////////////////////////////////////////////////////////////////// + +% Set the normal line height for the entire document (some command depend on it). +\newcommand{\normallineheight}{10pt} +\documentclass[\normallineheight,a4paper]{article} + + +% Value multiplier. +\newlength\mrbraceheight +\newcommand{\tassimultiply}[2]{% +\setlength{\mrbraceheight}{0pt}% +\newcount\qq% +\qq=1 % Subtract 1 by starting at 1 . +\loop% + \addtolength\mrbraceheight{#2}% + \advance\qq by 1% +\ifnum\qq < #1 \repeat% +} + + +% Conditional if tex4ht is on or not +\newcommand{\ifhtml}[1]{% + \ifx\HCode\Undef \else% + #1% + \fi% +} +\newcommand{\ifnhtml}[1]{% + \ifx\HCode\Undef% + #1% + \fi% +} +\newcommand{\casehtml}[2]{% + \ifx\HCode\Undef% + #2% + \else% + #1% + \fi% +} + + +% Packages. +\usepackage{a4wide} +\usepackage{multirow} +\usepackage{hhline} +\usepackage{color} +\usepackage{colortbl} +\usepackage{bigdelim} +\usepackage{rotating} +\usepackage{graphicx} +\usepackage{moreverb} +\usepackage{listings} +\usepackage{hyperref} +\ifnhtml{\usepackage{watermark}} + + +% Define own commands and style. +\newcommand{\dc}{\emph{dyncall}} +\newcommand{\capi}[1]{% + \noindent% + {\tt #1}% +} +\newcommand{\tab}{\indent} + +\newcommand{\shell}[1]{\noindent{\tt #1}} + +% Multiline table row with left or right curly brace. +%\newcommand{\mrrbrace}[2]{\tassimultiply{#1}{5pt} \multirow{#1}{*}{$\smash{\left. {\vrule height 0pt depth \mrbraceheight width 0pt}\right\}}$#2}} +\newcommand{\mrrbrace}[2]{\rdelim\}{#1}{\normallineheight} \multirow{#1}{*}{#2} } +\newcommand{\mrlbrace}[2]{ \multirow{#1}{*}{#2} \ldelim\{{#1}{\normallineheight}} + + +\newcommand{\tablewidth}{130mm} +%\setlength{\oddsidemargin}{10mm} +%\setlength{\textwidth}{140mm} +%\setlength{\parindent}{0mm} +%\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} + +\newcommand{\ninety}[1]{\begin{sideways}#1\end{sideways}} + +\renewcommand{\paragraph}[1]{% + \par\vspace{12pt}% + \noindent% + \textbf{#1}% + \par% + \vspace{6pt}% +}% + +% Set a watermark, but not when running htlatex +\ifnhtml{% +\watermark{% +\begingroup% +\setlength{\unitlength}{1mm}% +\begin{picture}(0,0)(32,300)% + \includegraphics[scale=1.0]{dyncall_watermark}% +\end{picture}% +\endgroup% +}% +} + + +% Use a sans-serif font. +\renewcommand{\familydefault}{\sfdefault} + + +\definecolor{defbkgd}{gray}{1.0} +\definecolor{gray1}{gray}{0.9} +\definecolor{gray2}{gray}{0.8} +\definecolor{gray3}{gray}{0.7} +\definecolor{gray4}{gray}{0.6} +\definecolor{lightgreen}{rgb}{0.0,1.0,0.0} +\definecolor{darkgreen}{rgb}{0.0,0.6,0.0} + +% Define some column types for our colortables +\usepackage{array} + +\newcommand{\cellcA}{} +\newcommand{\cellcB}{} +\newcommand{\cellcC}{} +\newcommand{\cellcD}{} +\newcolumntype{1}{l} +\newcolumntype{2}{l} +\newcolumntype{3}{l} +\newcolumntype{4}{l} +\newcolumntype{5}{r} +\newcolumntype{6}{r} +\newcolumntype{7}{r} +\newcolumntype{8}{r} +\newcolumntype{A}{p{\tablewidth}} +\newcolumntype{B}{p{\tablewidth}} +\newcolumntype{C}{p{\tablewidth}} +\newcolumntype{D}{p{\tablewidth}} + +% listings package related settings + +\lstset{captionpos=b} +\lstset{frame=tblr} +\lstset{frameround=tttt} +\lstset{basicstyle=\ttfamily} + +% text building blocks +\newcommand{\group}[1]{\textit{$<$#1$>$}} +\newcommand{\sigchar}[1]{'{\tt #1}'} +\newcommand{\sigstr}[1]{"{\tt #1}"} +\newcommand{\cenum}[1]{#1} +\newcommand{\product}[1]{\emph{#1}} + + +% table of contents config +\setcounter{tocdepth}{3} + + +\begin{document} + +% html output options (that need to come after \begin{document}).. +\ifhtml{ + \Configure{tableofcontents*}{chapter} +} + +% main document content --> +\input{manual_title} +\newpage +\tableofcontents +\newpage +\ifnhtml{ + \listoftables + \listoffigures + \lstlistoflistings +} +\newpage +\input{manual_motivation} +\input{manual_overview} +\input{manual_build} +\input{manual_bindings} +\input{manual_design} +\input{manual_devel} +\input{manual_epilog} +\appendix +\addtocontents{toc}{\protect\pagebreak} +\input{manual_dyncall_api} +\input{manual_dyncallback_api} +\input{manual_dynload_api} +\input{manual_cc} +\input{manual_literature} +\end{document} +
--- a/doc/manual/manual_literature.tex Sat Nov 23 13:53:28 2019 +0100 +++ b/doc/manual/manual_literature.tex Wed Nov 27 19:55:18 2019 +0100 @@ -1,6 +1,6 @@ %////////////////////////////////////////////////////////////////////////////// % -% Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>, +% Copyright (c) 2007-2019 Daniel Adler <dadler@uni-goettingen.de>, % Tassilo Philipp <tphilipp@potion-studios.com> % % Permission to use, copy, modify, and distribute this software for any @@ -166,6 +166,10 @@ Developing PowerPC Embedded Application Binary Interface (EABI)\\ \url{http://www.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778525699700} +\bibitem{poabi} + Introduction to the PowerOpen ABI\\ + \url{ftp://www.sourceware.org/pub/binutils/ppc-docs/ppc-poweropen/} + \bibitem{ppcelf64abi} 64-bit PowerPC ELF Application Binary Interface Supplement 1.9\\ \url{http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html}
--- a/doc/manual/manual_overview.tex Sat Nov 23 13:53:28 2019 +0100 +++ b/doc/manual/manual_overview.tex Wed Nov 27 19:55:18 2019 +0100 @@ -1,6 +1,6 @@ %////////////////////////////////////////////////////////////////////////////// % -% Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>, +% Copyright (c) 2007-2019 Daniel Adler <dadler@uni-goettingen.de>, % Tassilo Philipp <tphilipp@potion-studios.com> % % Permission to use, copy, modify, and distribute this software for any @@ -117,9 +117,10 @@ } \end{lstlisting} -As you can see, this is more code after all, but completely dynamic. -And definitely less than generated glue-code for each function call, if -used correctly. +This is more code than a direct, hardcoded function call, however it's completely dynamic. +Also, despite this coming with an overhead of more executed code per single function call, +compared to function interface wrapper tools that generate per call glue-code less code is +used overall, . % might want to test this claim against swig, etc. The following are examples from script bindings: @@ -155,28 +156,14 @@ important). The rightmost column gives a brief info about calling convention support or other notes. For detailed info about a platform's support consult the calling convention appendix. -% OLD support matrix -%\begin{table}[h] -%\begin{tabular}{r|*{3}{c!{\color{gray2}\vrule}}*{4}{c!{\color{gray2}\vrule}}*{11}{c!{\color{gray2}\vrule}}} -% & \ninety{\bf Alpha} & \ninety{\bf ARM} & \ninety{\bf ARM64} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS}} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS64}} & \ninety{\bf SuperH} & \ninety{\bf PowerPC} & \ninety{\bf PowerPC64} & \ninety{\bf m68k} & \ninety{\bf m88k} & \ninety{\bf x86} & \ninety{\bf x64} & \ninety{\bf Itanium} & \ninety{\bf SPARC} & \ninety{\bf SPARC64} & \ninety{\bf RISC-V} \\ -% & & & & \ninety{\tiny EB} & \ninety{\tiny EL} & \ninety{\tiny EB} & \ninety{\tiny EL} & & & & & & & & & & & \\ -%\hline -%{\bf Windows family} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \marknotx & \marknotx \\ -%{\bf Linux} & \marknimp & \markcmpl & \markcmpl & \markcmpl & \markunkn & \markunkn & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp \\ -%{\bf macOS / iOS / Darwin} & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markunkn & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\ -%{\bf FreeBSD} & \marknimp & \markcmpl & \markcmpl & \markunkn & \markunkn & \markunkn & \markunkn & \marknotx & \markimpl & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \markcmpl & \marknimp \\ -%{\bf NetBSD} & \marknimp & \markcmpl & \marknotx & \markunkn & \markcmpl & \markunkn & \markunkn & \marknimp & \markimpl & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp \\ -%{\bf OpenBSD} & \marknimp & \markcmpl & \markunkn & \markunkn & \markunkn & \markcmpl & \markunkn & \marknimp & \markunkn & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknotx \\ -%{\bf DragonFlyBSD} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\ -%{\bf Solaris / SunOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \markimpl & \marknotx \\ -%{\bf Plan 9 / 9front} & \marknimp & \marknimp & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \markcmpl & \marknimp & \marknotx & \marknimp & \marknotx & \marknotx \\ -%{\bf Haiku / BeOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ -%{\bf Minix} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ -%{\bf Playstation Portable} & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ -%{\bf Nintendo DS} & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ -%\end{tabular} -%\caption{Supported platforms}% -%\end{table} + +% colors used to signalize undefined, not used, supported, etc. states. +\newcommand{\marknull}{\cellcolor{white}} +\newcommand{\markcmpl}{\cellcolor{lightgreen}} +\newcommand{\markimpl}{\cellcolor{darkgreen}} +\newcommand{\marknimp}{\cellcolor{red}} +\newcommand{\markunkn}{\cellcolor{yellow}} +\newcommand{\marknotx}{\cellcolor{gray1}} \newcommand{\OSwinfam} {\ninety{Windows family} } \newcommand{\OSlinux} {\ninety{Linux} } @@ -245,6 +232,29 @@ \caption{Supported platforms}% \end{table} +% OLD support matrix +%\begin{table}[h] +%\begin{tabular}{r|*{3}{c!{\color{gray2}\vrule}}*{4}{c!{\color{gray2}\vrule}}*{11}{c!{\color{gray2}\vrule}}} +% & \ninety{\bf Alpha} & \ninety{\bf ARM} & \ninety{\bf ARM64} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS}} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS64}} & \ninety{\bf SuperH} & \ninety{\bf PowerPC} & \ninety{\bf PowerPC64} & \ninety{\bf m68k} & \ninety{\bf m88k} & \ninety{\bf x86} & \ninety{\bf x64} & \ninety{\bf Itanium} & \ninety{\bf SPARC} & \ninety{\bf SPARC64} & \ninety{\bf RISC-V} \\ +% & & & & \ninety{\tiny EB} & \ninety{\tiny EL} & \ninety{\tiny EB} & \ninety{\tiny EL} & & & & & & & & & & & \\ +%\hline +%{\bf Windows family} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \marknotx & \marknotx \\ +%{\bf Linux} & \marknimp & \markcmpl & \markcmpl & \markcmpl & \markunkn & \markunkn & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp \\ +%{\bf macOS / iOS / Darwin} & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markunkn & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\ +%{\bf FreeBSD} & \marknimp & \markcmpl & \markcmpl & \markunkn & \markunkn & \markunkn & \markunkn & \marknotx & \markimpl & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \markcmpl & \marknimp \\ +%{\bf NetBSD} & \marknimp & \markcmpl & \marknotx & \markunkn & \markcmpl & \markunkn & \markunkn & \marknimp & \markimpl & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp \\ +%{\bf OpenBSD} & \marknimp & \markcmpl & \markunkn & \markunkn & \markunkn & \markcmpl & \markunkn & \marknimp & \markunkn & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknotx \\ +%{\bf DragonFlyBSD} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\ +%{\bf Solaris / SunOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \markimpl & \marknotx \\ +%{\bf Plan 9 / 9front} & \marknimp & \marknimp & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \markcmpl & \marknimp & \marknotx & \marknimp & \marknotx & \marknotx \\ +%{\bf Haiku / BeOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ +%{\bf Minix} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ +%{\bf Playstation Portable} & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ +%{\bf Nintendo DS} & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ +%\end{tabular} +%\caption{Supported platforms}% +%\end{table} + \subsection{Build Requirements}