NDK 使う練習
ってコトで libgauche をナニ。
とりあえず
Gauche-0.9 配下で configure してみる。Makefile 無いとアレなので。
$ ./configure (中略 This Gauche has been configured with the following parameters: version: 0.9 multibyte: utf8 slib: /usr/local/slib thread: pthreads optional modules: zlib $
Makefile ができたので src 配下のソレを確認。このあたり?
libgauche.$(SOEXT) : $(libgauche_OBJECTS) $(GCLIB) $(LINK) $(libgauche_LDFLAGS) libgauche.$(SOEXT) $(libgauche_OBJECTS) ../gc/.libs/*.o $(LIBS) $(POSTBUILD)
libgauche_OBJECTS は以下な模様。
libgauche_OBJECTS = \ core.$(OBJEXT) vm.$(OBJEXT) compaux.$(OBJEXT) macro.$(OBJEXT) \ code.$(OBJEXT) error.$(OBJEXT) class.$(OBJEXT) prof.$(OBJEXT) \ collection.$(OBJEXT) \ boolean.$(OBJEXT) char.$(OBJEXT) string.$(OBJEXT) list.$(OBJEXT) \ hash.$(OBJEXT) treemap.$(OBJEXT) bits.$(OBJEXT) \ port.$(OBJEXT) write.$(OBJEXT) read.$(OBJEXT) \ vector.$(OBJEXT) weak.$(OBJEXT) symbol.$(OBJEXT) keyword.$(OBJEXT) \ gloc.$(OBJEXT) compare.$(OBJEXT) regexp.$(OBJEXT) signal.$(OBJEXT) \ parameter.$(OBJEXT) module.$(OBJEXT) proc.$(OBJEXT) \ number.$(OBJEXT) bignum.$(OBJEXT) load.$(OBJEXT) paths.$(OBJEXT) \ promise.$(OBJEXT) repl.$(OBJEXT) autoloads.$(OBJEXT) \ system.$(OBJEXT) stdlib.$(OBJEXT) extlib.$(OBJEXT) exclib.$(OBJEXT) \ syslib.$(OBJEXT) intlib.$(OBJEXT) compile.$(OBJEXT) \ scmlib.$(OBJEXT) objlib.$(OBJEXT)
GCLIB は以下か。
GCLIB = ../gc/libgc.la
ええと gc/Makefile のナニは以下か。
libgc.la: $(libgc_la_OBJECTS) $(libgc_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgc_la_LDFLAGS) $(libgc_la_OBJECTS) $(libgc_la_LIBADD) $(LIBS)
依存してる変数を確認。
am_libgc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo checksums.lo \ dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \ headers.lo malloc.lo mallocx.lo mark.lo mark_rts.lo misc.lo \ new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo ptr_chck.lo \ real_malloc.lo reclaim.lo specific.lo stubborn.lo typd_mlc.lo \ backgraph.lo thread_local_alloc.lo $(am__objects_1) \ $(am__objects_2) $(am__objects_3) nodist_libgc_la_OBJECTS = ./atomic_ops.lo #nodist_libgc_la_OBJECTS = \ # ./atomic_ops_sysdeps.lo libgc_la_OBJECTS = $(am_libgc_la_OBJECTS) $(nodist_libgc_la_OBJECTS)
あるいは libgc_la_DEPENDENCIES は以下?
libgc_la_DEPENDENCIES = mach_dep.lo
むむ。.lo って何だば、って言いつつ以下を発見。gc/Makefile の中ッス。
.c.lo: # depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ # if $(LTCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ # then mv -f "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi source='$<' object='$@' libtool=yes \ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ $(LTCOMPILE) -c -o $@ $<
LTCOMPILE は libtool か。むむ、libtool 苦手だなぁ。とりあえず必要なソースは列挙可能な状態になっているのかどうか。
SOURCES_DEST
以下なナニを発見。
am__libgc_la_SOURCES_DIST = allchblk.c alloc.c blacklst.c checksums.c \ dbg_mlc.c dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c \ headers.c malloc.c mallocx.c mark.c mark_rts.c misc.c \ new_hblk.c obj_map.c os_dep.c pcr_interface.c ptr_chck.c \ real_malloc.c reclaim.c specific.c stubborn.c typd_mlc.c \ backgraph.c thread_local_alloc.c pthread_support.c \ pthread_stop_world.c darwin_stop_world.c win32_threads.c am__objects_1 = pthread_support.lo \ pthread_stop_world.lo #am__objects_2 = darwin_stop_world.lo #am__objects_3 = win32_threads.lo
とりあえず次の日になったみたいなので上記をもとにまたあした。