Revision: 1919 http://trac.macosforge.org/projects/ruby/changeset/1919 Author: pthomson@apple.com Date: 2009-06-23 13:22:25 -0700 (Tue, 23 Jun 2009) Log Message: ----------- Courtesy of Jordan Breeding, a patch to build with Clang and llvm-gcc. To do so, build with 'rake use_clang=true miniruby'. Modified Paths: -------------- MacRuby/branches/experimental/rakelib/builder.rb MacRuby/branches/experimental/signal.c MacRuby/branches/experimental/variable.c Modified: MacRuby/branches/experimental/rakelib/builder.rb =================================================================== --- MacRuby/branches/experimental/rakelib/builder.rb 2009-06-23 04:22:48 UTC (rev 1918) +++ MacRuby/branches/experimental/rakelib/builder.rb 2009-06-23 20:22:25 UTC (rev 1919) @@ -19,6 +19,7 @@ end end +USE_CLANG = do_option('use_clang', false) RUBY_INSTALL_NAME = do_option('ruby_install_name', 'macruby') RUBY_SO_NAME = do_option('ruby_so_name', RUBY_INSTALL_NAME) ARCHS = @@ -84,7 +85,14 @@ INSTALL_NAME = File.join(FRAMEWORK_USR_LIB, 'lib' + RUBY_SO_NAME + '.dylib') ARCHFLAGS = ARCHS.map { |a| '-arch ' + a }.join(' ') LLVM_MODULES = "core jit nativecodegen interpreter bitwriter" -CFLAGS = "-I. -I./include -I./onig -I/usr/include/libxml2 #{ARCHFLAGS} -fno-common -pipe -O3 -g -Wall -fexceptions" +if (USE_CLANG) and (`sw_vers -productVersion`.strip >= '10.6') + CC = '/usr/bin/clang' + CPP = '/usr/bin/llvm-g++-4.2' +elsif + CC = '/usr/bin/gcc' + CPP = '/usr/bin/g++' +end +CFLAGS = "-I. -I./include -I./onig -I./giants/libDGiants -I/usr/include/libxml2 #{ARCHFLAGS} -fno-common -pipe -O3 -g -Wall -fexceptions" CFLAGS << " -Wno-parentheses -Wno-deprecated-declarations -Werror" if NO_WARN_BUILD OBJC_CFLAGS = CFLAGS + " -fobjc-gc-only" CXXFLAGS = `#{LLVM_CONFIG} --cxxflags #{LLVM_MODULES}`.strip @@ -130,9 +138,9 @@ s = obj_source(obj) cc, flags = case File.extname(s) - when '.c' then ['/usr/bin/gcc', @cflags] - when '.cpp' then ['/usr/bin/g++', @cxxflags] - when '.m' then ['/usr/bin/gcc', @objc_cflags] + when '.c' then [CC, @cflags] + when '.cpp' then [CPP, @cxxflags] + when '.m' then [CC, @objc_cflags] end sh("#{cc} #{flags} -c #{s} -o #{obj}.o") end @@ -166,7 +174,7 @@ objs ||= @objs ldflags ||= @ldflags if should_link?(name, objs) - sh("/usr/bin/g++ #{@cflags} #{objs.map { |x| x + '.o' }.join(' ') } #{ldflags} #{args}") + sh("#{CPP} #{@cflags} #{objs.map { |x| x + '.o' }.join(' ') } #{ldflags} #{args}") end end Modified: MacRuby/branches/experimental/signal.c =================================================================== --- MacRuby/branches/experimental/signal.c 2009-06-23 04:22:48 UTC (rev 1918) +++ MacRuby/branches/experimental/signal.c 2009-06-23 20:22:25 UTC (rev 1919) @@ -416,8 +416,9 @@ int i; for (i=0; i<NSIG; i++) { - if (trap_list[i].cmd) + if (trap_list[i].cmd) { rb_gc_mark(trap_list[i].cmd); + } } #endif /* MACOS_UNUSE_SIGNAL */ } Modified: MacRuby/branches/experimental/variable.c =================================================================== --- MacRuby/branches/experimental/variable.c 2009-06-23 04:22:48 UTC (rev 1918) +++ MacRuby/branches/experimental/variable.c 2009-06-23 20:22:25 UTC (rev 1919) @@ -437,7 +437,9 @@ static void val_marker(VALUE data) { - if (data) rb_gc_mark_maybe(data); + if (data) { + rb_gc_mark_maybe(data); + } } static VALUE @@ -456,7 +458,9 @@ static void var_marker(VALUE *var) { - if (var) rb_gc_mark_maybe(*var); + if (var) { + rb_gc_mark_maybe(*var); + } } static void @@ -474,7 +478,10 @@ (*var->marker)(var->data); trace = var->trace; while (trace) { - if (trace->data) rb_gc_mark_maybe(trace->data); + if (trace->data) + { + rb_gc_mark_maybe(trace->data); + } trace = trace->next; } return ST_CONTINUE;
participants (1)
-
source_changes@macosforge.org