Updated documentation
This commit is contained in:
parent
f963a3586f
commit
23d5e0bb07
60
README.md
60
README.md
|
|
@ -13,6 +13,10 @@ The new readme is a work in progress.
|
||||||
|
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Documentation](#documentation)
|
- [Documentation](#documentation)
|
||||||
|
- [Types](#types)
|
||||||
|
- [Primitives](#primitives)
|
||||||
|
- [c-bytevector](#c-bytevector)
|
||||||
|
- [Environment variables](#environment-variables)
|
||||||
|
|
||||||
|
|
||||||
## Implementation support tables
|
## Implementation support tables
|
||||||
|
|
@ -115,6 +119,50 @@ Types are given as symbols, for example 'int8 or 'pointer.
|
||||||
Returns the size of given C type.
|
Returns the size of given C type.
|
||||||
|
|
||||||
(**define-c-library** _scheme-name_ _headers_ _object-name_ _options_)
|
(**define-c-library** _scheme-name_ _headers_ _object-name_ _options_)
|
||||||
|
|
||||||
|
Takes a scheme-name to bind the library to, list of C headers as
|
||||||
|
strings, Shared-object name and options.
|
||||||
|
|
||||||
|
The C header strings should not contain "<" or ">", they are added
|
||||||
|
automatically.
|
||||||
|
|
||||||
|
The name of the shared object should not contain suffix like .so or .dll.
|
||||||
|
Nor should it contain any prefix like "lib".
|
||||||
|
|
||||||
|
The options are:
|
||||||
|
|
||||||
|
- additional-versions
|
||||||
|
- Search for additional versions of shared object, given shared object "c"
|
||||||
|
and additional versions "6" "7" on linux the files "libc", "libc.6",
|
||||||
|
"libc.7" are searched for.
|
||||||
|
- Can be either numbers or strings
|
||||||
|
- additional-paths
|
||||||
|
- Give additional paths to search shared objects from
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
(cond-expand
|
||||||
|
(windows (define-c-library libc-stdlib
|
||||||
|
'("stdlib.h")
|
||||||
|
"ucrtbase"
|
||||||
|
'((additional-versions ("0" "6"))
|
||||||
|
(additiona-paths (".")))))
|
||||||
|
(else (define-c-library libc-stdlib
|
||||||
|
(list "stdlib.h")
|
||||||
|
"c"
|
||||||
|
'((additional-versions ("0" "6"))
|
||||||
|
(additiona-paths ("."))))))
|
||||||
|
|
||||||
|
#### Notes
|
||||||
|
|
||||||
|
- Do not cond-expand inside the arguments, that might lead to problems on some
|
||||||
|
implementations.
|
||||||
|
- Do not store options in variables, that might lead to problems on some
|
||||||
|
implementations.
|
||||||
|
- Do pass the headers using quote
|
||||||
|
- As '(... and not (list...
|
||||||
|
- Do pass the options using quote
|
||||||
|
- As '(... and not (list...
|
||||||
define-c-procedure
|
define-c-procedure
|
||||||
define-c-callback
|
define-c-callback
|
||||||
c-bytevector?
|
c-bytevector?
|
||||||
|
|
@ -174,3 +222,15 @@ call-with-address-of
|
||||||
|
|
||||||
string->c-utf8
|
string->c-utf8
|
||||||
c-utf8->string
|
c-utf8->string
|
||||||
|
|
||||||
|
### Environment variables
|
||||||
|
|
||||||
|
Setting environment variables like this on Windows works for this library:
|
||||||
|
|
||||||
|
set "PFFI_LOAD_PATH=C:\Program Files (x86)/foo/bar"
|
||||||
|
|
||||||
|
#### PFFI\_LOAD\_PATH
|
||||||
|
|
||||||
|
To add more paths to where pffi looks for libraries set PFFI\_LOAD\_PATH to
|
||||||
|
paths separated by ; on windows, and : on other operating systems.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,19 @@ R7RS - 0.10.0</title>
|
||||||
implementations, as opposed to being portable by conforming to
|
implementations, as opposed to being portable by conforming to
|
||||||
some specification.</p>
|
some specification.</p>
|
||||||
<p>The new readme is a work in progress.</p>
|
<p>The new readme is a work in progress.</p>
|
||||||
<h2 id="implementation-table">Implementation table</h2>
|
<ul>
|
||||||
|
<li><a href="#installation">Installation</a></li>
|
||||||
|
<li><a href="#documentation">Documentation</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#types">Types</a></li>
|
||||||
|
<li><a href="#primitives">Primitives</a></li>
|
||||||
|
<li><a href="#c-bytevector">c-bytevector</a></li>
|
||||||
|
<li><a href="#environment-variables">Environment
|
||||||
|
variables</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="implementation-support-tables">Implementation support
|
||||||
|
tables</h2>
|
||||||
<h3 id="primitives-1">Primitives 1</h3>
|
<h3 id="primitives-1">Primitives 1</h3>
|
||||||
<table>
|
<table>
|
||||||
<colgroup>
|
<colgroup>
|
||||||
|
|
@ -258,6 +270,20 @@ R7RS - 0.10.0</title>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<h3 id="installation">Installation</h3>
|
||||||
|
<p>Either download the latest release from <a
|
||||||
|
href="https://git.sr.ht/~retropikzel/foreign-c/refs">releases
|
||||||
|
page</a> or git clone , preferably with a tag, and copy the
|
||||||
|
“foreign” directory to your library directory.</p>
|
||||||
|
<p>As an example assuming you have a project and your libraries
|
||||||
|
live in directory called snow in it:</p>
|
||||||
|
<pre><code>git clone https://git.sr.ht/~retropikzel/foreign-c --branch LATEST_VERSION
|
||||||
|
mkdir -p snow
|
||||||
|
cp -r foreign-c/foreign snow/
|
||||||
|
make -C snow/foreign/c <SCHEME_IMPLEMENTATION_NAME></code></pre>
|
||||||
|
<p>With most implementations the make command does not compile
|
||||||
|
anything. When that is the case it will say “Nothing to build on
|
||||||
|
SCHEME_IMPLEMENTATION_NAME.”</p>
|
||||||
<h2 id="documentation">Documentation</h2>
|
<h2 id="documentation">Documentation</h2>
|
||||||
<h3 id="types">Types</h3>
|
<h3 id="types">Types</h3>
|
||||||
<p>Types are given as symbols, for example ’int8 or
|
<p>Types are given as symbols, for example ’int8 or
|
||||||
|
|
@ -321,5 +347,13 @@ R7RS - 0.10.0</title>
|
||||||
bytevector->c-bytevector c-bytevector->bytevector
|
bytevector->c-bytevector c-bytevector->bytevector
|
||||||
call-with-address-of</p>
|
call-with-address-of</p>
|
||||||
<p>string->c-utf8 c-utf8->string</p>
|
<p>string->c-utf8 c-utf8->string</p>
|
||||||
|
<h3 id="environment-variables">Environment variables</h3>
|
||||||
|
<p>Setting environment variables like this on Windows works for
|
||||||
|
this library:</p>
|
||||||
|
<pre><code>set "PFFI_LOAD_PATH=C:\Program Files (x86)/foo/bar"</code></pre>
|
||||||
|
<h4 id="pffi_load_path">PFFI_LOAD_PATH</h4>
|
||||||
|
<p>To add more paths to where pffi looks for libraries set
|
||||||
|
PFFI_LOAD_PATH to paths separated by ; on windows, and : on
|
||||||
|
other operating systems.</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue