1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
-*- mode: org -*-
Guile-SDL2 provides Guile Scheme bindings for the SDL2 C shared
library. The bindings are written in pure Scheme by using Guile's
foreign function interface.
In addition to the SDL2 core library, bindings are also provided for
SDL2_image, SDL2_mixer, and SDL2_ttf.
* Requirements
Guile-SDL2 currently depends on the following packages:
- GNU Guile >= 2.0.9
- SDL2 >= 2.0.0
- GNU Make
- GNU pkg-config
The following packages enable additional features:
- SDL2_image >= 2.0.0
- SDL2_mixer >= 2.0.0
- SDL2_ttf >= 2.0.0
When building from a Git checkout, the following additional packages
are required:
- GNU Autoconf
- GNU Automake
- GNU Texinfo
* Installing
Guile-SDL2 uses the standard GNU build system, so installation
requires the usual incantations:
#+BEGIN_SRC sh
./configure
make
make install
#+END_SRC
To turn off non-core library bindings, the following configure flags
may be used:
#+BEGIN_SRC sh
./configure --with-libsdl2-image=no \
--with-libsdl2-mixer=no \
--with-libsdl2-ttf=no
#+END_SRC
When building from a Git checkout, the following spell is necessary
before running any of the above commands:
#+BEGIN_SRC sh
./bootstrap
#+END_SRC
GNU Guix users may install the current development snapshot
described in =guix.scm= with the following command:
#+BEGIN_SRC sh
guix package -f guix.scm
#+END_SRC
To configure the build properly, run the following:
#+BEGIN_SRC sh
./configure --with-libsdl2-prefix=$(guix build sdl2) \
--with-libsdl2-image-prefix=$(guix build sdl2-image) \
--with-libsdl2-ttf-prefix=$(guix build sdl2-ttf) \
--with-libsdl2-mixer-prefix=$(guix build sdl2-mixer)
#+END_SRC
* Usage
Guile-SDL2 provides modules in the =(sdl2 ...)= namespace, roughly
organized how the SDL2 C header files are organized. See the
=examples= directory for practical examples.
Low-level bindings are available in the =(sdl2 bindings ...)=
namespace, but these are not recommended for normal usage.
Additionally, SDL2 extension library bindings are available in the
following modules:
- SDL2_image: =(sdl2 image)=
- SDL2_mixer: =(sdl2 mixer)=
- SDL2_ttf: =(sdl2 ttf)=
See the =examples= directory for code samples.
* Developing
To build the source code from a Git checkout, run the following:
#+BEGIN_SRC sh
./bootstrap
./configure
make
#+END_SRC
To start a Guile REPL with a pre-configured load path for using
guile-sdl2, use the =pre-inst-env= script:
#+BEGIN_SRC sh
./pre-inst-env guile
#+END_SRC
GNU Guix users may create a development environment with all of the
necessary dependencies by running the following command:
#+BEGIN_SRC sh
guix environment -l guix.scm
#+END_SRC
In order to configure the proper library locations for Guix-based
builds, the configure script should be invoked like so:
#+BEGIN_SRC sh
./configure --with-libsdl2-prefix=$(guix build sdl2) \
--with-libsdl2-image-prefix=$(guix build sdl2-image) \
--with-libsdl2-ttf-prefix=$(guix build sdl2-ttf) \
--with-libsdl2-mixer-prefix=$(guix build sdl2-mixer)
#+END_SRC
* Contact
Bug reports and patches may be sent to <davet@gnu.org>.
The maintainer of this library hangs out in the #guile channel on
irc.freenode.net, so help and general discussion may also be found
there.
|