From: Kazuhiro N. <zn...@mb...> - 2007-08-29 16:05:21
|
西山和広です。 At Mon, 27 Aug 2007 12:27:25 +0900, Kouhei Sutou wrote: > > > % ruby-1.8.6 -rgtk2 -e 0 > > ruby-1.8.6: symbol lookup error: /home/kazu/opt/ruby-1.8.6/lib/ruby/site_ruby/1.8/i686-linux/glib2.so: undefined symbol: g_unicode_type_get_type > > ビルド時にglib-enum-types.cというやつを生成するのですが、 > それがリンクされていないんだと思います。 mkmf-gnome2.rbにadd_objというのがあるから使えるのかと思ったら、 $objsにsrcdirのファイルを集める処理がcreate_makefileの中にあって 役に立たなかったので、結局create_makefileの中のsrcsを集める処理を 持ってきて、builddirの方も同じように集めるようにしたら動くように なりました。 Index: glib/src/lib/mkmf-gnome2.rb =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/glib/src/lib/mkmf-gnome2.rb,v retrieving revision 1.36 diff -u -p -r1.36 mkmf-gnome2.rb --- glib/src/lib/mkmf-gnome2.rb 28 Dec 2006 19:38:02 -0000 1.36 +++ glib/src/lib/mkmf-gnome2.rb 29 Aug 2007 12:40:44 -0000 @@ -112,7 +112,9 @@ def setup_win32(target_name) end #add_depend_package("glib2", "glib/src", "/...../ruby-gnome2") -def add_depend_package(target_name, target_srcdir, topdir) +def add_depend_package(target_name, target_srcdir, topsrcdir) + [topsrcdir, $configure_args['--topdir']].each do |topdir| + topdir = File.expand_path(topdir) if RUBY_VERSION < "1.8.5" $CFLAGS = "-I#{File.join(topdir, target_srcdir)} #{$CFLAGS}" else @@ -126,6 +128,7 @@ def add_depend_package(target_name, targ $DLDFLAGS << " /libpath:#{topdir}/#{target_srcdir}" $libs << " libruby-#{target_name}.lib" end + end # end def add_distcleanfile(file) @@ -134,16 +137,23 @@ def add_distcleanfile(file) end def create_makefile_at_srcdir(pkg_name, srcdir, defs = nil) - begin - Dir.mkdir(srcdir) unless File.exist? srcdir - Dir.chdir srcdir + builddir = $configure_args['--topdir'] + srcdir[TOPDIR.size..-1] + Dir.mkdir(builddir) unless File.exist? builddir + Dir.chdir(builddir) do yield if block_given? $defs << defs if defs + + $objs = [] + srcs = Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")] + srcs |= Dir[File.join(".", "*.{#{SRC_EXT.join(%q{,})}}")] + for f in srcs + obj = File.basename(f, ".*") << ".o" + $objs.push(obj) unless $objs.index(obj) + end + create_makefile(pkg_name, srcdir) - ensure - Dir.chdir('..') end end @@ -197,6 +207,7 @@ def make_version_header(app_name, pkgnam add_distcleanfile(filename) + Dir.mkdir(dir) unless File.exist? dir out = File.open(File.join(dir, filename), "w") out.print %Q[/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */ -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) |