Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
cb5c042a
Unverified
Commit
cb5c042a
authored
Apr 07, 2019
by
Mike Gabriel
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'Ionic-bugfix/libXcomp-pthread-underlinking' into 3.6.x
Attributes GH PR #791:
https://github.com/ArcticaProject/nx-libs/pull/791
parents
59305c8b
dd0d49c4
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
49 additions
and
92 deletions
+49
-92
2004_enforce-lpthread.patch
debian/patches/2004_enforce-lpthread.patch
+0
-33
series
debian/patches/series
+0
-1
ax_cxx_compile_stdcxx.m4
m4/ax_cxx_compile_stdcxx.m4
+7
-38
ax_pthread.m4
m4/ax_pthread.m4
+40
-2
Makefile.am
nxcomp/src/Makefile.am
+1
-1
nxdialog
nxdialog/bin/nxdialog
+1
-1
.keep
nxdialog/m4/.keep
+0
-0
configure.ac
nxproxy/configure.ac
+0
-11
ax_pthread.m4
nxproxy/m4/ax_pthread.m4
+0
-2
Makefile.am
nxproxy/src/Makefile.am
+0
-3
No files found.
debian/patches/2004_enforce-lpthread.patch
deleted
100644 → 0
View file @
59305c8b
Description: Enforce -lpthread when linking nxcomp.
Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Abstract:
This is a workaround for a nasty libtool bug!!!
.
We actually compile libXcomp with pthread support, but libtool uses g++
... -nostdlib ... -pthread on Linux. -nostdlib causes -pthread to be
ignored.
.
According to GCC upstream, this is not a bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460
.
GCC upstream insists that libtool needs to handle -pthread in a special
way when using -nostdlib.
.
A patch has been submitted to the libtool project:
http://lists.gnu.org/archive/html/libtool-patches/2013-11/msg00015.html
but never applied to the code base. Boo.
.
We will work around this bug by hard-coding the linking with pthread
support in libXcomp for now.
--- a/nxcomp/src/Makefile.am
+++ b/nxcomp/src/Makefile.am
@@ -139,7 +139,7 @@
libXcomp_la_LDFLAGS = \
-version-number @LT_COMP_VERSION@ \
-no-undefined \
- $(PTHREAD_LDFLAGS) \
+ $(PTHREAD_LDFLAGS) -lpthread \
$(NULL)
libXcompincludedir = $(includedir)/nx
debian/patches/series
View file @
cb5c042a
2001_nx-X11_install-location.debian.patch
2002_xserver-xext_set-securitypolicy-path.debian.patch
2003_nxdialog-use-python3.patch
2004_enforce-lpthread.patch
m4/ax_cxx_compile_stdcxx.m4
View file @
cb5c042a
...
...
@@ -33,19 +33,19 @@
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
# Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com>
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
# Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial
7
#serial
11
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
dnl (serial version number 13).
AX_REQUIRE_DEFINED([AC_MSG_WARN])
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
[$1], [14], [ax_cxx_compile_alternatives="14 1y"],
...
...
@@ -61,14 +61,6 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
AC_LANG_PUSH([C++])dnl
ac_success=no
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
ax_cv_cxx_compile_cxx$1,
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
[ax_cv_cxx_compile_cxx$1=yes],
[ax_cv_cxx_compile_cxx$1=no])])
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
ac_success=yes
fi
m4_if([$2], [noext], [], [dnl
if test x$ac_success = xno; then
...
...
@@ -139,7 +131,6 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
[define if the compiler supports basic C++$1 syntax])
fi
AC_SUBST(HAVE_CXX$1)
m4_if([$1], [17], [AC_MSG_WARN([C++17 is not yet standardized, so the checks may change in incompatible ways anytime])])
])
...
...
@@ -199,11 +190,13 @@ namespace cxx11
struct Base
{
virtual ~Base() {}
virtual void f() {}
};
struct Derived : public Base
{
virtual ~Derived() override {}
virtual void f() override {}
};
...
...
@@ -587,20 +580,12 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
#error "This is not a C++ compiler"
#elif __cplusplus <
= 201402
L
#elif __cplusplus <
201703
L
#error "This is not a C++17 compiler"
#else
#if defined(__clang__)
#define REALLY_CLANG
#else
#if defined(__GNUC__)
#define REALLY_GCC
#endif
#endif
#include <initializer_list>
#include <utility>
#include <type_traits>
...
...
@@ -608,16 +593,12 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
namespace cxx17
{
#if !defined(REALLY_CLANG)
namespace test_constexpr_lambdas
{
// TODO: test it with clang++ from git
constexpr int foo = [](){return 42;}();
}
#endif // !defined(REALLY_CLANG)
namespace test::nested_namespace::definitions
{
...
...
@@ -852,12 +833,9 @@ namespace cxx17
}
#if !defined(REALLY_CLANG)
namespace test_template_argument_deduction_for_class_templates
{
// TODO: test it with clang++ from git
template <typename T1, typename T2>
struct pair
{
...
...
@@ -876,7 +854,6 @@ namespace cxx17
}
}
#endif // !defined(REALLY_CLANG)
namespace test_non_type_auto_template_parameters
{
...
...
@@ -890,12 +867,9 @@ namespace cxx17
}
#if !defined(REALLY_CLANG)
namespace test_structured_bindings
{
// TODO: test it with clang++ from git
int arr[2] = { 1, 2 };
std::pair<int, int> pr = { 1, 2 };
...
...
@@ -927,14 +901,10 @@ namespace cxx17
const auto [ x3, y3 ] = f3();
}
#endif // !defined(REALLY_CLANG)
#if !defined(REALLY_CLANG)
namespace test_exception_spec_type_system
{
// TODO: test it with clang++ from git
struct Good {};
struct Bad {};
...
...
@@ -952,7 +922,6 @@ namespace cxx17
static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
}
#endif // !defined(REALLY_CLANG)
namespace test_inline_variables
{
...
...
@@ -977,6 +946,6 @@ namespace cxx17
} // namespace cxx17
#endif // __cplusplus <
= 201402
L
#endif // __cplusplus <
201703
L
]])
m4/ax_pthread.m4
View file @
cb5c042a
...
...
@@ -82,7 +82,8 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 24
#serial 25
#arctica-serial 1
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
...
...
@@ -334,6 +335,42 @@ for ax_pthread_try_flag in $ax_pthread_flags; do
PTHREAD_LIBS="-lpthread"
;;
-pthread)
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
PTHREAD_CFLAGS="$ax_pthread_try_flag"
if test "x$GCC" = "xyes"; then
# Thanks to libtool bug #13550, we have to consider the possibility
# that -nostdlib will be used during compilation at some point.
# Try to determine the first pthread library available,
# ignoring any other variants.
for ax_pthread_try_lib_flag in $ax_pthread_flags; do
case $ax_pthread_try_lib_flag in
none|-*|pthread-config)
continue
;;
*)
PTHREAD_LIBS="-l$ax_pthread_try_lib_flag"
ax_pthread_save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
# We only need to link a trivial program with
# the current library value.
# Linking should fail if the library doesn't
# exist, otherwise we should be good to go.
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[LIBS="$ax_pthread_save_LIBS"
break],
[LIBS="$ax_pthread_save_LIBS"
PTHREAD_LIBS=""])
;;
esac
done
fi
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
PTHREAD_CFLAGS="$ax_pthread_try_flag"
...
...
@@ -438,7 +475,8 @@ if test "x$ax_pthread_ok" = "xyes"; then
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
[ax_cv_PTHREAD_PRIO_INHERIT],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
[[int i = PTHREAD_PRIO_INHERIT;]])],
[[int i = PTHREAD_PRIO_INHERIT;
return i;]])],
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
[ax_cv_PTHREAD_PRIO_INHERIT=no])
])
...
...
nxcomp/src/Makefile.am
View file @
cb5c042a
...
...
@@ -139,7 +139,7 @@ AM_CPPFLAGS = \
libXcomp_la_LDFLAGS
=
\
-version-number
@LT_COMP_VERSION@
\
-no-undefined
\
$(PTHREAD_LDFLAGS)
\
@PTHREAD_LIBS@
\
$(NULL)
libXcompincludedir
=
$(includedir)
/nx
...
...
nxdialog/bin/nxdialog
View file @
cb5c042a
...
...
@@ -47,7 +47,7 @@
#
# Examples:
# nxdialog --dialog yesno --message "message text" --caption "message title" --parent 0
# nxdialog --dialog
yesno
--message "message text" --caption "message title" --window 0x123456 --parent 0
# nxdialog --dialog
pulldown
--message "message text" --caption "message title" --window 0x123456 --parent 0
from
__future__
import
print_function
...
...
nxdialog/m4/.keep
0 → 100644
View file @
cb5c042a
nxproxy/configure.ac
View file @
cb5c042a
...
...
@@ -28,17 +28,6 @@ NX_DEFAULT_OPTIONS
NX_TARGET_USE_ELF
dnl This is a workaround for a nasty libtool bug.
dnl We actually compile libXcomp with pthread support, but libtool uses g++ ... -nostdlib ... -pthread
dnl on Linux. -nostdlib causes -pthread to be ignored.
dnl According to GCC upstream, this is not a bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460
dnl GCC upstream insists that libtool needs to handle -pthread in a special way when using -nostdlib.
dnl A patch has been submitted to the libtool project: http://lists.gnu.org/archive/html/libtool-patches/2013-11/msg00015.html
dnl but never applied to the code base. Boo.
dnl We will work around this bug by using AX_PTHREAD and linking with pthread support in all consumers of
dnl libXcomp for now.
AX_PTHREAD([], AC_MSG_ERROR([no POSIX threads support detected]))
AC_CONFIG_FILES([
Makefile
man/Makefile
...
...
nxproxy/m4/ax_pthread.m4
deleted
120000 → 0
View file @
59305c8b
../../m4/ax_pthread.m4
\ No newline at end of file
nxproxy/src/Makefile.am
View file @
cb5c042a
...
...
@@ -9,12 +9,10 @@ nxproxy_SOURCES = \
$(NULL)
nxproxy_LDADD
=
\
@PTHREAD_LIBS@
\
-L
$(top_srcdir)
/../nxcomp/src/.libs
-lXcomp
\
$(NULL)
nxproxy_LDFLAGS
=
\
$(PTHREAD_LDFLAGS)
\
$(NULL)
if
TARGET_ELF
...
...
@@ -25,7 +23,6 @@ endif TARGET_ELF
nxproxy_CFLAGS
=
\
$(BASE_CFLAGS)
\
$(PTHREAD_CFLAGS)
\
$(NULL)
AM_CPPFLAGS
=
\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment