-
-
Notifications
You must be signed in to change notification settings - Fork 153
/
Copy pathINSTALL
257 lines (177 loc) · 8.01 KB
/
INSTALL
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
Gammu All Mobile Management Utilities - Installation
====================================================
Binaries - Linux
================
Many distributions come with prebuilt Gammu binaries, if you can use
them, it is definitely the easiest thing.
Binaries - Windows
==================
You can download Windows binaries from <http://cihar.com/gammu/>. For
Windows 95, 98 and NT 4.0 you will also need ShFolder DLL, which can be
downloaded from Microsoft:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=6AE02498-07E9-48F1-A5D6-DBFA18D37E0F
From Sources - Requirements
===========================
Gammu does not require anything at all to build, but you might miss some
features. Optional dependencies include:
Bluez-libs
- http://www.bluez.org/
- Bluetooth support on Linux.
libCURL
- http://curl.haxx.se/libcurl/
- New versions notification and phonedb access.
libiconv
- http://www.gnu.org/software/libiconv/
- Support for more charsets in AT engine.
Gettext
- http://www.gnu.org/software/gettext/
- Localization of strings.
MySQL
- http://mysql.com/
- MySQL support in SMSD.
PostgreSQL
- http://www.postgresql.org/
- PostgreSQL support in SMSD.
From Sources - Linux
====================
You need CMake from <http://www.cmake.org> for configuring Gammu.
For compatibility reasons, configure like wrapper is provided, if you
don't need much specific tuning, you can use general "./configure; make;
sudo make install" set of commands.
If you need/want to tweak build a bit more than configure wrapper
provides, you have to use CMake directly. For now, only out of source
build is supported, so you have to create separate directory for build:
> mkdir build
> cd build
Then just configure project:
> cmake ..
Build it:
> make
Test that everything is okay:
> make test
And finally install it:
> sudo make install
You can configure build parameters either by command line (see
parameters bellow), or using TUI - ccmake.
Useful cmake parameters:
-DBUILD_SHARED_LIBS=ON enables shared library
-DCMAKE_BUILD_TYPE="Debug" enables debug build
-DCMAKE_INSTALL_PREFIX="/usr" change installation prefix
-DENABLE_PROTECTION=OFF disables various compile time protections
against buffer overflows and similar attacks
You can also disable support for whole set of phones, e.g.:
-DWITH_NOKIA_SUPPORT=OFF disables Nokia phones support
-DWITH_Bluez=OFF disables Bluetooth support
-DWITH_IrDA=OFF disables IrDA support
From Sources - Windows
======================
You need CMake from <http://www.cmake.org> for configuring Gammu. CMake
is able to generate projects for various tools including Microsoft
Visual Studio, Borland toolchains, Cygwin or Mingw32. Just click on
CMakeLists.txt in project sources and configure CMake to be able to find
optional libraries (see cross compilation section for more information
about getting those). The result should be project for your compiler
where you should be able to work with it as with any other project.
More detailed and up to date information is maintained on the wiki:
http://www.gammu.org/wiki/index.php?title=Gammu:Compiling/installing_in_Windows
Borland toolchain - you can download compiler at
<http://www.codegear.com/downloads/free/cppbuilder>. You need to add
c:/Borland/BCC55/Bin to system path (or manually set it when running
CMake) and add -Lc:/Borland/BCC55/Lib -Ic:/Borland/BCC55/Include
-Lc:/Borland/BCC55/Lib/PSDK to CMAKE_C_FLAGS in CMake (otherwise
compilation fails).
From Sources - Mac OS X
=======================
Gammu should be compilable on Mac OS X, see wiki for up to date
instrucitons:
http://www.gammu.org/wiki/index.php?title=Gammu:Compiling/installing_on_Mac_OS_X
Cross compilation for Windows on Linux
======================================
Only cross compilation using CMake has been tested. You need to install
MinGW cross tool chain and run time. On Debian you can do it by apt-get
install mingw32. Build is then quite simple:
mkdir build-win32
cd build-win32
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake
make
If your MinGW cross compiler binaries are not found automatically, you
can specify their different names in cmake/Toolchain-mingw32.cmake.
To build just bare static library without any dependencies, use:
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_MySQL=OFF \
-DWITH_Postgres=OFF \
-DWITH_GettextLibs=OFF \
-DWITH_Iconv=OFF \
-DWITH_CURL=OFF \
To be compatible with current Python on Windows, we need to build
against MSVCR71, to achieve this, libmoldname71 library is needed. It
will be hopefully part of next MinGW release, but for now you can build
it following way:
1. Get moldname.def.in from MinGW-runtime sources.
2. Get MinGW-runtime.
3. Execute following commands (crafted for Debian):
i586-mingw32msvc-ar x /usr/i586-mingw32msvc/lib/libmoldname.a isascii.o iscsym.o iscsymf.o toascii.o strcasecmp.o strncasecmp.o wcscmpi.o
i586-mingw32msvc-gcc -DRUNTIME=71 -D__FILENAME__=moldname-71.def -D__MSVCRT__ -C -E -P -xc-header moldname.def.in >moldname-71.def
i586-mingw32msvc-dlltool -k -U --dllname msvcr71.dll --def moldname-71.def --output-lib libmoldname71.a
i586-mingw32msvc-ar rc libmoldname71.a isascii.o iscsym.o iscsymf.o toascii.o strcasecmp.o strncasecmp.o wcscmpi.o
i586-mingw32msvc-ranlib libmoldname71.a
Information taken from <http://www.pygame.org/wiki/PreparingMinGW>.
Furthermore you need to change specs definition for GCC, on Debian you
can do this by editing /usr/bin/i586-mingw32msvc-gcc and changing line
where you can find -lmoldname (change -lmoldname to -lmoldname71 and
-lmsvcrt to -lmsvcrt71). Be careful not to change length of string!
There are enough spaces to remove.
Third party libraries
---------------------
The easies way to link with third party libraries is to add path to
their installation to cmake/Toolchain-mingw32.cmake or to list these
paths in CMAKE_FIND_ROOT_PATH when invoking cmake.
MySQL
-----
You can download MySQL binaries from <http://dev.mysql.com/>, but then
need some tweaks:
cd mysql/lib/opt
reimp.exe -d libmysql.lib
i586-mingw32msvc-dlltool --kill-at --input-def libmysql.def \
--dllname libmysql.dll --output-lib libmysql.a
reimp.exe is part of mingw-utils and can be run through wine, I didn't
try to compile native binary from it.
PostgreSQL
----------
You can download PostgreSQL binaries from <http://www.postgresql.org/>,
but then you need to add wldap32.dll library to bin.
Gettext
-------
For Gettext (internationalization support), you need
gettext-0.14.4-bin.zip, gettext-0.14.4-dep.zip, gettext-0.14.4-lib.zip
from <http://gnuwin32.sourceforge.net/>. Unpack these to same directory.
CURL
----
For CURL support, you need curl-7.19.0-devel-mingw32.zip from
<http://curl.haxx.se/>.
Testing
=======
Gammu comes with testsuite which should be run after build. You can do
this using 'make test'. CMake build system uses for testing CTest, which
also includes option to connect to dashboard and submit test results
there, so that they can be reviewed and fixed by others. To participate
in this testing, you need just to run 'make Experimental'. It will
compile current version, run tests and submit data to dashboard:
http://cdash.cihar.com/index.php?project=Gammu
There are some more options for testing:
- make ExperimentalMemCheck
This checks memory accesses using valgrind during tests and submits
report. You need to do this after 'make Experimental' and you can
submit results using 'make ExperimentalSubmit'.
- coverage reports
To get test coverage reports, you need to configure project using
'cmake -DCOVERAGE=ON'
- nightly testing
Currently several machines do compile and test Gammu every night. If
you want to tak part of this, just ensure that your machine executes
test suite every night (preferably after 3:00 CET). You can select
either 'make Nightly' to do regullar testing or 'make
NightlyMemoryCheck' to test with valgrind. Also you can enable
coverage tests as described above.
# vim: et ts=4 sw=4 sts=4 tw=72 spell spelllang=en_us