mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Merge pull request #147 from mtatton/master
[ win64 ] build_win64.sh, doc etc.
This commit is contained in:
commit
9f2ff79c50
1
.gitignore
vendored
1
.gitignore
vendored
@ -19,3 +19,4 @@ elinks
|
|||||||
*.patch
|
*.patch
|
||||||
*.o
|
*.o
|
||||||
features.log
|
features.log
|
||||||
|
src/elinks.exe
|
||||||
|
50
build_win64.sh
Executable file
50
build_win64.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# WIndows x64 elinks cross-compilation
|
||||||
|
#
|
||||||
|
|
||||||
|
./autogen.sh
|
||||||
|
|
||||||
|
CC=x86_64-w64-mingw32-gcc \
|
||||||
|
LD=x86_64-w64-mingw32-ld \
|
||||||
|
CFLAGS="-g -static -no-pie" \
|
||||||
|
PKG_CONFIG="./pkg-config.sh" \
|
||||||
|
./configure -C \
|
||||||
|
--host=x86_64-w64-mingw32 \
|
||||||
|
--enable-static \
|
||||||
|
--without-brotli \
|
||||||
|
--enable-utf-8 \
|
||||||
|
--enable-256-colors \
|
||||||
|
--without-quickjs \
|
||||||
|
--without-lzma \
|
||||||
|
--disable-gopher \
|
||||||
|
--without-bzlib \
|
||||||
|
--without-zlib \
|
||||||
|
--disable-backtrace \
|
||||||
|
--without-openssl \
|
||||||
|
--disable-debug \
|
||||||
|
--enable-fastmem \
|
||||||
|
--without-perl \
|
||||||
|
--disable-88-colors \
|
||||||
|
--disable-true-color \
|
||||||
|
--prefix=/usr \
|
||||||
|
--disable-combining \
|
||||||
|
--disable-bittorrent \
|
||||||
|
--without-gnutls \
|
||||||
|
--without-libev \
|
||||||
|
--without-libevent \
|
||||||
|
--without-terminfo \
|
||||||
|
--disable-cgi \
|
||||||
|
--without-ruby \
|
||||||
|
--disable-sm-scripting \
|
||||||
|
--without-python \
|
||||||
|
--without-zstd \
|
||||||
|
--without-x \
|
||||||
|
--disable-nls
|
||||||
|
if [ $? = 0 ]; then
|
||||||
|
sed -i 's/-Wall/-w/g' Makefile.config
|
||||||
|
make
|
||||||
|
else
|
||||||
|
print config failed
|
||||||
|
fi
|
||||||
|
|
41
doc/cross_mingw.txt
Normal file
41
doc/cross_mingw.txt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
|
||||||
|
--[ HOWTO CROSS-COMPILE ELINKS FOR WIN64 ]--
|
||||||
|
|
||||||
|
Hello All,
|
||||||
|
|
||||||
|
so it could be annoying to get elinks compiled
|
||||||
|
on Windows. Or Arm or just different architecture
|
||||||
|
than Linux.
|
||||||
|
|
||||||
|
if You'd like to do that there is a solution. And
|
||||||
|
that's mingw. You can cross-compile on Linux for
|
||||||
|
Windows etc.
|
||||||
|
|
||||||
|
Now I'll assume You'd want to compile Windows x64
|
||||||
|
binary on Linux. There is a script I provide. it's
|
||||||
|
build_win64.sh. It would create static binary for
|
||||||
|
Windows.
|
||||||
|
|
||||||
|
On Debian You'd use x86_64-w64-mingw32-gcc or rather
|
||||||
|
the mingw toolchain. It's usage it's quite straight
|
||||||
|
forward just use it as environment variable:
|
||||||
|
|
||||||
|
CC=x86_64-w64-mingw32-gcc
|
||||||
|
|
||||||
|
and to prepare the compilation configuration add:
|
||||||
|
|
||||||
|
--host=x86_64-w64-mingw32
|
||||||
|
|
||||||
|
parameter to configure..
|
||||||
|
|
||||||
|
And that's it. With the script You'll get the very
|
||||||
|
basic binary for Windows. It could be run, it would
|
||||||
|
open simple http pages. The support for the terminal
|
||||||
|
is not very good. So I would advise You to use
|
||||||
|
environment variable TERM and set it to dumb. Like this:
|
||||||
|
|
||||||
|
set TERM=dumb
|
||||||
|
|
||||||
|
And that's it for today.
|
||||||
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
|
|
||||||
struct Range {
|
struct Range {
|
||||||
uint first, last;
|
unsigned int first, last;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RangeLut {
|
struct RangeLut {
|
||||||
|
@ -39,6 +39,10 @@
|
|||||||
#include "util/memory.h"
|
#include "util/memory.h"
|
||||||
#include "util/time.h"
|
#include "util/time.h"
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#define NO_ASYNC_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
struct dnsentry {
|
struct dnsentry {
|
||||||
LIST_HEAD(struct dnsentry);
|
LIST_HEAD(struct dnsentry);
|
||||||
|
@ -359,14 +359,16 @@ exe(char *path)
|
|||||||
int
|
int
|
||||||
exe_no_stdin(char *path) {
|
exe_no_stdin(char *path) {
|
||||||
int ret;
|
int ret;
|
||||||
#if defined(F_GETFD) && defined(FD_CLOEXEC)
|
#ifndef WIN32
|
||||||
|
|
||||||
|
#if defined(F_GETFD) && defined(FD_CLOEXEC)
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
flags = fcntl(STDIN_FILENO, F_GETFD);
|
flags = fcntl(STDIN_FILENO, F_GETFD);
|
||||||
fcntl(STDIN_FILENO, F_SETFD, flags | FD_CLOEXEC);
|
fcntl(STDIN_FILENO, F_SETFD, flags | FD_CLOEXEC);
|
||||||
ret = exe(path);
|
ret = exe(path);
|
||||||
fcntl(STDIN_FILENO, F_SETFD, flags);
|
fcntl(STDIN_FILENO, F_SETFD, flags);
|
||||||
#else
|
#else
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
pid = fork();
|
pid = fork();
|
||||||
@ -376,6 +378,7 @@ exe_no_stdin(char *path) {
|
|||||||
}
|
}
|
||||||
else if (pid > 0)
|
else if (pid > 0)
|
||||||
waitpid(pid, &ret, 0);
|
waitpid(pid, &ret, 0);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -773,7 +776,7 @@ resize_window(int width, int height, int old_width, int old_height)
|
|||||||
|
|
||||||
/* Threads */
|
/* Threads */
|
||||||
|
|
||||||
#if defined(HAVE_BEGINTHREAD) || defined(CONFIG_OS_BEOS)
|
#if defined(HAVE_BEGINTHREAD) || defined(CONFIG_OS_BEOS) || defined(CONFIG_OS_WIN32)
|
||||||
|
|
||||||
struct tdata {
|
struct tdata {
|
||||||
void (*fn)(void *, int);
|
void (*fn)(void *, int);
|
||||||
|
@ -52,7 +52,9 @@ int resize_window(int, int, int, int);
|
|||||||
int can_resize_window(int);
|
int can_resize_window(int);
|
||||||
int can_open_os_shell(int);
|
int can_open_os_shell(int);
|
||||||
void set_highpri(void);
|
void set_highpri(void);
|
||||||
|
#ifndef WIN32
|
||||||
char *tempname(const char *dir, const char *pfx, char *suff);
|
char *tempname(const char *dir, const char *pfx, char *suff);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_OPEN_PREALLOC
|
#ifdef USE_OPEN_PREALLOC
|
||||||
int open_prealloc(char *, int, int, off_t);
|
int open_prealloc(char *, int, int, off_t);
|
||||||
|
@ -1194,8 +1194,13 @@ start_bittorrent_resume(struct bittorrent_connection *bittorrent,
|
|||||||
add_bytes_to_string(&info, (const char *)&meta->length, sizeof(meta->length));
|
add_bytes_to_string(&info, (const char *)&meta->length, sizeof(meta->length));
|
||||||
add_bytes_to_string(&info, meta->source, meta->length);
|
add_bytes_to_string(&info, meta->source, meta->length);
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
cache->resume_fd = start_thread(bittorrent_resume_writer, info.source,
|
cache->resume_fd = start_thread(bittorrent_resume_writer, info.source,
|
||||||
info.length);
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
bittorrent_resume_writer(info.source, info.length);
|
||||||
|
#endif
|
||||||
done_string(&info);
|
done_string(&info);
|
||||||
|
|
||||||
if (cache->resume_fd == -1)
|
if (cache->resume_fd == -1)
|
||||||
|
@ -671,8 +671,13 @@ has_nul_byte:
|
|||||||
|
|
||||||
if (fg == TERM_EXEC_FG) block_itrm();
|
if (fg == TERM_EXEC_FG) block_itrm();
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
blockh = start_thread((void (*)(void *, int)) exec_thread,
|
blockh = start_thread((void (*)(void *, int)) exec_thread,
|
||||||
param, param_len);
|
param, param_len);
|
||||||
|
#else
|
||||||
|
exec_thread(param, param_len);
|
||||||
|
|
||||||
|
#endif
|
||||||
mem_free(param);
|
mem_free(param);
|
||||||
|
|
||||||
if (blockh == -1) {
|
if (blockh == -1) {
|
||||||
|
@ -230,11 +230,13 @@ exec_thread(char *path, int p)
|
|||||||
#if defined(HAVE_SETPGID) && !defined(CONFIG_OS_BEOS) && !defined(HAVE_BEGINTHREAD)
|
#if defined(HAVE_SETPGID) && !defined(CONFIG_OS_BEOS) && !defined(HAVE_BEGINTHREAD)
|
||||||
if (path[0] == TERM_EXEC_NEWWIN) setpgid(0, 0);
|
if (path[0] == TERM_EXEC_NEWWIN) setpgid(0, 0);
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef WIN32
|
||||||
if (path[0] == TERM_EXEC_BG)
|
if (path[0] == TERM_EXEC_BG)
|
||||||
exe_no_stdin(path + 1);
|
exe_no_stdin(path + 1);
|
||||||
else
|
else
|
||||||
exe(path + 1);
|
exe(path + 1);
|
||||||
if (path[plen]) unlink(path + plen);
|
if (path[plen]) unlink(path + plen);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -293,8 +295,12 @@ exec_on_master_terminal(struct terminal *term,
|
|||||||
|
|
||||||
if (fg == TERM_EXEC_FG) block_itrm();
|
if (fg == TERM_EXEC_FG) block_itrm();
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
blockh = start_thread((void (*)(void *, int)) exec_thread,
|
blockh = start_thread((void (*)(void *, int)) exec_thread,
|
||||||
param, param_size);
|
param, param_size);
|
||||||
|
#else
|
||||||
|
exec_thread(param, param_size);
|
||||||
|
#endif
|
||||||
fmem_free(param);
|
fmem_free(param);
|
||||||
if (blockh == -1) {
|
if (blockh == -1) {
|
||||||
if (fg == TERM_EXEC_FG) unblock_itrm();
|
if (fg == TERM_EXEC_FG) unblock_itrm();
|
||||||
|
Loading…
Reference in New Issue
Block a user