Vishal Biswas
7 years ago
committed by
Fredrik Fornwall
22 changed files with 1466 additions and 0 deletions
@ -0,0 +1,22 @@ |
|||||
|
TERMUX_PKG_HOMEPAGE=https://www.cups.org |
||||
|
TERMUX_PKG_VERSION=2.2.4 |
||||
|
TERMUX_PKG_DEPENDS=krb5 |
||||
|
TERMUX_PKG_SRCURL=https://github.com/apple/cups/releases/download/v$TERMUX_PKG_VERSION/cups-$TERMUX_PKG_VERSION-source.tar.gz |
||||
|
TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" |
||||
|
TERMUX_PKG_SHA256=596d4db72651c335469ae5f37b0da72ac9f97d73e30838d787065f559dea98cc |
||||
|
TERMUX_PKG_DEPENDS="libandroid-support, libcrypt" |
||||
|
TERMUX_PKG_FOLDERNAME=cups-$TERMUX_PKG_VERSION |
||||
|
TERMUX_PKG_BUILD_IN_SRC=true |
||||
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" |
||||
|
--disable-option-checking |
||||
|
--disable-gssapi |
||||
|
--with-components=core |
||||
|
" |
||||
|
|
||||
|
termux_step_pre_configure () { |
||||
|
LDFLAGS="$LDFLAGS -llog -lcrypt" |
||||
|
} |
||||
|
|
||||
|
termux_step_post_make_install () { |
||||
|
mv "$TERMUX_PREFIX"/lib64/libcups.so* "$TERMUX_PREFIX"/lib/ |
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
--- ./cups/thread.c 2017-06-30 21:14:38.000000000 +0530
|
||||
|
+++ ../thread.c 2017-09-24 10:12:11.169628258 +0530
|
||||
|
@@ -18,6 +18,7 @@
|
||||
|
|
||||
|
#include "cups-private.h" |
||||
|
#include "thread-private.h" |
||||
|
+#include <signal.h>
|
||||
|
|
||||
|
|
||||
|
#if defined(HAVE_PTHREAD_H) |
||||
|
@@ -150,7 +151,7 @@
|
||||
|
void |
||||
|
_cupsThreadCancel(_cups_thread_t thread)/* I - Thread ID */ |
||||
|
{ |
||||
|
- pthread_cancel(thread);
|
||||
|
+ pthread_kill(thread, SIGTERM);
|
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,12 @@ |
|||||
|
--- ./cups/file.c 2016-10-04 01:25:40.000000000 +0530
|
||||
|
+++ ../file.c 2016-12-11 09:51:21.994431659 +0530
|
||||
|
@@ -39,6 +39,9 @@
|
||||
|
static ssize_t cups_read(cups_file_t *fp, char *buf, size_t bytes); |
||||
|
static ssize_t cups_write(cups_file_t *fp, const char *buf, size_t bytes); |
||||
|
|
||||
|
+#ifdef __ANDROID__
|
||||
|
+#include "lockf.cpp"
|
||||
|
+#endif
|
||||
|
|
||||
|
#ifndef WIN32 |
||||
|
/* |
@ -0,0 +1,92 @@ |
|||||
|
--- /dev/null 2016-12-11 08:33:21.825618476 +0530
|
||||
|
+++ ./cups/lockf.cpp 2016-12-11 09:44:20.050966252 +0530
|
||||
|
@@ -0,0 +1,89 @@
|
||||
|
+/*
|
||||
|
+ * Copyright (C) 2016 The Android Open Source Project
|
||||
|
+ * All rights reserved.
|
||||
|
+ *
|
||||
|
+ * Redistribution and use in source and binary forms, with or without
|
||||
|
+ * modification, are permitted provided that the following conditions
|
||||
|
+ * are met:
|
||||
|
+ * * Redistributions of source code must retain the above copyright
|
||||
|
+ * notice, this list of conditions and the following disclaimer.
|
||||
|
+ * * Redistributions in binary form must reproduce the above copyright
|
||||
|
+ * notice, this list of conditions and the following disclaimer in
|
||||
|
+ * the documentation and/or other materials provided with the
|
||||
|
+ * distribution.
|
||||
|
+ *
|
||||
|
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
|
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
|
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
|
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
|
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
|
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
|
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
|
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
|
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
|
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
|
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
|
+ * SUCH DAMAGE.
|
||||
|
+ */
|
||||
|
+#include <unistd.h>
|
||||
|
+#include <errno.h>
|
||||
|
+#include <fcntl.h>
|
||||
|
+#include <string.h>
|
||||
|
+
|
||||
|
+#ifndef _BITS_LOCKF_H_
|
||||
|
+#define _BITS_LOCKF_H_
|
||||
|
+
|
||||
|
+#include <sys/cdefs.h>
|
||||
|
+
|
||||
|
+#define F_ULOCK 0
|
||||
|
+#define F_LOCK 1
|
||||
|
+#define F_TLOCK 2
|
||||
|
+#define F_TEST 3
|
||||
|
+
|
||||
|
+__BEGIN_DECLS
|
||||
|
+
|
||||
|
+#if defined(__USE_FILE_OFFSET64)
|
||||
|
+int lockf(int, int, off_t) __RENAME(lockf64);
|
||||
|
+#else
|
||||
|
+int lockf(int, int, off_t);
|
||||
|
+#endif
|
||||
|
+int lockf64(int, int, off64_t);
|
||||
|
+
|
||||
|
+__END_DECLS
|
||||
|
+
|
||||
|
+#endif
|
||||
|
+
|
||||
|
+
|
||||
|
+int lockf64(int fd, int cmd, off64_t length) {
|
||||
|
+ // Translate POSIX lockf into fcntl.
|
||||
|
+ struct flock fl;
|
||||
|
+ memset(&fl, 0, sizeof(fl));
|
||||
|
+ fl.l_whence = SEEK_CUR;
|
||||
|
+ fl.l_start = 0;
|
||||
|
+ fl.l_len = length;
|
||||
|
+ if (cmd == F_ULOCK) {
|
||||
|
+ fl.l_type = F_UNLCK;
|
||||
|
+ cmd = F_SETLK64;
|
||||
|
+ return fcntl(fd, F_SETLK64, &fl);
|
||||
|
+ }
|
||||
|
+ if (cmd == F_LOCK) {
|
||||
|
+ fl.l_type = F_WRLCK;
|
||||
|
+ return fcntl(fd, F_SETLKW64, &fl);
|
||||
|
+ }
|
||||
|
+ if (cmd == F_TLOCK) {
|
||||
|
+ fl.l_type = F_WRLCK;
|
||||
|
+ return fcntl(fd, F_SETLK64, &fl);
|
||||
|
+ }
|
||||
|
+ if (cmd == F_TEST) {
|
||||
|
+ fl.l_type = F_RDLCK;
|
||||
|
+ if (fcntl(fd, F_GETLK64, &fl) == -1) return -1;
|
||||
|
+ if (fl.l_type == F_UNLCK || fl.l_pid == getpid()) return 0;
|
||||
|
+ errno = EACCES;
|
||||
|
+ return -1;
|
||||
|
+ }
|
||||
|
+ errno = EINVAL;
|
||||
|
+ return -1;
|
||||
|
+}
|
||||
|
+int lockf(int fd, int cmd, off_t length) {
|
||||
|
+ return lockf64(fd, cmd, length);
|
||||
|
+}
|
@ -0,0 +1,13 @@ |
|||||
|
TERMUX_PKG_HOMEPAGE=https://github.com/radareorg/cutter |
||||
|
TERMUX_PKG_VERSION=1.0-alpha |
||||
|
TERMUX_PKG_SRCURL=https://github.com/radareorg/cutter/archive/v$TERMUX_PKG_VERSION.tar.gz |
||||
|
TERMUX_PKG_SHA256=58ea937709637d59089c6656eaa276d0863dd96142afb97bab797c834bb4c085 |
||||
|
TERMUX_PKG_DEPENDS="qt5, radare2" |
||||
|
|
||||
|
termux_step_pre_configure () { |
||||
|
export TERMUX_PKG_SRCDIR="$TERMUX_PKG_SRCDIR/src" |
||||
|
} |
||||
|
|
||||
|
termux_step_make_install () { |
||||
|
cp $TERMUX_PKG_BUILDDIR/cutter $TERMUX_PREFIX/bin/cutter |
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
TERMUX_PKG_HOMEPAGE=https://www.dovecot.org |
||||
|
TERMUX_PKG_DESCRIPTION="Secure IMAP and POP3 email server" |
||||
|
TERMUX_PKG_VERSION=2.2.31 |
||||
|
TERMUX_PKG_SRCURL=https://www.dovecot.org/releases/2.2/dovecot-$TERMUX_PKG_VERSION.tar.gz |
||||
|
TERMUX_PKG_SHA256=034be40907748128d65088a4f59789b2f99ae7b33a88974eae0b6a68ece376a1 |
||||
|
TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" |
||||
|
TERMUX_PKG_DEPENDS="openssl, libcrypt" |
||||
|
# turning on icu gives undefined reference to __cxa_call_unexpected |
||||
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" |
||||
|
--with-zlib |
||||
|
--with-ssl=openssl |
||||
|
--with-ssldir=$TERMUX_PREFIX/etc/tls |
||||
|
--without-icu |
||||
|
--without-shadow |
||||
|
i_cv_epoll_works=yes |
||||
|
i_cv_posix_fallocate_works=yes |
||||
|
i_cv_signed_size_t=no |
||||
|
i_cv_gmtime_max_time_t=40 |
||||
|
i_cv_signed_time_t=yes |
||||
|
i_cv_mmap_plays_with_write=yes |
||||
|
i_cv_fd_passing=yes |
||||
|
i_cv_c99_vsnprintf=yes |
||||
|
lib_cv_va_copy=yes |
||||
|
lib_cv___va_copy=yes |
||||
|
" |
||||
|
|
||||
|
termux_step_pre_configure () { |
||||
|
LDFLAGS="$LDFLAGS -llog" |
||||
|
|
||||
|
for i in `find $TERMUX_PKG_SRCDIR/src/director -type f`; do sed 's|\bstruct user\b|struct usertest|g' -i $i; done |
||||
|
|
||||
|
if [ "$TERMUX_ARCH" == "aarch64" ]; then |
||||
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+="lib_cv_va_val_copy=yes" |
||||
|
else |
||||
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+="lib_cv_va_val_copy=no" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
termux_step_post_make_install () { |
||||
|
for binary in doveadm doveconf; do |
||||
|
mv $TERMUX_PREFIX/bin/$binary $TERMUX_PREFIX/libexec/dovecot/$binary |
||||
|
cat > $TERMUX_PREFIX/bin/$binary <<HERE |
||||
|
#!$TERMUX_PREFIX/bin/sh |
||||
|
export LD_LIBRARY_PATH=$TERMUX_PREFIX/lib/dovecot:\$LD_LIBRARY_PATH |
||||
|
exec $TERMUX_PREFIX/libexec/dovecot/$binary $@ |
||||
|
HERE |
||||
|
chmod u+x $TERMUX_PREFIX/bin/$binary |
||||
|
done |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
--- ./configure 2017-06-06 19:59:58.000000000 +0530
|
||||
|
+++ ../configure 2017-06-09 22:41:43.475719606 +0530
|
||||
|
@@ -4464,8 +4464,8 @@
|
||||
|
fi |
||||
|
|
||||
|
|
||||
|
-want_passwd=yes
|
||||
|
-want_passwd_file=yes
|
||||
|
+want_passwd=no
|
||||
|
+want_passwd_file=no
|
||||
|
want_checkpassword=yes |
||||
|
want_prefetch_userdb=yes |
||||
|
|
||||
|
--- ./configure 2017-06-10 10:57:04.390830105 +0530
|
||||
|
+++ ../configure 2017-06-10 11:14:06.734990847 +0530
|
||||
|
@@ -26351,12 +26351,6 @@
|
||||
|
|
||||
|
|
||||
|
have_rquota=no |
||||
|
-if test -f /usr/include/rpcsvc/rquota.x && test -n "$RPCGEN"; then
|
||||
|
-
|
||||
|
-$as_echo "#define HAVE_RQUOTA /**/" >>confdefs.h
|
||||
|
-
|
||||
|
- have_rquota=yes
|
||||
|
-fi
|
||||
|
if test "$have_rquota" = "yes"; then |
||||
|
HAVE_RQUOTA_TRUE= |
||||
|
HAVE_RQUOTA_FALSE='#' |
@ -0,0 +1,10 @@ |
|||||
|
--- ./src/lib/connection.h 2016-12-03 22:43:21.000000000 +0530
|
||||
|
+++ ../connection.h 2017-06-09 22:47:48.138342901 +0530
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
#define CONNECTION_H |
||||
|
|
||||
|
#include "net.h" |
||||
|
+#include <linux/time.h>
|
||||
|
|
||||
|
struct connection; |
||||
|
|
@ -0,0 +1,24 @@ |
|||||
|
TERMUX_PKG_HOMEPAGE=https://chromium.googlesource.com/webm/libwebp |
||||
|
TERMUX_PKG_VERSION=0.6.0 |
||||
|
TERMUX_PKG_SRCURL=https://github.com/webmproject/libwebp/archive/v$TERMUX_PKG_VERSION.tar.gz |
||||
|
TERMUX_PKG_SHA256=e1bd8b81098b8094edba0f161baf89f9fb1492e3fca19cf1d28eff4b88518702 |
||||
|
TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" |
||||
|
TERMUX_PKG_DEPENDS="libpng, libjpeg-turbo, libtiff" |
||||
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" |
||||
|
--enable-png |
||||
|
--enable-tiff |
||||
|
--enable-jpeg |
||||
|
--enable-libwebpmux |
||||
|
--enable-libwebpdemux |
||||
|
--enable-libwebpdecoder |
||||
|
--enable-libwebpextras |
||||
|
" |
||||
|
|
||||
|
termux_step_pre_configure () { |
||||
|
CPPFLAGS="$CPPFLAGS -I$NDK/sources/android/cpufeatures" |
||||
|
$CC -c -o $TERMUX_PKG_BUILDDIR/libcpufeatures.o $CPPFLAGS $CFLAGS $NDK/sources/android/cpufeatures/cpu-features.c |
||||
|
$AR rcs $TERMUX_PKG_BUILDDIR/libcpufeatures.a $TERMUX_PKG_BUILDDIR/libcpufeatures.o |
||||
|
LDFLAGS="$LDFLAGS -l$TERMUX_PKG_BUILDDIR/libcpufeatures.a" |
||||
|
|
||||
|
autoreconf -fi |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
TERMUX_PKG_HOMEPAGE=http://www.mono-project.com/ |
||||
|
TERMUX_PKG_MAINTAINER='Vishal Biswas @vishalbiswas' |
||||
|
_MONO_VERSION=5.0.0 |
||||
|
_MONO_PATCH=100 |
||||
|
TERMUX_PKG_VERSION=$_MONO_VERSION.$_MONO_PATCH |
||||
|
# official package is missing support/libm/math_private.h |
||||
|
#TERMUX_PKG_SRCURL=https://github.com/mono/mono/archive/mono-$TERMUX_PKG_VERSION.tar.gz |
||||
|
TERMUX_PKG_SRCURL=https://download.mono-project.com/sources/mono/mono-$TERMUX_PKG_VERSION.tar.bz2 |
||||
|
TERMUX_PKG_SHA256=368da3ff9f42592920cd8cf6fa15c6c16558e967144c4d3df873352e5d2bb6df |
||||
|
TERMUX_PKG_FOLDERNAME=mono-$_MONO_VERSION |
||||
|
#TERMUX_PKG_EXTRA_CONFIGURE_ARGS='--disable-mcs-build --disable-boehm --with-sigaltstack=no' |
||||
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+="--disable-btls --disable-dynamic-btls" #--with-btls-android-ndk=$ANDROID_NDK" |
||||
|
TERMUX_PKG_BUILD_IN_SRC=true |
||||
|
|
||||
|
termux_step_pre_configure () { |
||||
|
# export CFLAGS="$CFLAGS -mthumb" |
||||
|
cd "$TERMUX_PKG_SRCDIR" |
||||
|
# NOCONFIGURE=1 ./autogen.sh |
||||
|
# cp $TERMUX_PKG_BUILDER_DIR/{complex,math_private}.h $TERMUX_PKG_SRCDIR/support/libm/ |
||||
|
export ANDROID_STANDALONE_TOOLCHAIN=$TERMUX_STANDALONE_TOOLCHAIN |
||||
|
} |
||||
|
|
@ -0,0 +1,118 @@ |
|||||
|
/*-
|
||||
|
* Copyright (c) 2001-2011 The FreeBSD Project. |
||||
|
* All rights reserved. |
||||
|
* |
||||
|
* Redistribution and use in source and binary forms, with or without |
||||
|
* modification, are permitted provided that the following conditions |
||||
|
* are met: |
||||
|
* 1. Redistributions of source code must retain the above copyright |
||||
|
* notice, this list of conditions and the following disclaimer. |
||||
|
* 2. Redistributions in binary form must reproduce the above copyright |
||||
|
* notice, this list of conditions and the following disclaimer in the |
||||
|
* documentation and/or other materials provided with the distribution. |
||||
|
* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
|
* SUCH DAMAGE. |
||||
|
* |
||||
|
* $FreeBSD$ |
||||
|
*/ |
||||
|
|
||||
|
#ifndef _COMPLEX_H |
||||
|
#define _COMPLEX_H |
||||
|
|
||||
|
#include <sys/cdefs.h> |
||||
|
|
||||
|
#ifdef __GNUC__ |
||||
|
#if __STDC_VERSION__ < 199901 |
||||
|
#define _Complex __complex__ |
||||
|
#endif |
||||
|
#define _Complex_I ((float _Complex)1.0i) |
||||
|
#endif |
||||
|
|
||||
|
#ifdef __generic |
||||
|
_Static_assert(__generic(_Complex_I, float _Complex, 1, 0), |
||||
|
"_Complex_I must be of type float _Complex"); |
||||
|
#endif |
||||
|
|
||||
|
#define complex _Complex |
||||
|
#define I _Complex_I |
||||
|
|
||||
|
#if __ISO_C_VISIBLE >= 2011 |
||||
|
#ifdef __clang__ |
||||
|
#define CMPLX(x, y) ((double complex){ x, y }) |
||||
|
#define CMPLXF(x, y) ((float complex){ x, y }) |
||||
|
#define CMPLXL(x, y) ((long double complex){ x, y }) |
||||
|
#elif __GNUC_PREREQ__(4, 7) |
||||
|
#define CMPLX(x, y) __builtin_complex((double)(x), (double)(y)) |
||||
|
#define CMPLXF(x, y) __builtin_complex((float)(x), (float)(y)) |
||||
|
#define CMPLXL(x, y) __builtin_complex((long double)(x), (long double)(y)) |
||||
|
#endif |
||||
|
#endif /* __ISO_C_VISIBLE >= 2011 */ |
||||
|
|
||||
|
__BEGIN_DECLS |
||||
|
#pragma GCC visibility push(default) |
||||
|
|
||||
|
double cabs(double complex); |
||||
|
float cabsf(float complex); |
||||
|
long double cabsl(long double complex); |
||||
|
double complex cacos(double complex); |
||||
|
float complex cacosf(float complex); |
||||
|
double complex cacosh(double complex); |
||||
|
float complex cacoshf(float complex); |
||||
|
double carg(double complex); |
||||
|
float cargf(float complex); |
||||
|
long double cargl(long double complex); |
||||
|
double complex casin(double complex); |
||||
|
float complex casinf(float complex); |
||||
|
double complex casinh(double complex); |
||||
|
float complex casinhf(float complex); |
||||
|
double complex catan(double complex); |
||||
|
float complex catanf(float complex); |
||||
|
double complex catanh(double complex); |
||||
|
float complex catanhf(float complex); |
||||
|
double complex ccos(double complex); |
||||
|
float complex ccosf(float complex); |
||||
|
double complex ccosh(double complex); |
||||
|
float complex ccoshf(float complex); |
||||
|
double complex cexp(double complex); |
||||
|
float complex cexpf(float complex); |
||||
|
double cimag(double complex) __pure2; |
||||
|
float cimagf(float complex) __pure2; |
||||
|
long double cimagl(long double complex) __pure2; |
||||
|
double complex conj(double complex) __pure2; |
||||
|
float complex conjf(float complex) __pure2; |
||||
|
long double complex |
||||
|
conjl(long double complex) __pure2; |
||||
|
float complex cprojf(float complex) __pure2; |
||||
|
double complex cproj(double complex) __pure2; |
||||
|
long double complex |
||||
|
cprojl(long double complex) __pure2; |
||||
|
double creal(double complex) __pure2; |
||||
|
float crealf(float complex) __pure2; |
||||
|
long double creall(long double complex) __pure2; |
||||
|
double complex csin(double complex); |
||||
|
float complex csinf(float complex); |
||||
|
double complex csinh(double complex); |
||||
|
float complex csinhf(float complex); |
||||
|
double complex csqrt(double complex); |
||||
|
float complex csqrtf(float complex); |
||||
|
long double complex |
||||
|
csqrtl(long double complex); |
||||
|
double complex ctan(double complex); |
||||
|
float complex ctanf(float complex); |
||||
|
double complex ctanh(double complex); |
||||
|
float complex ctanhf(float complex); |
||||
|
|
||||
|
#pragma GCC visibility pop |
||||
|
__END_DECLS |
||||
|
|
||||
|
#endif /* _COMPLEX_H */ |
@ -0,0 +1,764 @@ |
|||||
|
/*
|
||||
|
* ==================================================== |
||||
|
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. |
||||
|
* |
||||
|
* Developed at SunPro, a Sun Microsystems, Inc. business. |
||||
|
* Permission to use, copy, modify, and distribute this |
||||
|
* software is freely granted, provided that this notice |
||||
|
* is preserved. |
||||
|
* ==================================================== |
||||
|
*/ |
||||
|
|
||||
|
/*
|
||||
|
* from: @(#)fdlibm.h 5.1 93/09/24 |
||||
|
* $FreeBSD$ |
||||
|
*/ |
||||
|
|
||||
|
#ifndef _MATH_PRIVATE_H_ |
||||
|
#define _MATH_PRIVATE_H_ |
||||
|
|
||||
|
#include <sys/types.h> |
||||
|
#include <machine/endian.h> |
||||
|
|
||||
|
/*
|
||||
|
* The original fdlibm code used statements like: |
||||
|
* n0 = ((*(int*)&one)>>29)^1; * index of high word * |
||||
|
* ix0 = *(n0+(int*)&x); * high word of x * |
||||
|
* ix1 = *((1-n0)+(int*)&x); * low word of x * |
||||
|
* to dig two 32 bit words out of the 64 bit IEEE floating point |
||||
|
* value. That is non-ANSI, and, moreover, the gcc instruction |
||||
|
* scheduler gets it wrong. We instead use the following macros. |
||||
|
* Unlike the original code, we determine the endianness at compile |
||||
|
* time, not at run time; I don't see much benefit to selecting |
||||
|
* endianness at run time. |
||||
|
*/ |
||||
|
|
||||
|
/*
|
||||
|
* A union which permits us to convert between a double and two 32 bit |
||||
|
* ints. |
||||
|
*/ |
||||
|
|
||||
|
#ifdef __arm__ |
||||
|
#if defined(__VFP_FP__) || defined(__ARM_EABI__) |
||||
|
#define IEEE_WORD_ORDER BYTE_ORDER |
||||
|
#else |
||||
|
#define IEEE_WORD_ORDER BIG_ENDIAN |
||||
|
#endif |
||||
|
#else /* __arm__ */ |
||||
|
#define IEEE_WORD_ORDER BYTE_ORDER |
||||
|
#endif |
||||
|
|
||||
|
#if IEEE_WORD_ORDER == BIG_ENDIAN |
||||
|
|
||||
|
typedef union |
||||
|
{ |
||||
|
double value; |
||||
|
struct |
||||
|
{ |
||||
|
u_int32_t msw; |
||||
|
u_int32_t lsw; |
||||
|
} parts; |
||||
|
struct |
||||
|
{ |
||||
|
u_int64_t w; |
||||
|
} xparts; |
||||
|
} ieee_double_shape_type; |
||||
|
|
||||
|
#endif |
||||
|
|
||||
|
#if IEEE_WORD_ORDER == LITTLE_ENDIAN |
||||
|
|
||||
|
typedef union |
||||
|
{ |
||||
|
double value; |
||||
|
struct |
||||
|
{ |
||||
|
u_int32_t lsw; |
||||
|
u_int32_t msw; |
||||
|
} parts; |
||||
|
struct |
||||
|
{ |
||||
|
u_int64_t w; |
||||
|
} xparts; |
||||
|
} ieee_double_shape_type; |
||||
|
|
||||
|
#endif |
||||
|
|
||||
|
/* Get two 32 bit ints from a double. */ |
||||
|
|
||||
|
#define EXTRACT_WORDS(ix0,ix1,d) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type ew_u; \ |
||||
|
ew_u.value = (d); \ |
||||
|
(ix0) = ew_u.parts.msw; \ |
||||
|
(ix1) = ew_u.parts.lsw; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Get a 64-bit int from a double. */ |
||||
|
#define EXTRACT_WORD64(ix,d) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type ew_u; \ |
||||
|
ew_u.value = (d); \ |
||||
|
(ix) = ew_u.xparts.w; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Get the more significant 32 bit int from a double. */ |
||||
|
|
||||
|
#define GET_HIGH_WORD(i,d) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type gh_u; \ |
||||
|
gh_u.value = (d); \ |
||||
|
(i) = gh_u.parts.msw; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Get the less significant 32 bit int from a double. */ |
||||
|
|
||||
|
#define GET_LOW_WORD(i,d) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type gl_u; \ |
||||
|
gl_u.value = (d); \ |
||||
|
(i) = gl_u.parts.lsw; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Set a double from two 32 bit ints. */ |
||||
|
|
||||
|
#define INSERT_WORDS(d,ix0,ix1) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type iw_u; \ |
||||
|
iw_u.parts.msw = (ix0); \ |
||||
|
iw_u.parts.lsw = (ix1); \ |
||||
|
(d) = iw_u.value; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Set a double from a 64-bit int. */ |
||||
|
#define INSERT_WORD64(d,ix) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type iw_u; \ |
||||
|
iw_u.xparts.w = (ix); \ |
||||
|
(d) = iw_u.value; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Set the more significant 32 bits of a double from an int. */ |
||||
|
|
||||
|
#define SET_HIGH_WORD(d,v) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type sh_u; \ |
||||
|
sh_u.value = (d); \ |
||||
|
sh_u.parts.msw = (v); \ |
||||
|
(d) = sh_u.value; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Set the less significant 32 bits of a double from an int. */ |
||||
|
|
||||
|
#define SET_LOW_WORD(d,v) \ |
||||
|
do { \ |
||||
|
ieee_double_shape_type sl_u; \ |
||||
|
sl_u.value = (d); \ |
||||
|
sl_u.parts.lsw = (v); \ |
||||
|
(d) = sl_u.value; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* A union which permits us to convert between a float and a 32 bit |
||||
|
* int. |
||||
|
*/ |
||||
|
|
||||
|
typedef union |
||||
|
{ |
||||
|
float value; |
||||
|
/* FIXME: Assumes 32 bit int. */ |
||||
|
unsigned int word; |
||||
|
} ieee_float_shape_type; |
||||
|
|
||||
|
/* Get a 32 bit int from a float. */ |
||||
|
|
||||
|
#define GET_FLOAT_WORD(i,d) \ |
||||
|
do { \ |
||||
|
ieee_float_shape_type gf_u; \ |
||||
|
gf_u.value = (d); \ |
||||
|
(i) = gf_u.word; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Set a float from a 32 bit int. */ |
||||
|
|
||||
|
#define SET_FLOAT_WORD(d,i) \ |
||||
|
do { \ |
||||
|
ieee_float_shape_type sf_u; \ |
||||
|
sf_u.word = (i); \ |
||||
|
(d) = sf_u.value; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* Get expsign and mantissa as 16 bit and 64 bit ints from an 80 bit long |
||||
|
* double. |
||||
|
*/ |
||||
|
|
||||
|
#define EXTRACT_LDBL80_WORDS(ix0,ix1,d) \ |
||||
|
do { \ |
||||
|
union IEEEl2bits ew_u; \ |
||||
|
ew_u.e = (d); \ |
||||
|
(ix0) = ew_u.xbits.expsign; \ |
||||
|
(ix1) = ew_u.xbits.man; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* Get expsign and mantissa as one 16 bit and two 64 bit ints from a 128 bit |
||||
|
* long double. |
||||
|
*/ |
||||
|
|
||||
|
#define EXTRACT_LDBL128_WORDS(ix0,ix1,ix2,d) \ |
||||
|
do { \ |
||||
|
union IEEEl2bits ew_u; \ |
||||
|
ew_u.e = (d); \ |
||||
|
(ix0) = ew_u.xbits.expsign; \ |
||||
|
(ix1) = ew_u.xbits.manh; \ |
||||
|
(ix2) = ew_u.xbits.manl; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Get expsign as a 16 bit int from a long double. */ |
||||
|
|
||||
|
#define GET_LDBL_EXPSIGN(i,d) \ |
||||
|
do { \ |
||||
|
union IEEEl2bits ge_u; \ |
||||
|
ge_u.e = (d); \ |
||||
|
(i) = ge_u.xbits.expsign; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* Set an 80 bit long double from a 16 bit int expsign and a 64 bit int |
||||
|
* mantissa. |
||||
|
*/ |
||||
|
|
||||
|
#define INSERT_LDBL80_WORDS(d,ix0,ix1) \ |
||||
|
do { \ |
||||
|
union IEEEl2bits iw_u; \ |
||||
|
iw_u.xbits.expsign = (ix0); \ |
||||
|
iw_u.xbits.man = (ix1); \ |
||||
|
(d) = iw_u.e; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* Set a 128 bit long double from a 16 bit int expsign and two 64 bit ints |
||||
|
* comprising the mantissa. |
||||
|
*/ |
||||
|
|
||||
|
#define INSERT_LDBL128_WORDS(d,ix0,ix1,ix2) \ |
||||
|
do { \ |
||||
|
union IEEEl2bits iw_u; \ |
||||
|
iw_u.xbits.expsign = (ix0); \ |
||||
|
iw_u.xbits.manh = (ix1); \ |
||||
|
iw_u.xbits.manl = (ix2); \ |
||||
|
(d) = iw_u.e; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/* Set expsign of a long double from a 16 bit int. */ |
||||
|
|
||||
|
#define SET_LDBL_EXPSIGN(d,v) \ |
||||
|
do { \ |
||||
|
union IEEEl2bits se_u; \ |
||||
|
se_u.e = (d); \ |
||||
|
se_u.xbits.expsign = (v); \ |
||||
|
(d) = se_u.e; \ |
||||
|
} while (0) |
||||
|
|
||||
|
#ifdef __i386__ |
||||
|
/* Long double constants are broken on i386. */ |
||||
|
#define LD80C(m, ex, v) { \ |
||||
|
.xbits.man = __CONCAT(m, ULL), \ |
||||
|
.xbits.expsign = (0x3fff + (ex)) | ((v) < 0 ? 0x8000 : 0), \ |
||||
|
} |
||||
|
#else |
||||
|
/* The above works on non-i386 too, but we use this to check v. */ |
||||
|
#define LD80C(m, ex, v) { .e = (v), } |
||||
|
#endif |
||||
|
|
||||
|
#ifdef FLT_EVAL_METHOD |
||||
|
/*
|
||||
|
* Attempt to get strict C99 semantics for assignment with non-C99 compilers. |
||||
|
*/ |
||||
|
#if FLT_EVAL_METHOD == 0 || __GNUC__ == 0 |
||||
|
#define STRICT_ASSIGN(type, lval, rval) ((lval) = (rval)) |
||||
|
#else |
||||
|
#define STRICT_ASSIGN(type, lval, rval) do { \ |
||||
|
volatile type __lval; \ |
||||
|
\ |
||||
|
if (sizeof(type) >= sizeof(long double)) \ |
||||
|
(lval) = (rval); \ |
||||
|
else { \ |
||||
|
__lval = (rval); \ |
||||
|
(lval) = __lval; \ |
||||
|
} \ |
||||
|
} while (0) |
||||
|
#endif |
||||
|
#endif /* FLT_EVAL_METHOD */ |
||||
|
|
||||
|
/* Support switching the mode to FP_PE if necessary. */ |
||||
|
#if defined(__i386__) && !defined(NO_FPSETPREC) |
||||
|
#define ENTERI() \ |
||||
|
long double __retval; \ |
||||
|
fp_prec_t __oprec; \ |
||||
|
\ |
||||
|
if ((__oprec = fpgetprec()) != FP_PE) \ |
||||
|
fpsetprec(FP_PE) |
||||
|
#define RETURNI(x) do { \ |
||||
|
__retval = (x); \ |
||||
|
if (__oprec != FP_PE) \ |
||||
|
fpsetprec(__oprec); \ |
||||
|
RETURNF(__retval); \ |
||||
|
} while (0) |
||||
|
#else |
||||
|
#define ENTERI(x) |
||||
|
#define RETURNI(x) RETURNF(x) |
||||
|
#endif |
||||
|
|
||||
|
/* Default return statement if hack*_t() is not used. */ |
||||
|
#define RETURNF(v) return (v) |
||||
|
|
||||
|
/*
|
||||
|
* 2sum gives the same result as 2sumF without requiring |a| >= |b| or |
||||
|
* a == 0, but is slower. |
||||
|
*/ |
||||
|
#define _2sum(a, b) do { \ |
||||
|
__typeof(a) __s, __w; \ |
||||
|
\ |
||||
|
__w = (a) + (b); \ |
||||
|
__s = __w - (a); \ |
||||
|
(b) = ((a) - (__w - __s)) + ((b) - __s); \ |
||||
|
(a) = __w; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* 2sumF algorithm. |
||||
|
* |
||||
|
* "Normalize" the terms in the infinite-precision expression a + b for |
||||
|
* the sum of 2 floating point values so that b is as small as possible |
||||
|
* relative to 'a'. (The resulting 'a' is the value of the expression in |
||||
|
* the same precision as 'a' and the resulting b is the rounding error.) |
||||
|
* |a| must be >= |b| or 0, b's type must be no larger than 'a's type, and |
||||
|
* exponent overflow or underflow must not occur. This uses a Theorem of |
||||
|
* Dekker (1971). See Knuth (1981) 4.2.2 Theorem C. The name "TwoSum" |
||||
|
* is apparently due to Skewchuk (1997). |
||||
|
* |
||||
|
* For this to always work, assignment of a + b to 'a' must not retain any |
||||
|
* extra precision in a + b. This is required by C standards but broken |
||||
|
* in many compilers. The brokenness cannot be worked around using |
||||
|
* STRICT_ASSIGN() like we do elsewhere, since the efficiency of this |
||||
|
* algorithm would be destroyed by non-null strict assignments. (The |
||||
|
* compilers are correct to be broken -- the efficiency of all floating |
||||
|
* point code calculations would be destroyed similarly if they forced the |
||||
|
* conversions.) |
||||
|
* |
||||
|
* Fortunately, a case that works well can usually be arranged by building |
||||
|
* any extra precision into the type of 'a' -- 'a' should have type float_t, |
||||
|
* double_t or long double. b's type should be no larger than 'a's type. |
||||
|
* Callers should use these types with scopes as large as possible, to |
||||
|
* reduce their own extra-precision and efficiciency problems. In |
||||
|
* particular, they shouldn't convert back and forth just to call here. |
||||
|
*/ |
||||
|
#ifdef DEBUG |
||||
|
#define _2sumF(a, b) do { \ |
||||
|
__typeof(a) __w; \ |
||||
|
volatile __typeof(a) __ia, __ib, __r, __vw; \ |
||||
|
\ |
||||
|
__ia = (a); \ |
||||
|
__ib = (b); \ |
||||
|
assert(__ia == 0 || fabsl(__ia) >= fabsl(__ib)); \ |
||||
|
\ |
||||
|
__w = (a) + (b); \ |
||||
|
(b) = ((a) - __w) + (b); \ |
||||
|
(a) = __w; \ |
||||
|
\ |
||||
|
/* The next 2 assertions are weak if (a) is already long double. */ \ |
||||
|
assert((long double)__ia + __ib == (long double)(a) + (b)); \ |
||||
|
__vw = __ia + __ib; \ |
||||
|
__r = __ia - __vw; \ |
||||
|
__r += __ib; \ |
||||
|
assert(__vw == (a) && __r == (b)); \ |
||||
|
} while (0) |
||||
|
#else /* !DEBUG */ |
||||
|
#define _2sumF(a, b) do { \ |
||||
|
__typeof(a) __w; \ |
||||
|
\ |
||||
|
__w = (a) + (b); \ |
||||
|
(b) = ((a) - __w) + (b); \ |
||||
|
(a) = __w; \ |
||||
|
} while (0) |
||||
|
#endif /* DEBUG */ |
||||
|
|
||||
|
/*
|
||||
|
* Set x += c, where x is represented in extra precision as a + b. |
||||
|
* x must be sufficiently normalized and sufficiently larger than c, |
||||
|
* and the result is then sufficiently normalized. |
||||
|
* |
||||
|
* The details of ordering are that |a| must be >= |c| (so that (a, c) |
||||
|
* can be normalized without extra work to swap 'a' with c). The details of |
||||
|
* the normalization are that b must be small relative to the normalized 'a'. |
||||
|
* Normalization of (a, c) makes the normalized c tiny relative to the |
||||
|
* normalized a, so b remains small relative to 'a' in the result. However, |
||||
|
* b need not ever be tiny relative to 'a'. For example, b might be about |
||||
|
* 2**20 times smaller than 'a' to give about 20 extra bits of precision. |
||||
|
* That is usually enough, and adding c (which by normalization is about |
||||
|
* 2**53 times smaller than a) cannot change b significantly. However, |
||||
|
* cancellation of 'a' with c in normalization of (a, c) may reduce 'a' |
||||
|
* significantly relative to b. The caller must ensure that significant |
||||
|
* cancellation doesn't occur, either by having c of the same sign as 'a', |
||||
|
* or by having |c| a few percent smaller than |a|. Pre-normalization of |
||||
|
* (a, b) may help. |
||||
|
* |
||||
|
* This is is a variant of an algorithm of Kahan (see Knuth (1981) 4.2.2 |
||||
|
* exercise 19). We gain considerable efficiency by requiring the terms to |
||||
|
* be sufficiently normalized and sufficiently increasing. |
||||
|
*/ |
||||
|
#define _3sumF(a, b, c) do { \ |
||||
|
__typeof(a) __tmp; \ |
||||
|
\ |
||||
|
__tmp = (c); \ |
||||
|
_2sumF(__tmp, (a)); \ |
||||
|
(b) += (a); \ |
||||
|
(a) = __tmp; \ |
||||
|
} while (0) |
||||
|
|
||||
|
/*
|
||||
|
* Common routine to process the arguments to nan(), nanf(), and nanl(). |
||||
|
*/ |
||||
|
void _scan_nan(uint32_t *__words, int __num_words, const char *__s); |
||||
|
|
||||
|
#ifdef _COMPLEX_H |
||||
|
|
||||
|
/*
|
||||
|
* C99 specifies that complex numbers have the same representation as |
||||
|
* an array of two elements, where the first element is the real part |
||||
|
* and the second element is the imaginary part. |
||||
|
*/ |
||||
|
typedef union { |
||||
|
float complex f; |
||||
|
float a[2]; |
||||
|
} float_complex; |
||||
|
typedef union { |
||||
|
double complex f; |
||||
|
double a[2]; |
||||
|
} double_complex; |
||||
|
typedef union { |
||||
|
long double complex f; |
||||
|
long double a[2]; |
||||
|
} long_double_complex; |
||||
|
#define REALPART(z) ((z).a[0]) |
||||
|
#define IMAGPART(z) ((z).a[1]) |
||||
|
|
||||
|
/*
|
||||
|
* Inline functions that can be used to construct complex values. |
||||
|
* |
||||
|
* The C99 standard intends x+I*y to be used for this, but x+I*y is |
||||
|
* currently unusable in general since gcc introduces many overflow, |
||||
|
* underflow, sign and efficiency bugs by rewriting I*y as |
||||
|
* (0.0+I)*(y+0.0*I) and laboriously computing the full complex product. |
||||
|
* In particular, I*Inf is corrupted to NaN+I*Inf, and I*-0 is corrupted |
||||
|
* to -0.0+I*0.0. |
||||
|
*/ |
||||
|
static __inline float complex |
||||
|
cpackf(float x, float y) |
||||
|
{ |
||||
|
float_complex z; |
||||
|
|
||||
|
REALPART(z) = x; |
||||
|
IMAGPART(z) = y; |
||||
|
return (z.f); |
||||
|
} |
||||
|
|
||||
|
static __inline double complex |
||||
|
cpack(double x, double y) |
||||
|
{ |
||||
|
double_complex z; |
||||
|
|
||||
|
REALPART(z) = x; |
||||
|
IMAGPART(z) = y; |
||||
|
return (z.f); |
||||
|
} |
||||
|
|
||||
|
static __inline long double complex |
||||
|
cpackl(long double x, long double y) |
||||
|
{ |
||||
|
long_double_complex z; |
||||
|
|
||||
|
REALPART(z) = x; |
||||
|
IMAGPART(z) = y; |
||||
|
return (z.f); |
||||
|
} |
||||
|
#endif /* _COMPLEX_H */ |
||||
|
|
||||
|
#ifdef __GNUCLIKE_ASM |
||||
|
|
||||
|
/* Asm versions of some functions. */ |
||||
|
|
||||
|
#ifdef __amd64__ |
||||
|
static __inline int |
||||
|
irint(double x) |
||||
|
{ |
||||
|
int n; |
||||
|
|
||||
|
asm("cvtsd2si %1,%0" : "=r" (n) : "x" (x)); |
||||
|
return (n); |
||||
|
} |
||||
|
#define HAVE_EFFICIENT_IRINT |
||||
|
#endif |
||||
|
|
||||
|
#ifdef __i386__ |
||||
|
static __inline int |
||||
|
irint(double x) |
||||
|
{ |
||||
|
int n; |
||||
|
|
||||
|
asm("fistl %0" : "=m" (n) : "t" (x)); |
||||
|
return (n); |
||||
|
} |
||||
|
#define HAVE_EFFICIENT_IRINT |
||||
|
#endif |
||||
|
|
||||
|
#if defined(__amd64__) || defined(__i386__) |
||||
|
static __inline int |
||||
|
irintl(long double x) |
||||
|
{ |
||||
|
int n; |
||||
|
|
||||
|
asm("fistl %0" : "=m" (n) : "t" (x)); |
||||
|
return (n); |
||||
|
} |
||||
|
#define HAVE_EFFICIENT_IRINTL |
||||
|
#endif |
||||
|
|
||||
|
#endif /* __GNUCLIKE_ASM */ |
||||
|
|
||||
|
#ifdef DEBUG |
||||
|
#if defined(__amd64__) || defined(__i386__) |
||||
|
#define breakpoint() asm("int $3") |
||||
|
#else |
||||
|
#include <signal.h> |
||||
|
|
||||
|
#define breakpoint() raise(SIGTRAP) |
||||
|
#endif |
||||
|
#endif |
||||
|
|
||||
|
/* Write a pari script to test things externally. */ |
||||
|
#ifdef DOPRINT |
||||
|
#include <stdio.h> |
||||
|
|
||||
|
#ifndef DOPRINT_SWIZZLE |
||||
|
#define DOPRINT_SWIZZLE 0 |
||||
|
#endif |
||||
|
|
||||
|
#ifdef DOPRINT_LD80 |
||||
|
|
||||
|
#define DOPRINT_START(xp) do { \ |
||||
|
uint64_t __lx; \ |
||||
|
uint16_t __hx; \ |
||||
|
\ |
||||
|
/* Hack to give more-problematic args. */ \ |
||||
|
EXTRACT_LDBL80_WORDS(__hx, __lx, *xp); \ |
||||
|
__lx ^= DOPRINT_SWIZZLE; \ |
||||
|
INSERT_LDBL80_WORDS(*xp, __hx, __lx); \ |
||||
|
printf("x = %.21Lg; ", (long double)*xp); \ |
||||
|
} while (0) |
||||
|
#define DOPRINT_END1(v) \ |
||||
|
printf("y = %.21Lg; z = 0; show(x, y, z);\n", (long double)(v)) |
||||
|
#define DOPRINT_END2(hi, lo) \ |
||||
|
printf("y = %.21Lg; z = %.21Lg; show(x, y, z);\n", \ |
||||
|
(long double)(hi), (long double)(lo)) |
||||
|
|
||||
|
#elif defined(DOPRINT_D64) |
||||
|
|
||||
|
#define DOPRINT_START(xp) do { \ |
||||
|
uint32_t __hx, __lx; \ |
||||
|
\ |
||||
|
EXTRACT_WORDS(__hx, __lx, *xp); \ |
||||
|
__lx ^= DOPRINT_SWIZZLE; \ |
||||
|
INSERT_WORDS(*xp, __hx, __lx); \ |
||||
|
printf("x = %.21Lg; ", (long double)*xp); \ |
||||
|
} while (0) |
||||
|
#define DOPRINT_END1(v) \ |
||||
|
printf("y = %.21Lg; z = 0; show(x, y, z);\n", (long double)(v)) |
||||
|
#define DOPRINT_END2(hi, lo) \ |
||||
|
printf("y = %.21Lg; z = %.21Lg; show(x, y, z);\n", \ |
||||
|
(long double)(hi), (long double)(lo)) |
||||
|
|
||||
|
#elif defined(DOPRINT_F32) |
||||
|
|
||||
|
#define DOPRINT_START(xp) do { \ |
||||
|
uint32_t __hx; \ |
||||
|
\ |
||||
|
GET_FLOAT_WORD(__hx, *xp); \ |
||||
|
__hx ^= DOPRINT_SWIZZLE; \ |
||||
|
SET_FLOAT_WORD(*xp, __hx); \ |
||||
|
printf("x = %.21Lg; ", (long double)*xp); \ |
||||
|
} while (0) |
||||
|
#define DOPRINT_END1(v) \ |
||||
|
printf("y = %.21Lg; z = 0; show(x, y, z);\n", (long double)(v)) |
||||
|
#define DOPRINT_END2(hi, lo) \ |
||||
|
printf("y = %.21Lg; z = %.21Lg; show(x, y, z);\n", \ |
||||
|
(long double)(hi), (long double)(lo)) |
||||
|
|
||||
|
#else /* !DOPRINT_LD80 && !DOPRINT_D64 (LD128 only) */ |
||||
|
|
||||
|
#ifndef DOPRINT_SWIZZLE_HIGH |
||||
|
#define DOPRINT_SWIZZLE_HIGH 0 |
||||
|
#endif |
||||
|
|
||||
|
#define DOPRINT_START(xp) do { \ |
||||
|
uint64_t __lx, __llx; \ |
||||
|
uint16_t __hx; \ |
||||
|
\ |
||||
|
EXTRACT_LDBL128_WORDS(__hx, __lx, __llx, *xp); \ |
||||
|
__llx ^= DOPRINT_SWIZZLE; \ |
||||
|
__lx ^= DOPRINT_SWIZZLE_HIGH; \ |
||||
|
INSERT_LDBL128_WORDS(*xp, __hx, __lx, __llx); \ |
||||
|
printf("x = %.36Lg; ", (long double)*xp); \ |
||||
|
} while (0) |
||||
|
#define DOPRINT_END1(v) \ |
||||
|
printf("y = %.36Lg; z = 0; show(x, y, z);\n", (long double)(v)) |
||||
|
#define DOPRINT_END2(hi, lo) \ |
||||
|
printf("y = %.36Lg; z = %.36Lg; show(x, y, z);\n", \ |
||||
|
(long double)(hi), (long double)(lo)) |
||||
|
|
||||
|
#endif /* DOPRINT_LD80 */ |
||||
|
|
||||
|
#else /* !DOPRINT */ |
||||
|
#define DOPRINT_START(xp) |
||||
|
#define DOPRINT_END1(v) |
||||
|
#define DOPRINT_END2(hi, lo) |
||||
|
#endif /* DOPRINT */ |
||||
|
|
||||
|
#define RETURNP(x) do { \ |
||||
|
DOPRINT_END1(x); \ |
||||
|
RETURNF(x); \ |
||||
|
} while (0) |
||||
|
#define RETURNPI(x) do { \ |
||||
|
DOPRINT_END1(x); \ |
||||
|
RETURNI(x); \ |
||||
|
} while (0) |
||||
|
#define RETURN2P(x, y) do { \ |
||||
|
DOPRINT_END2((x), (y)); \ |
||||
|
RETURNF((x) + (y)); \ |
||||
|
} while (0) |
||||
|
#define RETURN2PI(x, y) do { \ |
||||
|
DOPRINT_END2((x), (y)); \ |
||||
|
RETURNI((x) + (y)); \ |
||||
|
} while (0) |
||||
|
#ifdef STRUCT_RETURN |
||||
|
#define RETURNSP(rp) do { \ |
||||
|
if (!(rp)->lo_set) \ |
||||
|
RETURNP((rp)->hi); \ |
||||
|
RETURN2P((rp)->hi, (rp)->lo); \ |
||||
|
} while (0) |
||||
|
#define RETURNSPI(rp) do { \ |
||||
|
if (!(rp)->lo_set) \ |
||||
|
RETURNPI((rp)->hi); \ |
||||
|
RETURN2PI((rp)->hi, (rp)->lo); \ |
||||
|
} while (0) |
||||
|
#endif |
||||
|
#define SUM2P(x, y) ({ \ |
||||
|
const __typeof (x) __x = (x); \ |
||||
|
const __typeof (y) __y = (y); \ |
||||
|
\ |
||||
|
DOPRINT_END2(__x, __y); \ |
||||
|
__x + __y; \ |
||||
|
}) |
||||
|
|
||||
|
/*
|
||||
|
* ieee style elementary functions |
||||
|
* |
||||
|
* We rename functions here to improve other sources' diffability |
||||
|
* against fdlibm. |
||||
|
*/ |
||||
|
#define __ieee754_sqrt sqrt |
||||
|
#define __ieee754_acos acos |
||||
|
#define __ieee754_acosh acosh |
||||
|
#define __ieee754_log log |
||||
|
#define __ieee754_log2 log2 |
||||
|
#define __ieee754_atanh atanh |
||||
|
#define __ieee754_asin asin |
||||
|
#define __ieee754_atan2 atan2 |
||||
|
#define __ieee754_exp exp |
||||
|
#define __ieee754_cosh cosh |
||||
|
#define __ieee754_fmod fmod |
||||
|
#define __ieee754_pow pow |
||||
|
#define __ieee754_lgamma lgamma |
||||
|
#define __ieee754_gamma gamma |
||||
|
#define __ieee754_lgamma_r lgamma_r |
||||
|
#define __ieee754_gamma_r gamma_r |
||||
|
#define __ieee754_log10 log10 |
||||
|
#define __ieee754_sinh sinh |
||||
|
#define __ieee754_hypot hypot |
||||
|
#define __ieee754_j0 j0 |
||||
|
#define __ieee754_j1 j1 |
||||
|
#define __ieee754_y0 y0 |
||||
|
#define __ieee754_y1 y1 |
||||
|
#define __ieee754_jn jn |
||||
|
#define __ieee754_yn yn |
||||
|
#define __ieee754_remainder remainder |
||||
|
#define __ieee754_scalb scalb |
||||
|
#define __ieee754_sqrtf sqrtf |
||||
|
#define __ieee754_acosf acosf |
||||
|
#define __ieee754_acoshf acoshf |
||||
|
#define __ieee754_logf logf |
||||
|
#define __ieee754_atanhf atanhf |
||||
|
#define __ieee754_asinf asinf |
||||
|
#define __ieee754_atan2f atan2f |
||||
|
#define __ieee754_expf expf |
||||
|
#define __ieee754_coshf coshf |
||||
|
#define __ieee754_fmodf fmodf |
||||
|
#define __ieee754_powf powf |
||||
|
#define __ieee754_lgammaf lgammaf |
||||
|
#define __ieee754_gammaf gammaf |
||||
|
#define __ieee754_lgammaf_r lgammaf_r |
||||
|
#define __ieee754_gammaf_r gammaf_r |
||||
|
#define __ieee754_log10f log10f |
||||
|
#define __ieee754_log2f log2f |
||||
|
#define __ieee754_sinhf sinhf |
||||
|
#define __ieee754_hypotf hypotf |
||||
|
#define __ieee754_j0f j0f |
||||
|
#define __ieee754_j1f j1f |
||||
|
#define __ieee754_y0f y0f |
||||
|
#define __ieee754_y1f y1f |
||||
|
#define __ieee754_jnf jnf |
||||
|
#define __ieee754_ynf ynf |
||||
|
#define __ieee754_remainderf remainderf |
||||
|
#define __ieee754_scalbf scalbf |
||||
|
|
||||
|
/* fdlibm kernel function */ |
||||
|
int __kernel_rem_pio2(double*,double*,int,int,int); |
||||
|
|
||||
|
/* double precision kernel functions */ |
||||
|
#ifndef INLINE_REM_PIO2 |
||||
|
int __ieee754_rem_pio2(double,double*); |
||||
|
#endif |
||||
|
double __kernel_sin(double,double,int); |
||||
|
double __kernel_cos(double,double); |
||||
|
double __kernel_tan(double,double,int); |
||||
|
double __ldexp_exp(double,int); |
||||
|
#ifdef _COMPLEX_H |
||||
|
double complex __ldexp_cexp(double complex,int); |
||||
|
#endif |
||||
|
|
||||
|
/* float precision kernel functions */ |
||||
|
#ifndef INLINE_REM_PIO2F |
||||
|
int __ieee754_rem_pio2f(float,double*); |
||||
|
#endif |
||||
|
#ifndef INLINE_KERNEL_SINDF |
||||
|
float __kernel_sindf(double); |
||||
|
#endif |
||||
|
#ifndef INLINE_KERNEL_COSDF |
||||
|
float __kernel_cosdf(double); |
||||
|
#endif |
||||
|
#ifndef INLINE_KERNEL_TANDF |
||||
|
float __kernel_tandf(double,int); |
||||
|
#endif |
||||
|
float __ldexp_expf(float,int); |
||||
|
#ifdef _COMPLEX_H |
||||
|
float complex __ldexp_cexpf(float complex,int); |
||||
|
#endif |
||||
|
|
||||
|
/* long double precision kernel functions */ |
||||
|
long double __kernel_sinl(long double, long double, int); |
||||
|
long double __kernel_cosl(long double, long double); |
||||
|
long double __kernel_tanl(long double, long double, int); |
||||
|
|
||||
|
#endif /* !_MATH_PRIVATE_H_ */ |
@ -0,0 +1,27 @@ |
|||||
|
--- ./libgc/pthread_stop_world.c 2017-01-03 15:49:34.000000000 +0530
|
||||
|
+++ ../pthread_stop_world.c 2017-01-05 18:54:28.314868754 +0530
|
||||
|
@@ -379,11 +379,7 @@
|
||||
|
GC_printf1("Sending suspend signal to 0x%lx\n", p -> id); |
||||
|
#endif |
||||
|
|
||||
|
-#ifndef PLATFORM_ANDROID
|
||||
|
result = pthread_kill(p -> id, SIG_SUSPEND); |
||||
|
-#else
|
||||
|
- result = android_thread_kill(p -> kernel_id, SIG_SUSPEND);
|
||||
|
-#endif
|
||||
|
switch(result) { |
||||
|
case ESRCH: |
||||
|
/* Not really there anymore. Possible? */ |
||||
|
--- ./mono/utils/mono-threads-posix.c 2017-01-03 15:49:38.000000000 +0530
|
||||
|
+++ ../mono-threads-posix.c 2017-01-05 18:57:48.313245586 +0530
|
||||
|
@@ -21,10 +21,6 @@
|
||||
|
|
||||
|
#include <errno.h> |
||||
|
|
||||
|
-#if defined(PLATFORM_ANDROID) && !defined(TARGET_ARM64) && !defined(TARGET_AMD64)
|
||||
|
-#define USE_TKILL_ON_ANDROID 1
|
||||
|
-#endif
|
||||
|
-
|
||||
|
#ifdef USE_TKILL_ON_ANDROID |
||||
|
extern int tkill (pid_t tid, int signal); |
||||
|
#endif |
@ -0,0 +1,84 @@ |
|||||
|
TERMUX_PKG_VERSION=5.10.0 |
||||
|
TERMUX_PKG_HOMEPAGE=https://www.qt.io |
||||
|
TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" |
||||
|
TERMUX_PKG_SRCURL="http://download.qt.io/official_releases/qt/${TERMUX_PKG_VERSION%.*}/$TERMUX_PKG_VERSION/single/qt-everywhere-src-$TERMUX_PKG_VERSION.tar.xz" |
||||
|
TERMUX_PKG_SHA256=936d4cf5d577298f4f9fdb220e85b008ae321554a5fcd38072dc327a7296230e |
||||
|
TERMUX_PKG_DEPENDS="libsqlite, libjpeg-turbo, libpng, pcre2, openssl, libandroid-support, freetype, harfbuzz, libwebp, postgresql, mariadb, fontconfig, libopus, libevent, jsoncpp, libprotobuf" |
||||
|
TERMUX_PKG_BUILD_IN_SRC=true |
||||
|
TERMUX_PKG_EXTRA_MAKE_ARGS=" -s" |
||||
|
|
||||
|
termux_step_pre_configure () { |
||||
|
#if [ $TERMUX_ARCH_BITS = 32 ]; then |
||||
|
# CPPFLAGS+=" -DTERMUX_EXPOSE_FILE_OFFSET64=1" |
||||
|
#fi |
||||
|
LDFLAGS+=" -llog -lpcre2-16 -lpng16 -ljpeg -lsqlite3 -lssl -lfreetype -lharfbuzz -lz -lfontconfig -lwebp -lpq -lmariadb" |
||||
|
CPPFLAGS+=" -I$TERMUX_PKG_SRCDIR/include -I$TERMUX_PREFIX/include/freetype2 -I$TERMUX_PREFIX/include/fontconfig -I$TERMUX_PREFIX/include/mysql -I$TERMUX_PKG_BUILDER_DIR" |
||||
|
#CFLAGS+=" $CPPFLAGS" |
||||
|
#CXXFLAGS+=" $CPPFLAGS" |
||||
|
sed -e "s|@TERMUX_HOST_PLATFORM@|$TERMUX_HOST_PLATFORM|g" \ |
||||
|
-e "s|@CFLAGS@|$CPPFLAGS $CFLAGS|" \ |
||||
|
-e "s|@CXXFLAGS@|$CPPFLAGS $CXXFLAGS|" \ |
||||
|
-e "s|@LDFLAGS@|$LDFLAGS|" $TERMUX_PKG_BUILDER_DIR/mkspec.diff | patch -p1 |
||||
|
} |
||||
|
|
||||
|
termux_step_configure () { |
||||
|
export PKG_CONFIG_SYSROOT_DIR="/" |
||||
|
|
||||
|
$TERMUX_PKG_SRCDIR/configure \ |
||||
|
-confirm-license \ |
||||
|
-optimize-size \ |
||||
|
-optimized-tools \ |
||||
|
-opensource \ |
||||
|
-pkg-config \ |
||||
|
-system-sqlite \ |
||||
|
-system-zlib \ |
||||
|
-system-libjpeg \ |
||||
|
-system-libpng \ |
||||
|
-system-pcre \ |
||||
|
-system-freetype \ |
||||
|
-system-harfbuzz \ |
||||
|
-qpa vnc \ |
||||
|
-opengl es2\ |
||||
|
-opengles3 \ |
||||
|
-no-eglfs \ |
||||
|
-syslog \ |
||||
|
-no-assimp \ |
||||
|
-no-cups \ |
||||
|
-no-icu \ |
||||
|
-no-glib \ |
||||
|
-no-dbus \ |
||||
|
-no-fontconfig \ |
||||
|
-force-asserts \ |
||||
|
-system-webp \ |
||||
|
-system-opus \ |
||||
|
-no-pulseaudio \ |
||||
|
-openssl-runtime \ |
||||
|
-nomake examples \ |
||||
|
-prefix $TERMUX_PREFIX \ |
||||
|
-xplatform linux-termux-clang \ |
||||
|
-nomake tests \ |
||||
|
-plugindir "$TERMUX_PREFIX/libexec/Qt" |
||||
|
|
||||
|
make -j $TERMUX_MAKE_PROCESSES -C "$TERMUX_PKG_BUILDDIR" qmake_all || true |
||||
|
|
||||
|
for _makefile in `find "$TERMUX_PKG_BUILDDIR" -type f -name Makefile`; do |
||||
|
sed -i "s| -lrt||g" "$_makefile" |
||||
|
done |
||||
|
} |
||||
|
|
||||
|
termux_step_post_massage () { |
||||
|
# cross compilation only builds tools usable on build machine (i.e. cross tools) |
||||
|
# manually make tools to be used by the host machine |
||||
|
for tool in src/tools/{moc,qlalr,uic,rcc} qmake; do |
||||
|
cd "$TERMUX_PKG_SRCDIR"/qtbase/$tool |
||||
|
make clean $TERMUX_PKG_EXTRA_MAKE_ARGS |
||||
|
$TERMUX_PREFIX/bin/qmake |
||||
|
make -j $TERMUX_MAKE_PROCESSES $TERMUX_PKG_EXTRA_MAKE_ARGS |
||||
|
#make -j $TERMUX_MAKE_PROCESSES $TERMUX_PKG_EXTRA_MAKE_ARGS CC=$CC CXX=$CXX LINK=$CXX AR="$AR cqs" STRIP=$STRIP \ |
||||
|
# QMAKESPEC=$TERMUX_PKG_SRCDIR/qtbase/mkspecs/linux-termux-clang \ |
||||
|
# QMAKE_LFLAGS=$TERMUX_PREFIX/lib/libc++_shared.so \ |
||||
|
# LIBS="$TERMUX_PREFIX/lib/libc++_shared.so $TERMUX_PKG_BUILDDIR/qtbase/lib/libQt5Core.so $LDFLAGS" |
||||
|
done |
||||
|
|
||||
|
cp "$TERMUX_PKG_BUILDDIR"/qtbase/bin/{moc,qlalr,uic,rcc,qmake} "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX"/bin/ |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
#ifndef FAKE_EXECINFO_H |
||||
|
#define FAKE_EXECINFO_H |
||||
|
int backtrace(void **array, int size) { return 0; } |
||||
|
char **backtrace_symbols(void *const *array, int size) { return 0; } |
||||
|
void backtrace_symbols_fd (void *const *array, int size, int fd) {} |
||||
|
#endif |
@ -0,0 +1,81 @@ |
|||||
|
--- ./qtbase/mkspecs/linux-termux-clang/qmake.conf 1970-01-01 05:30:00.000000000 +0530
|
||||
|
+++ ./qtbase/mkspecs/linux-termux-clang/qmake.conf 2017-07-14 23:06:45.553367565 +0530
|
||||
|
@@ -0,0 +1,32 @@
|
||||
|
+MAKEFILE_GENERATOR = UNIX
|
||||
|
+CONFIG += incremental unversioned_libname unversioned_soname plugin_with_soname qt
|
||||
|
+QMAKE_INCREMENTAL_STYLE = sublib
|
||||
|
+
|
||||
|
+include(../common/linux.conf)
|
||||
|
+include(../common/gcc-base-unix.conf)
|
||||
|
+include(../common/clang.conf)
|
||||
|
+
|
||||
|
+QMAKE_CC = @TERMUX_HOST_PLATFORM@-clang
|
||||
|
+QMAKE_CXX = @TERMUX_HOST_PLATFORM@-clang++
|
||||
|
+QMAKE_LINK = @TERMUX_HOST_PLATFORM@-clang++
|
||||
|
+QMAKE_LINK_SHLIB = @TERMUX_HOST_PLATFORM@-clang++
|
||||
|
+
|
||||
|
+QMAKE_AR = @TERMUX_HOST_PLATFORM@-ar cqs
|
||||
|
+QMAKE_OBJCOPY = @TERMUX_HOST_PLATFORM@-objcopy
|
||||
|
+QMAKE_NM = @TERMUX_HOST_PLATFORM@-nm -P
|
||||
|
+QMAKE_STRIP = @TERMUX_HOST_PLATFORM@-strip
|
||||
|
+
|
||||
|
+QMAKE_CFLAGS = @CFLAGS@
|
||||
|
+QMAKE_CXXFLAGS = @CXXFLAGS@
|
||||
|
+QMAKE_LFLAGS = @LDFLAGS@
|
||||
|
+
|
||||
|
+QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared
|
||||
|
+QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared
|
||||
|
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
|
||||
|
+QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
|
||||
|
+
|
||||
|
+QMAKE_LIBS_THREAD =
|
||||
|
+QMAKE_LIBS_X11 =
|
||||
|
+QMAKE_LIBS_OPENGL =
|
||||
|
+QMAKE_LIBS_OPENGL_ES2 = -lGLESv3
|
||||
|
+load(qt_config)
|
||||
|
--- ./qtbase/mkspecs/linux-termux-clang/qplatformdefs.h 1970-01-01 05:30:00.000000000 +0530
|
||||
|
+++ ./qtbase/mkspecs/linux-termux-clang/qplatformdefs.h 2017-07-14 23:08:02.031153237 +0530
|
||||
|
@@ -0,0 +1,43 @@
|
||||
|
+/****************************************************************************
|
||||
|
+**
|
||||
|
+** Copyright (C) 2016 The Qt Company Ltd.
|
||||
|
+** Contact: https://www.qt.io/licensing/
|
||||
|
+**
|
||||
|
+** This file is part of the qmake spec of the Qt Toolkit.
|
||||
|
+**
|
||||
|
+** $QT_BEGIN_LICENSE:LGPL$
|
||||
|
+** Commercial License Usage
|
||||
|
+** Licensees holding valid commercial Qt licenses may use this file in
|
||||
|
+** accordance with the commercial license agreement provided with the
|
||||
|
+** Software or, alternatively, in accordance with the terms contained in
|
||||
|
+** a written agreement between you and The Qt Company. For licensing terms
|
||||
|
+** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
|
+** information use the contact form at https://www.qt.io/contact-us.
|
||||
|
+**
|
||||
|
+** GNU Lesser General Public License Usage
|
||||
|
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
|
+** General Public License version 3 as published by the Free Software
|
||||
|
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
|
+** packaging of this file. Please review the following information to
|
||||
|
+** ensure the GNU Lesser General Public License version 3 requirements
|
||||
|
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
|
+**
|
||||
|
+** GNU General Public License Usage
|
||||
|
+** Alternatively, this file may be used under the terms of the GNU
|
||||
|
+** General Public License version 2.0 or (at your option) the GNU General
|
||||
|
+** Public license version 3 or any later version approved by the KDE Free
|
||||
|
+** Qt Foundation. The licenses are as published by the Free Software
|
||||
|
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
|
+** included in the packaging of this file. Please review the following
|
||||
|
+** information to ensure the GNU General Public License requirements will
|
||||
|
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
|
+** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
|
+**
|
||||
|
+** $QT_END_LICENSE$
|
||||
|
+**
|
||||
|
+****************************************************************************/
|
||||
|
+
|
||||
|
+#include "../android-clang/qplatformdefs.h"
|
||||
|
+#define fseeko64 fseeko
|
||||
|
+#define ftello64 ftello
|
||||
|
+#define fopen64 fopen
|
@ -0,0 +1,12 @@ |
|||||
|
--- ./qtbase/src/corelib/global/qsystemdetection.h 2017-06-28 15:24:29.000000000 +0530
|
||||
|
+++ ../qsystemdetection.h 2017-07-19 19:39:39.617805768 +0530
|
||||
|
@@ -120,9 +120,6 @@
|
||||
|
# else |
||||
|
# error "Qt has not been ported to this Apple platform - see http://www.qt.io/developers" |
||||
|
# endif |
||||
|
-#elif defined(__ANDROID__) || defined(ANDROID)
|
||||
|
-# define Q_OS_ANDROID
|
||||
|
-# define Q_OS_LINUX
|
||||
|
#elif defined(__CYGWIN__) |
||||
|
# define Q_OS_CYGWIN |
||||
|
#elif !defined(SAG_COM) && (!defined(WINAPI_FAMILY) || WINAPI_FAMILY==WINAPI_FAMILY_DESKTOP_APP) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) |
@ -0,0 +1,47 @@ |
|||||
|
--- ./qtbase/src/corelib/thread/qthread_unix.cpp 2017-06-28 15:24:29.000000000 +0530
|
||||
|
+++ ../qthread_unix.cpp 2017-07-19 20:19:40.071681378 +0530
|
||||
|
@@ -101,7 +101,7 @@
|
||||
|
# define SCHED_IDLE 5 |
||||
|
#endif |
||||
|
|
||||
|
-#if defined(Q_OS_DARWIN) || !defined(Q_OS_ANDROID) && !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
|
||||
|
+#if !defined(__ANDROID__) && (defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0))
|
||||
|
#define QT_HAS_THREAD_PRIORITY_SCHEDULING |
||||
|
#endif |
||||
|
|
||||
|
@@ -319,7 +319,7 @@
|
||||
|
|
||||
|
void *QThreadPrivate::start(void *arg) |
||||
|
{ |
||||
|
-#if !defined(Q_OS_ANDROID)
|
||||
|
+#if !defined(__ANDROID__)
|
||||
|
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); |
||||
|
#endif |
||||
|
pthread_cleanup_push(QThreadPrivate::finish, arg); |
||||
|
@@ -369,7 +369,7 @@
|
||||
|
#endif |
||||
|
|
||||
|
emit thr->started(QThread::QPrivateSignal()); |
||||
|
-#if !defined(Q_OS_ANDROID)
|
||||
|
+#if !defined(__ANDROID__)
|
||||
|
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); |
||||
|
pthread_testcancel(); |
||||
|
#endif |
||||
|
@@ -666,7 +666,7 @@
|
||||
|
|
||||
|
void QThread::terminate() |
||||
|
{ |
||||
|
-#if !defined(Q_OS_ANDROID)
|
||||
|
+#if !defined(__ANDROID__)
|
||||
|
Q_D(QThread); |
||||
|
QMutexLocker locker(&d->mutex); |
||||
|
|
||||
|
@@ -708,7 +708,7 @@
|
||||
|
"Current thread was not started with QThread."); |
||||
|
|
||||
|
Q_UNUSED(thr) |
||||
|
-#if defined(Q_OS_ANDROID)
|
||||
|
+#if defined(__ANDROID__)
|
||||
|
Q_UNUSED(enabled); |
||||
|
#else |
||||
|
pthread_setcancelstate(enabled ? PTHREAD_CANCEL_ENABLE : PTHREAD_CANCEL_DISABLE, NULL); |
@ -0,0 +1,14 @@ |
|||||
|
--- ./qtlocation/src/plugins/geoservices/geoservices.pro 2017-09-25 22:25:20.000000000 +0530
|
||||
|
+++ ../geoservices.pro 2017-11-16 11:28:04.911486902 +0530
|
||||
|
@@ -8,11 +8,3 @@
|
||||
|
qtConfig(geoservices_itemsoverlay): SUBDIRS += itemsoverlay |
||||
|
qtConfig(geoservices_osm): SUBDIRS += osm |
||||
|
|
||||
|
-qtConfig(geoservices_mapboxgl) {
|
||||
|
- !exists(../../3rdparty/mapbox-gl-native/mapbox-gl-native.pro) {
|
||||
|
- warning("Submodule mapbox-gl-native does not exist. Run 'git submodule update --init' on qtlocation.")
|
||||
|
- } else {
|
||||
|
- SUBDIRS += mapboxgl ../../3rdparty/mapbox-gl-native
|
||||
|
- mapboxgl.depends = ../../3rdparty/mapbox-gl-native
|
||||
|
- }
|
||||
|
-}
|
@ -0,0 +1,10 @@ |
|||||
|
--- ./qtsensors/src/plugins/sensors/linux/linux.pro 2017-06-23 12:02:15.000000000 +0530
|
||||
|
+++ ../linux.pro 2017-10-01 11:18:29.309218546 +0530
|
||||
|
@@ -3,7 +3,6 @@
|
||||
|
|
||||
|
OTHER_FILES = plugin.json |
||||
|
|
||||
|
-!android:LIBS += -lrt
|
||||
|
HEADERS += linuxsysaccelerometer.h |
||||
|
SOURCES += linuxsysaccelerometer.cpp \ |
||||
|
main.cpp |
@ -0,0 +1,11 @@ |
|||||
|
--- ./qtserialport/src/serialport/qserialport_unix.cpp 2017-06-20 12:29:20.000000000 +0530
|
||||
|
+++ ../qserialport_unix.cpp 2017-10-01 10:21:47.899850693 +0530
|
||||
|
@@ -66,7 +66,7 @@
|
||||
|
# define __ANDROID_API__ 21 |
||||
|
# endif |
||||
|
|
||||
|
-# if !defined(Q_OS_ANDROID) || (!defined(Q_PROCESSOR_X86) && __ANDROID_API__ < 21)
|
||||
|
+# if 0
|
||||
|
struct termios2 { |
||||
|
tcflag_t c_iflag; /* input mode flags */ |
||||
|
tcflag_t c_oflag; /* output mode flags */ |
Loading…
Reference in new issue