homebrew-core/Formula/bdw-gc.rb
nibbles 2bits 792e68bc0c bdw-gc: fix for XCode-4.3 and Clang
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>
2012-03-26 14:36:17 -05:00

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