summaryrefslogtreecommitdiff
path: root/README
blob: 7ac26f7e258cb44460634a940772f5f52f5c1d9e (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
-*- 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
  - SDL2_image >= 2.0.0
  - SDL2_mixer >= 2.0.0
  - SDL2_ttf >= 2.0.0
  - GNU Make
  - GNU pkg-config

  When building from a Git checkout, the following additional packages
  are required:

  - GNU Autoconf
  - GNU Automake

* 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)=

* 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.