Added Cygwin Build README and patch
This commit is contained in:
parent
44286cd15e
commit
141982f5e3
55
README-Cygwin.md
Executable file
55
README-Cygwin.md
Executable 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
29
telegram-cli-cygwin.diff
Executable 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;
|
Loading…
Reference in New Issue
Block a user