792e68bc0c
On their github site, the devs fix the compile error with Clang in the master of the release branch. Put that patch inline. Fixes compile error with Clang, Lion, XCode-4.3.2. Passes make check. Closes Homebrew/homebrew#11206. Closes Homebrew/homebrew#10453. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
91 lines
3.6 KiB
Ruby
91 lines
3.6 KiB
Ruby
require 'formula'
|
|
|
|
# Upstream recommends using 7.2alpha6 over 7.1
|
|
class BdwGc < Formula
|
|
homepage 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/'
|
|
url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha6.tar.gz'
|
|
md5 '319d0b18cc4eb735c8038ece9df055e4'
|
|
version '7.2alpha6'
|
|
|
|
# fix inline ASM issues with LLVM and Makefile double-install
|
|
# both fixes already upstream
|
|
# Third patch is upstream, https://github.com/ivmai/bdwgc/commit/c285b29
|
|
# and fixes compile with Clang when XCode-4.3. Remove at gc-7.2alpha7.
|
|
def patches
|
|
DATA
|
|
end
|
|
|
|
def install
|
|
system "./configure", "--disable-debug",
|
|
"--disable-dependency-tracking",
|
|
"--prefix=#{prefix}",
|
|
"--enable-cplusplus"
|
|
system "make"
|
|
system "make check"
|
|
system "make install"
|
|
end
|
|
end
|
|
|
|
__END__
|
|
diff --git a/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h b/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h
|
|
index 5e6d7fa..c0845ba 100644
|
|
--- a/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h
|
|
+++ b/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h
|
|
@@ -113,7 +113,7 @@ AO_test_and_set_full(volatile AO_TS_t *addr)
|
|
/* Note: the "xchg" instruction does not need a "lock" prefix */
|
|
__asm__ __volatile__("xchgb %0, %1"
|
|
: "=q"(oldval), "=m"(*addr)
|
|
- : "0"(0xff), "m"(*addr) : "memory");
|
|
+ : "0"((unsigned char)0xff), "m"(*addr) : "memory");
|
|
return (AO_TS_VAL_t)oldval;
|
|
}
|
|
#define AO_HAVE_test_and_set_full
|
|
diff --git a/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h b/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h
|
|
index 0f68c1e..b3b57f9 100644
|
|
--- a/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h
|
|
+++ b/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86_64.h
|
|
@@ -110,7 +110,7 @@ AO_test_and_set_full(volatile AO_TS_t *addr)
|
|
/* Note: the "xchg" instruction does not need a "lock" prefix */
|
|
__asm__ __volatile__("xchgb %0, %1"
|
|
: "=q"(oldval), "=m"(*addr)
|
|
- : "0"(0xff), "m"(*addr) : "memory");
|
|
+ : "0"((unsigned char)0xff), "m"(*addr) : "memory");
|
|
return (AO_TS_VAL_t)oldval;
|
|
}
|
|
#define AO_HAVE_test_and_set_full
|
|
|
|
diff --git a/Makefile.in b/Makefile.in
|
|
index 09dea13..1f4356e 100644
|
|
--- a/Makefile.in
|
|
+++ b/Makefile.in
|
|
@@ -108,7 +108,6 @@ check_PROGRAMS = gctest$(EXEEXT) leaktest$(EXEEXT) middletest$(EXEEXT) \
|
|
# C++ Interface
|
|
# -------------
|
|
@CPLUSPLUS_TRUE@am__append_5 = libgccpp.la
|
|
-@CPLUSPLUS_TRUE@am__append_6 = include/gc_cpp.h include/gc_allocator.h
|
|
DIST_COMMON = $(am__configure_deps) $(am__pkginclude_HEADERS_DIST) \
|
|
$(dist_noinst_HEADERS) $(dist_noinst_SCRIPTS) \
|
|
$(dist_pkgdata_DATA) $(include_HEADERS) $(srcdir)/Makefile.am \
|
|
@@ -579,7 +578,7 @@ include_HEADERS = include/extra/gc.h include/extra/gc_cpp.h
|
|
|
|
# installed headers
|
|
#
|
|
-pkginclude_HEADERS = $(am__append_6) include/gc.h include/gc_typed.h \
|
|
+pkginclude_HEADERS = include/gc.h include/gc_typed.h \
|
|
include/gc_inline.h include/gc_mark.h include/gc_cpp.h \
|
|
include/weakpointer.h include/new_gc_alloc.h \
|
|
include/gc_allocator.h include/gc_backptr.h include/gc_gcj.h \
|
|
diff --git a/misc.c b/misc.c
|
|
index 2fd4166..8db6085 100644
|
|
--- a/misc.c
|
|
+++ b/misc.c
|
|
@@ -930,7 +930,8 @@ GC_API void GC_CALL GC_init(void)
|
|
GC_STATIC_ASSERT((word)(-1) > (word)0);
|
|
/* word should be unsigned */
|
|
# endif
|
|
-# if !defined(__BORLANDC__) && !defined(__CC_ARM) /* Workaround */
|
|
+# if !defined(__BORLANDC__) && !defined(__CC_ARM) \
|
|
+ && !(defined(__clang__) && defined(X86_64)) /* Workaround */
|
|
GC_STATIC_ASSERT((ptr_t)(word)(-1) > (ptr_t)0);
|
|
/* Ptr_t comparisons should behave as unsigned comparisons. */
|
|
# endif
|