aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/bdw-gc.rb
blob: 1b0bbc84c8f9573704d3cf0458f6700dd865c4e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
require 'formula'

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.1.tar.gz'
  md5 '2ff9924c7249ef7f736ecfe6f08f3f9b'

  devel do
    url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha6.tar.gz'
    md5 '319d0b18cc4eb735c8038ece9df055e4'
    version '7.2alpha6'
  end

  # patch to fix inline asm errors with LLVM, present in upstream SVN
  # some directory restructuring between 7.1 and 7.2a6 force us to have two
  # versions of the same patch
  def patches
    if ARGV.build_devel?
      DATA
    else
      { :p0 => "https://trac.macports.org/export/86621/trunk/dports/devel/boehmgc/files/asm.patch" }
    end
  end

  def install
    # ucontext has been deprecated in 10.6
    # use this flag to force the header to compile
    ENV.append 'CPPFLAGS', "-D_XOPEN_SOURCE" if MacOS.snow_leopard?

    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