2012-04-06 22 views
7

Trong dự án mới của tôi, tôi cần căn cứ vào một dự án bằng văn bản. Và tôi biết rằng tôi có thể sử dụng NDK để làm điều đó, nhưng đây là một câu hỏi: làm thế nào để viết lại tiêu chuẩn Makefile vào Android.mk? Và hơn nữa, trong Android, tôi có thể, bỏ qua ndk, xây dựng dự án trực tiếp bằng cách sử dụng jni để thích ứng với dự án c vào dự án android không? Và thêm ý tưởng để thích ứng với dự án c vào dự án android? cám ơn. Cuối cùng, đây là Makefile:cách viết lại Makefile thành android.mk?

# Makefile.in generated by automake 1.10.1 from Makefile.am. 
# Makefile. Generated from Makefile.in by configure. 

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. 
# This Makefile.in is free software; the Free Software Foundation 
# gives unlimited permission to copy and/or distribute it, 
# with or without modifications, as long as this notice is preserved. 

# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without 
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
# PARTICULAR PURPOSE. 




pkgdatadir = $(datadir)/fuse 
pkglibdir = $(libdir)/fuse 
pkgincludedir = $(includedir)/fuse 
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd 
install_sh_DATA = $(install_sh) -c -m 644 
install_sh_PROGRAM = $(install_sh) -c 
install_sh_SCRIPT = $(install_sh) -c 
INSTALL_HEADER = $(INSTALL_DATA) 
transform = $(program_transform_name) 
NORMAL_INSTALL = : 
PRE_INSTALL = : 
POST_INSTALL = : 
NORMAL_UNINSTALL = : 
PRE_UNINSTALL = : 
POST_UNINSTALL = : 
build_triplet = i686-pc-linux-gnu 
host_triplet = i686-pc-linux-gnu 
target_triplet = i686-pc-linux-gnu 
subdir = . 
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ 
    $(srcdir)/Makefile.in $(srcdir)/fuse.pc.in \ 
    $(top_srcdir)/configure AUTHORS COPYING COPYING.LIB ChangeLog \ 
    INSTALL NEWS compile config.guess config.rpath config.sub \ 
    depcomp install-sh ltmain.sh missing 
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ 
    $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ 
    $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ 
    $(top_srcdir)/configure.in 
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 
    $(ACLOCAL_M4) 
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ 
configure.lineno config.status.lineno 
mkinstalldirs = $(install_sh) -d 
CONFIG_HEADER = $(top_builddir)/include/config.h 
CONFIG_CLEAN_FILES = fuse.pc 
SOURCES = 
DIST_SOURCES = 
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ 
    html-recursive info-recursive install-data-recursive \ 
    install-dvi-recursive install-exec-recursive \ 
    install-html-recursive install-info-recursive \ 
    install-pdf-recursive install-ps-recursive install-recursive \ 
    installcheck-recursive installdirs-recursive pdf-recursive \ 
    ps-recursive uninstall-recursive 
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; 
am__vpath_adj = case $$p in \ 
    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ 
    *) f=$$p;; \ 
    esac; 
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; 
am__installdirs = "$(DESTDIR)$(pkgconfigdir)" 
pkgconfigDATA_INSTALL = $(INSTALL_DATA) 
DATA = $(pkgconfig_DATA) 
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ 
    distclean-recursive maintainer-clean-recursive 
ETAGS = etags 
CTAGS = ctags 
DIST_SUBDIRS = $(SUBDIRS) 
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 
distdir = $(PACKAGE)-$(VERSION) 
top_distdir = $(distdir) 
am__remove_distdir = \ 
    { test ! -d $(distdir) \ 
    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ 
     && rm -fr $(distdir); }; } 
DIST_ARCHIVES = $(distdir).tar.gz 
GZIP_ENV = --best 
distuninstallcheck_listfiles = find . -type f -print 
distcleancheck_listfiles = find . -type f -print 
ACLOCAL = ${SHELL} /home/kaiwii/fuse-2.8.1/missing --run aclocal-1.10 
AMTAR = ${SHELL} /home/kaiwii/fuse-2.8.1/missing --run tar 
AR = ar 
AUTOCONF = ${SHELL} /home/kaiwii/fuse-2.8.1/missing --run autoconf 
AUTOHEADER = ${SHELL} /home/kaiwii/fuse-2.8.1/missing --run autoheader 
AUTOMAKE = ${SHELL} /home/kaiwii/fuse-2.8.1/missing --run automake-1.10 
AWK = gawk 
CC = gcc 
CCDEPMODE = depmode=gcc3 
CFLAGS = -Wall -W -Wno-sign-compare -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -g -O2 -fno-strict-aliasing 
CPP = gcc -E 
CPPFLAGS = 
CYGPATH_W = echo 
DEFS = -DHAVE_CONFIG_H 
DEPDIR = .deps 
DSYMUTIL = 
DUMPBIN = 
ECHO_C = 
ECHO_N = -n 
ECHO_T = 
EGREP = /bin/grep -E 
EXEEXT = 
FGREP = /bin/grep -F 
GREP = /bin/grep 
INIT_D_PATH = /etc/init.d 
INSTALL = /usr/bin/install -c 
INSTALL_DATA = ${INSTALL} -m 644 
INSTALL_PROGRAM = ${INSTALL} 
INSTALL_SCRIPT = ${INSTALL} 
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s 
LD = /usr/bin/ld 
LDFLAGS = 
LIBICONV = 
LIBOBJS = 
LIBS = 
LIBTOOL = $(SHELL) $(top_builddir)/libtool 
LIPO = 
LN_S = ln -s 
LTLIBICONV = 
LTLIBOBJS = 
MAKEINFO = ${SHELL} /home/kaiwii/fuse-2.8.1/missing --run makeinfo 
MKDIR_P = /bin/mkdir -p 
MOUNT_FUSE_PATH = /sbin 
NM = /usr/bin/nm -B 
NMEDIT = 
OBJDUMP = objdump 
OBJEXT = o 
OTOOL = 
OTOOL64 = 
PACKAGE = fuse 
PACKAGE_BUGREPORT = 
PACKAGE_NAME = fuse 
PACKAGE_STRING = fuse 2.8.1 
PACKAGE_TARNAME = fuse 
PACKAGE_VERSION = 2.8.1 
PATH_SEPARATOR = : 
RANLIB = ranlib 
SED = /bin/sed 
SET_MAKE = 
SHELL = /bin/bash 
STRIP = strip 
UDEV_RULES_PATH = /etc/udev/rules.d 
VERSION = 2.8.1 
abs_builddir = /home/kaiwii/fuse-2.8.1 
abs_srcdir = /home/kaiwii/fuse-2.8.1 
abs_top_builddir = /home/kaiwii/fuse-2.8.1 
abs_top_srcdir = /home/kaiwii/fuse-2.8.1 
ac_ct_CC = gcc 
ac_ct_DUMPBIN = 
am__include = include 
am__leading_dot = . 
am__quote = 
am__tar = ${AMTAR} chof - "$$tardir" 
am__untar = ${AMTAR} xf - 
bindir = ${exec_prefix}/bin 
build = i686-pc-linux-gnu 
build_alias = 
build_cpu = i686 
build_os = linux-gnu 
build_vendor = pc 
builddir = . 
datadir = ${datarootdir} 
datarootdir = ${prefix}/share 
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} 
dvidir = ${docdir} 
exec_prefix = ${prefix} 
host = i686-pc-linux-gnu 
host_alias = 
host_cpu = i686 
host_os = linux-gnu 
host_vendor = pc 
htmldir = ${docdir} 
includedir = ${prefix}/include 
infodir = ${datarootdir}/info 
install_sh = $(SHELL) /home/kaiwii/fuse-2.8.1/install-sh 
libdir = ${exec_prefix}/lib 
libexecdir = ${exec_prefix}/libexec 
libfuse_libs = -pthread -lrt -ldl 
localedir = ${datarootdir}/locale 
localstatedir = ${prefix}/var 
lt_ECHO = echo 
mandir = ${datarootdir}/man 
mkdir_p = /bin/mkdir -p 
oldincludedir = /usr/include 
pdfdir = ${docdir} 
pkgconfigdir = ${libdir}/pkgconfig 
prefix = /usr/local 
program_transform_name = s,x,x, 
psdir = ${docdir} 
sbindir = ${exec_prefix}/sbin 
sharedstatedir = ${prefix}/com 
srcdir = . 
subdirs2 = include lib util example 
sysconfdir = ${prefix}/etc 
target = i686-pc-linux-gnu 
target_alias = 
target_cpu = i686 
target_os = linux-gnu 
target_vendor = pc 
top_build_prefix = 
top_builddir = . 
top_srcdir = . 
ACLOCAL_AMFLAGS = -I m4 
SUBDIRS = include lib util example 
EXTRA_DIST = \ 
    fuse.pc.in  \ 
    README*   \ 
    Filesystems  \ 
    FAQ   \ 
    doc/how-fuse-works \ 
    doc/kernel.txt  \ 
    doc/Doxyfile 

pkgconfig_DATA = fuse.pc 
all: all-recursive 

.SUFFIXES: 
am--refresh: 
    @: 
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) 
    @for dep in $?; do \ 
     case '$(am__configure_deps)' in \ 
     *$$dep*) \ 
      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ 
      cd $(srcdir) && $(AUTOMAKE) --gnu \ 
     && exit 0; \ 
      exit 1;; \ 
     esac; \ 
    done; \ 
    echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ 
    cd $(top_srcdir) && \ 
     $(AUTOMAKE) --gnu Makefile 
.PRECIOUS: Makefile 
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 
    @case '$?' in \ 
     *config.status*) \ 
     echo ' $(SHELL) ./config.status'; \ 
     $(SHELL) ./config.status;; \ 
     *) \ 
     echo ' cd $(top_builddir) && $(SHELL) ./config.status [email protected] $(am__depfiles_maybe)'; \ 
     cd $(top_builddir) && $(SHELL) ./config.status [email protected] $(am__depfiles_maybe);; \ 
    esac; 

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) 
    $(SHELL) ./config.status --recheck 

$(top_srcdir)/configure: $(am__configure_deps) 
    cd $(srcdir) && $(AUTOCONF) 
$(ACLOCAL_M4): $(am__aclocal_m4_deps) 
    cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) 
fuse.pc: $(top_builddir)/config.status $(srcdir)/fuse.pc.in 
    cd $(top_builddir) && $(SHELL) ./config.status [email protected] 

mostlyclean-libtool: 
    -rm -f *.lo 

clean-libtool: 
    -rm -rf .libs _libs 

distclean-libtool: 
    -rm -f libtool 
install-pkgconfigDATA: $(pkgconfig_DATA) 
    @$(NORMAL_INSTALL) 
    test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" 
    @list='$(pkgconfig_DATA)'; for p in $$list; do \ 
     if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ 
     f=$(am__strip_dir) \ 
     echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ 
     $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ 
    done 

uninstall-pkgconfigDATA: 
    @$(NORMAL_UNINSTALL) 
    @list='$(pkgconfig_DATA)'; for p in $$list; do \ 
     f=$(am__strip_dir) \ 
     echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ 
     rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ 
    done 

# This directory's subdirectories are mostly independent; you can cd 
# into them and run `make' without going through this Makefile. 
# To change the values of `make' variables: instead of editing Makefiles, 
# (1) if the variable is set in `config.status', edit `config.status' 
#  (which will cause the Makefiles to be regenerated when you run `make'); 
# (2) otherwise, pass the desired values on the `make' command line. 
$(RECURSIVE_TARGETS): 
    @failcom='exit 1'; \ 
    for f in x $$MAKEFLAGS; do \ 
     case $$f in \ 
     *=* | --[!k]*);; \ 
     *k*) failcom='fail=yes';; \ 
     esac; \ 
    done; \ 
    dot_seen=no; \ 
    target=`echo [email protected] | sed s/-recursive//`; \ 
    list='$(SUBDIRS)'; for subdir in $$list; do \ 
     echo "Making $$target in $$subdir"; \ 
     if test "$$subdir" = "."; then \ 
     dot_seen=yes; \ 
     local_target="$$target-am"; \ 
     else \ 
     local_target="$$target"; \ 
     fi; \ 
     (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ 
     || eval $$failcom; \ 
    done; \ 
    if test "$$dot_seen" = "no"; then \ 
     $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ 
    fi; test -z "$$fail" 

$(RECURSIVE_CLEAN_TARGETS): 
    @failcom='exit 1'; \ 
    for f in x $$MAKEFLAGS; do \ 
     case $$f in \ 
     *=* | --[!k]*);; \ 
     *k*) failcom='fail=yes';; \ 
     esac; \ 
    done; \ 
    dot_seen=no; \ 
    case "[email protected]" in \ 
     distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ 
     *) list='$(SUBDIRS)' ;; \ 
    esac; \ 
    rev=''; for subdir in $$list; do \ 
     if test "$$subdir" = "."; then :; else \ 
     rev="$$subdir $$rev"; \ 
     fi; \ 
    done; \ 
    rev="$$rev ."; \ 
    target=`echo [email protected] | sed s/-recursive//`; \ 
    for subdir in $$rev; do \ 
     echo "Making $$target in $$subdir"; \ 
     if test "$$subdir" = "."; then \ 
     local_target="$$target-am"; \ 
     else \ 
     local_target="$$target"; \ 
     fi; \ 
     (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ 
     || eval $$failcom; \ 
    done && test -z "$$fail" 
tags-recursive: 
    list='$(SUBDIRS)'; for subdir in $$list; do \ 
     test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ 
    done 
ctags-recursive: 
    list='$(SUBDIRS)'; for subdir in $$list; do \ 
     test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ 
    done 

ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) 
    list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 
    unique=`for i in $$list; do \ 
     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 
     done | \ 
     $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ 
      END { if (nonempty) { for (i in files) print i; }; }'`; \ 
    mkid -fID $$unique 
tags: TAGS 

TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 
     $(TAGS_FILES) $(LISP) 
    tags=; \ 
    here=`pwd`; \ 
    if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ 
     include_option=--etags-include; \ 
     empty_fix=.; \ 
    else \ 
     include_option=--include; \ 
     empty_fix=; \ 
    fi; \ 
    list='$(SUBDIRS)'; for subdir in $$list; do \ 
     if test "$$subdir" = .; then :; else \ 
     test ! -f $$subdir/TAGS || \ 
      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ 
     fi; \ 
    done; \ 
    list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 
    unique=`for i in $$list; do \ 
     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 
     done | \ 
     $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 
      END { if (nonempty) { for (i in files) print i; }; }'`; \ 
    if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ 
     test -n "$$unique" || unique=$$empty_fix; \ 
     $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ 
     $$tags $$unique; \ 
    fi 
ctags: CTAGS 
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 
     $(TAGS_FILES) $(LISP) 
    tags=; \ 
    list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ 
    unique=`for i in $$list; do \ 
     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 
     done | \ 
     $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ 
      END { if (nonempty) { for (i in files) print i; }; }'`; \ 
    test -z "$(CTAGS_ARGS)$$tags$$unique" \ 
     || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ 
     $$tags $$unique 

GTAGS: 
    here=`$(am__cd) $(top_builddir) && pwd` \ 
     && cd $(top_srcdir) \ 
     && gtags -i $(GTAGS_ARGS) $$here 

distclean-tags: 
    -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 

distdir: $(DISTFILES) 
    $(am__remove_distdir) 
    test -d $(distdir) || mkdir $(distdir) 
    @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 
    topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 
    list='$(DISTFILES)'; \ 
     dist_files=`for file in $$list; do echo $$file; done | \ 
     sed -e "s|^$$srcdirstrip/||;t" \ 
      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ 
    case $$dist_files in \ 
     */*) $(MKDIR_P) `echo "$$dist_files" | \ 
       sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ 
       sort -u` ;; \ 
    esac; \ 
    for file in $$dist_files; do \ 
     if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ 
     if test -d $$d/$$file; then \ 
     dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ 
     if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ 
      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ 
     fi; \ 
     cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ 
     else \ 
     test -f $(distdir)/$$file \ 
     || cp -p $$d/$$file $(distdir)/$$file \ 
     || exit 1; \ 
     fi; \ 
    done 
    list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ 
     if test "$$subdir" = .; then :; else \ 
     test -d "$(distdir)/$$subdir" \ 
     || $(MKDIR_P) "$(distdir)/$$subdir" \ 
     || exit 1; \ 
     distdir=`$(am__cd) $(distdir) && pwd`; \ 
     top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ 
     (cd $$subdir && \ 
      $(MAKE) $(AM_MAKEFLAGS) \ 
      top_distdir="$$top_distdir" \ 
      distdir="$$distdir/$$subdir" \ 
     am__remove_distdir=: \ 
     am__skip_length_check=: \ 
      distdir) \ 
      || exit 1; \ 
     fi; \ 
    done 
    -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ 
     ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ 
     ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ 
     ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ 
    || chmod -R a+r $(distdir) 
dist-gzip: distdir 
    tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz 
    $(am__remove_distdir) 

dist-bzip2: distdir 
    tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 
    $(am__remove_distdir) 

dist-lzma: distdir 
    tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma 
    $(am__remove_distdir) 

dist-tarZ: distdir 
    tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z 
    $(am__remove_distdir) 

dist-shar: distdir 
    shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz 
    $(am__remove_distdir) 

dist-zip: distdir 
    -rm -f $(distdir).zip 
    zip -rq $(distdir).zip $(distdir) 
    $(am__remove_distdir) 

dist dist-all: distdir 
    tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz 
    $(am__remove_distdir) 

# This target untars the dist file and tries a VPATH configuration. Then 
# it guarantees that the distribution is self-contained by making another 
# tarfile. 
distcheck: dist 
    case '$(DIST_ARCHIVES)' in \ 
    *.tar.gz*) \ 
     GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ 
    *.tar.bz2*) \ 
     bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ 
    *.tar.lzma*) \ 
     unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ 
    *.tar.Z*) \ 
     uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ 
    *.shar.gz*) \ 
     GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ 
    *.zip*) \ 
     unzip $(distdir).zip ;;\ 
    esac 
    chmod -R a-w $(distdir); chmod a+w $(distdir) 
    mkdir $(distdir)/_build 
    mkdir $(distdir)/_inst 
    chmod a-w $(distdir) 
    dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ 
     && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ 
     && cd $(distdir)/_build \ 
     && ../configure --srcdir=.. --prefix="$$dc_install_base" \ 
     $(DISTCHECK_CONFIGURE_FLAGS) \ 
     && $(MAKE) $(AM_MAKEFLAGS) \ 
     && $(MAKE) $(AM_MAKEFLAGS) dvi \ 
     && $(MAKE) $(AM_MAKEFLAGS) check \ 
     && $(MAKE) $(AM_MAKEFLAGS) install \ 
     && $(MAKE) $(AM_MAKEFLAGS) installcheck \ 
     && $(MAKE) $(AM_MAKEFLAGS) uninstall \ 
     && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ 
      distuninstallcheck \ 
     && chmod -R a-w "$$dc_install_base" \ 
     && ({ \ 
      (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ 
      && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ 
      && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ 
      && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ 
       distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ 
      } || { rm -rf "$$dc_destdir"; exit 1; }) \ 
     && rm -rf "$$dc_destdir" \ 
     && $(MAKE) $(AM_MAKEFLAGS) dist \ 
     && rm -rf $(DIST_ARCHIVES) \ 
     && $(MAKE) $(AM_MAKEFLAGS) distcleancheck 
    $(am__remove_distdir) 
    @(echo "$(distdir) archives ready for distribution: "; \ 
     list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ 
     sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' 
distuninstallcheck: 
    @cd $(distuninstallcheck_dir) \ 
    && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ 
     || { echo "ERROR: files left after uninstall:" ; \ 
      if test -n "$(DESTDIR)"; then \ 
       echo " (check DESTDIR support)"; \ 
      fi ; \ 
      $(distuninstallcheck_listfiles) ; \ 
      exit 1; } >&2 
distcleancheck: distclean 
    @if test '$(srcdir)' = . ; then \ 
     echo "ERROR: distcleancheck can only run from a VPATH build" ; \ 
     exit 1 ; \ 
    fi 
    @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ 
     || { echo "ERROR: files left in build directory after distclean:" ; \ 
      $(distcleancheck_listfiles) ; \ 
      exit 1; } >&2 
check-am: all-am 
check: check-recursive 
all-am: Makefile $(DATA) 
installdirs: installdirs-recursive 
installdirs-am: 
    for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ 
     test -z "$$dir" || $(MKDIR_P) "$$dir"; \ 
    done 
install: install-recursive 
install-exec: install-exec-recursive 
install-data: install-data-recursive 
uninstall: uninstall-recursive 

install-am: all-am 
    @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am 

installcheck: installcheck-recursive 
install-strip: 
    $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ 
     install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ 
     `test -z '$(STRIP)' || \ 
     echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install 
mostlyclean-generic: 

clean-generic: 

distclean-generic: 
    -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 

maintainer-clean-generic: 
    @echo "This command is intended for maintainers to use" 
    @echo "it deletes files that may require special tools to rebuild." 
clean: clean-recursive 

clean-am: clean-generic clean-libtool mostlyclean-am 

distclean: distclean-recursive 
    -rm -f $(am__CONFIG_DISTCLEAN_FILES) 
    -rm -f Makefile 
distclean-am: clean-am distclean-generic distclean-libtool \ 
    distclean-tags 

dvi: dvi-recursive 

dvi-am: 

html: html-recursive 

info: info-recursive 

info-am: 

install-data-am: install-pkgconfigDATA 

install-dvi: install-dvi-recursive 

install-exec-am: 

install-html: install-html-recursive 

install-info: install-info-recursive 

install-man: 

install-pdf: install-pdf-recursive 

install-ps: install-ps-recursive 

installcheck-am: 

maintainer-clean: maintainer-clean-recursive 
    -rm -f $(am__CONFIG_DISTCLEAN_FILES) 
    -rm -rf $(top_srcdir)/autom4te.cache 
    -rm -f Makefile 
maintainer-clean-am: distclean-am maintainer-clean-generic 

mostlyclean: mostlyclean-recursive 

mostlyclean-am: mostlyclean-generic mostlyclean-libtool 

pdf: pdf-recursive 

pdf-am: 

ps: ps-recursive 

ps-am: 

uninstall-am: uninstall-pkgconfigDATA 

.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ 
    install-strip 

.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ 
    all all-am am--refresh check check-am clean clean-generic \ 
    clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ 
    dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ 
    distclean distclean-generic distclean-libtool distclean-tags \ 
    distcleancheck distdir distuninstallcheck dvi dvi-am html \ 
    html-am info info-am install install-am install-data \ 
    install-data-am install-dvi install-dvi-am install-exec \ 
    install-exec-am install-html install-html-am install-info \ 
    install-info-am install-man install-pdf install-pdf-am \ 
    install-pkgconfigDATA install-ps install-ps-am install-strip \ 
    installcheck installcheck-am installdirs installdirs-am \ 
    maintainer-clean maintainer-clean-generic mostlyclean \ 
    mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ 
    tags tags-recursive uninstall uninstall-am \ 
    uninstall-pkgconfigDATA 


$(pkgconfig_DATA): config.status 
# Tell versions [3.59,3.63) of GNU make to not export all variables. 
# Otherwise a system limit (for SysV at least) may be exceeded. 
.NOEXPORT: 

Trả lời

2

Bạn đang đi đúng hướng. Tệp Android.mk tương đương với Makefile.ac trong thế giới autotools. Vì vậy, bắt đầu với việc chuyển đổi Makefile.ac, chứ không phải là Makefile.

Tuy nhiên, một vấn đề bạn sẽ gặp phải là không có bất kỳ tương đương nào cho tập lệnh định cấu hình trong NDK. Điều này có nghĩa là không có phương pháp tự động nào để tạo config.h thường được tìm thấy trong các dự án sử dụng các autotools.

Giải pháp nhanh chóng và nhanh chóng là chạy ./configure với các tùy chọn thích hợp để tạo config.h đúng, chuyển Makefile.am sang Android.mk rồi xây dựng bằng NDK.

Các tùy chọn tôi sử dụng đang sử dụng ndk r7c (tôi xây dựng chống API_8 đó là 2.2):

./configure \ 
--host=arm-linux-androideabi \ 
CC=arm-linux-androideabi-gcc \ 
LD=arm-linux-androideabi-ld \ 
CPPFLAGS="-I/home/sdk/ndk/platforms/android-8/arch-arm/usr/include/" \ 
CFLAGS="-nostdlib" \ 
LDFLAGS="-Wl,-rpath-link=/home/sdk/ndk/platforms/android-8/arch-arm/usr/lib/ -L/home/sdk/ndk/platforms/android-8/arch-arm/usr/lib/" \ 
LIBS="-lc" 

Một ví dụ về những gì tôi đã làm (tập tin (1) và libmagic) có thể được tải về từ http://forum.xda-developers.com/showthread.php?t=1612760

1

Có thể bạn không cần phải chuyển đổi Makefile hoặc Makefile.ac thành Android.mk. Bạn cũng có thể sử dụng chuỗi công cụ NDK của Android một cách độc lập như được nêu chi tiết trong tài liệu NDK của Android ($ {NDK_INSTALL_DIR} /doc/STANDALONE-TOOLCHAIN.html). Bạn sẽ cần phải xác định -sysroot lựa chọn cho cross biên dịch gcc khi chạy ./configure, một cái gì đó giống như có lẽ đây:

./configure --host=xxx CC="xxx-gcc" \ 
CFLAGS="-sysroot ${NDK_INSTALL_DIR}/platforms/android-<level>/arch-<arch>/" \ 
CPPFLAGS="-sysroot ..." ... 

Bạn có thể làm cho nó thậm chí còn dễ dàng hơn bằng cách xây dựng chuỗi công cụ chuyên dụng loại bỏ sự cần thiết phải cung cấp -sysroot tùy chọn (điều này cũng trình bày chi tiết trong tệp tài liệu NDK ở trên).

câu hỏi liên quan:

  • trả lời để Tool to generate an Android.mk nói rằng bạn có thể sử dụng để xây dựng cmake Android.mk file - Tôi đã không cố gắng và không có ý tưởng về phương pháp này.
  • Android.mk for LibXtract (bao gồm câu trả lời của tôi với một số chi tiết hơn được đưa ra ở đây về cách sử dụng chuỗi công cụ độc lập).
Các vấn đề liên quan