1*4882a593SmuzhiyunFrom 02a44ee1df8176c72e75fd706d1a8f063d3196d5 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com> 3*4882a593SmuzhiyunDate: Mon, 5 Nov 2018 22:50:40 +0100 4*4882a593SmuzhiyunSubject: Fix linkage with a system libatomic_ops shared library 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunIssue #247 (bdwgc). 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunWhen bdwgc is linked with the external libatomic_ops, bdw-gc.pc must 9*4882a593Smuzhiyuncontain the needed dynamic libraries (such as -latomic_ops) otherwise 10*4882a593Smuzhiyunbuild of applications could fail on the link stage on some hosts: 11*4882a593Smuzhiyun* libgc.so: undefined reference to 'AO_fetch_compare_and_swap_emulation' 12*4882a593Smuzhiyun* libgc.so: undefined reference to 'AO_store_full_emulation' 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunSo, this commit sets ATOMIC_OPS_LIBS to "-latomic_ops" when a system 15*4882a593Smuzhiyunatomic_ops library is used and uses ATOMIC_OPS_LIBS in bdw-gc.pc.in. 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun* bdw-gc.pc.in (Libs): Add @ATOMIC_OPS_LIBS@. 18*4882a593Smuzhiyun* configure.ac [$with_libatomic_ops!=no && $with_libatomic_ops!=none 19*4882a593Smuzhiyun&& $THREADS!=none] (ATOMIC_OPS_LIBS): Set to -latomic_ops; do AC_SUBST. 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunFix is cherry-picked from bdwgc upstream 22*4882a593Smuzhiyun 23*4882a593SmuzhiyunLink to original commit https://github.com/ivmai/bdwgc/commit/02a44ee1df8176c72e75fd706d1a8f063d3196d5?branch=02a44ee1df8176c72e75fd706d1a8f063d3196d5&diff=unified 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunSigned-off-by: Illia Bitkov <illia.bitkov@mind.be> 26*4882a593Smuzhiyun 27*4882a593Smuzhiyundiff --git a/external/bdwgc/bdw-gc.pc.in b/external/bdwgc/bdw-gc.pc.in 28*4882a593Smuzhiyunindex ef4c2341..a32e7598 100644 29*4882a593Smuzhiyun--- a/external/bdwgc/bdw-gc.pc.in 30*4882a593Smuzhiyun+++ b/external/bdwgc/bdw-gc.pc.in 31*4882a593Smuzhiyun@@ -6,5 +6,5 @@ includedir=@includedir@ 32*4882a593Smuzhiyun Name: Boehm-Demers-Weiser Conservative Garbage Collector 33*4882a593Smuzhiyun Description: A garbage collector for C and C++ 34*4882a593Smuzhiyun Version: @PACKAGE_VERSION@ 35*4882a593Smuzhiyun-Libs: -L${libdir} -lgc 36*4882a593Smuzhiyun+Libs: -L${libdir} @ATOMIC_OPS_LIBS@ -lgc 37*4882a593Smuzhiyun Cflags: -I${includedir} 38*4882a593Smuzhiyundiff --git a/external/bdwgc/configure.ac b/external/bdwgc/configure.ac 39*4882a593Smuzhiyunindex 21abe8fa..9ffe81de 100644 40*4882a593Smuzhiyun--- a/external/bdwgc/configure.ac 41*4882a593Smuzhiyun+++ b/external/bdwgc/configure.ac 42*4882a593Smuzhiyun@@ -1081,7 +1081,9 @@ AS_IF([test x"$with_libatomic_ops" = xno \ 43*4882a593Smuzhiyun AC_MSG_CHECKING([which libatomic_ops to use]) 44*4882a593Smuzhiyun AS_IF([test x"$with_libatomic_ops" != xno], 45*4882a593Smuzhiyun [ AS_IF([test x"$with_libatomic_ops" != xnone -a x"$THREADS" != xnone], 46*4882a593Smuzhiyun- [ AC_MSG_RESULT([external]) ], 47*4882a593Smuzhiyun+ [ AC_MSG_RESULT([external]) 48*4882a593Smuzhiyun+ ATOMIC_OPS_LIBS="-latomic_ops" 49*4882a593Smuzhiyun+ AC_SUBST([ATOMIC_OPS_LIBS]) ], 50*4882a593Smuzhiyun [ AC_MSG_RESULT([none]) 51*4882a593Smuzhiyun AS_IF([test x"$THREADS" != xnone], 52*4882a593Smuzhiyun [ AC_DEFINE([GC_BUILTIN_ATOMIC], [1], 53