Added Cygwin Build README and patch

This commit is contained in:
ied206 2015-06-16 00:52:56 +09:00
parent 44286cd15e
commit 141982f5e3
2 changed files with 84 additions and 0 deletions

55
README-Cygwin.md Executable file
View File

@ -0,0 +1,55 @@
### Installation on Windows
To use telegram-cli in Windows, you should compile with Cygwin which has POSIX API functionality.
First, Clone GitHub Repository
git clone --recursive https://github.com/vysheng/tg.git
Install [Cygwin](https://www.cygwin.com/) and cygwin's package manager, [apt-cyg](https://github.com/transcode-open/apt-cyg).
On Cygwin Terminal, install compiler and tools :
apt-cyg install cygwin32-gcc-core cygwin32-gcc-g++ gcc-core gcc-g++ make wget patch diffutils grep tar gzip
Now you have a compiler, but no libraries. You need readline, openssl, libconfig, liblua, python and libjansson to use telegram-cli's full functionality.
On Cygwin Terminal, type:
apt-cyg install libevent-devel openssl-devel libreadline-devel lua-devel python3
(Install package 'python' to use Python 2.7, or install package 'python3' to use Python 3)
libconfig and libjansson is not in cygwin's package, so you should compile yourself.
Compile libconfig :
wget http://www.hyperrealm.com/libconfig/libconfig-1.5.tar.gz
tar xvf libconfig-1.5.tar.gz && cd libconfig-1.5
./configure
make && make install && cd ..
Compile libjansson :
wget http://www.digip.org/jansson/releases/jansson-2.7.tar.gz
tar xvf jansson-2.7.tar.gz && cd jansson-2.7
./configure
make && make install && cd ..
Then, in telegram-cli's directory,
./configure
We need to patch Makefile and loop.c to compile in cygwin. Download this [diff](https://gist.github.com/ied206/d774a445f36004d263ab) then untar. Then, patch in 'tg' directory.
cd tg
patch -p1 < telegram-cli-cygwin.diff
Then
make
There will be some warnings, but you can ignore them. After compile is done, **telegram-cli.exe** will be generated in **bin** directory.
To run telegram-cli, type
bin/telegram-cli -k tg-server.pub
**Caution**: Binary compiled with Cygwin should be run in Cygwin Terminal, since it assumes unix-like shell, and it is dependent on cygwin dlls.

29
telegram-cli-cygwin.diff Executable file
View File

@ -0,0 +1,29 @@
diff -urN telegram-cli/Makefile telegram-cli-mod/Makefile
--- telegram-cli/Makefile 2015-06-16 00:15:06.735779700 +0900
+++ telegram-cli-mod/Makefile 2015-06-16 00:17:10.884076800 +0900
@@ -4,9 +4,9 @@
LDFLAGS= -L/usr/local/lib -L/usr/lib -L/usr/lib -L/usr/lib
CPPFLAGS= -I/usr/local/include -I/usr/include -I/usr/include -I/usr/include/python3.4m -I/usr/include
DEFS=-DHAVE_CONFIG_H
-COMPILE_FLAGS=${CFLAGS} ${CPFLAGS} ${CPPFLAGS} ${DEFS} -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-deprecated-declarations -fno-strict-aliasing -fno-omit-frame-pointer -ggdb -Wno-unused-parameter -fPIC
+COMPILE_FLAGS=${CFLAGS} ${CPFLAGS} ${CPPFLAGS} ${DEFS} -Wall -Wextra -Wno-missing-field-initializers -Wno-deprecated-declarations -fno-strict-aliasing -fno-omit-frame-pointer -ggdb -Wno-unused-parameter -fPIC
EXTRA_LIBS=-ljansson -lconfig -lz -levent -lm -lreadline -llua-5.2 -lpython3.4m -lssl -lcrypto
-LOCAL_LDFLAGS=-rdynamic -ggdb -levent ${EXTRA_LIBS} -ldl -lpthread -lutil
+LOCAL_LDFLAGS=-ggdb -levent ${EXTRA_LIBS} -ldl -lpthread -lutil
LINK_FLAGS=${LDFLAGS} ${LOCAL_LDFLAGS}
DEP=dep
diff -urN telegram-cli/loop.c telegram-cli-mod/loop.c
--- telegram-cli/loop.c 2015-06-16 00:13:58.813146200 +0900
+++ telegram-cli-mod/loop.c 2015-06-16 00:17:40.441832400 +0900
@@ -383,8 +383,8 @@
close (auth_file_fd);
}
-void write_secret_chat (tgl_peer_t *_P, void *extra) {
- struct tgl_secret_chat *P = (void *)_P;
+void write_secret_chat (tgl_peer_t *_PP, void *extra) {
+ struct tgl_secret_chat *P = (void *)_PP;
if (tgl_get_peer_type (P->id) != TGL_PEER_ENCR_CHAT) { return; }
if (P->state != sc_ok) { return; }
int *a = extra;