summaryrefslogtreecommitdiff
path: root/README
blob: dc12cbcded84a6c16644f40a6032d8361893f68a (plain)
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 | tail -1) \
                --with-libsdl2-image-prefix=$(guix build sdl2-image | tail -1) \
                --with-libsdl2-ttf-prefix=$(guix build sdl2-ttf | tail -1) \
                --with-libsdl2-mixer-prefix=$(guix build sdl2-mixer | tail -1)
  #+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.libera.chat, so help and general discussion may also be found
  there.